Damga sunucusunu kurmak
Damga sunucusu PHP 8.1+ ve MySQL/MariaDB ile paylaşımlı barındırmada çalışır; komut satırı gerekmez. Ondiso'nun işlettiği hizmet https://damga.ondiso.net'dir. Kurumunuz kendi Damga'sını kurmak isterse bu sayfa yeterlidir.
Gereksinimler
- PHP 8.1 veya üstü; eklentiler:
openssl,pdo_mysql,mbstring,json - MySQL 5.7+ / MariaDB 10.3+
- HTTPS (PIN şifrelemesi tarayıcıda yalnız güvenli bağlantıda çalışır)
post_max_size≥ 16M (10 MB'lık PDF base64 ile ~14 MB olur)- Uzun istekleri kesmeyen bir sunucu (araç komut beklerken bağlantıyı 20 sn açık tutar; kesiliyorsa
signing.long_poll_seconds = 0)
Dosyalar
damga/ ← web'den erişilemeyen klasör (ör. /home/HESAP/damga)
config.php ← ayarlar
bootstrap.php src/ views/ content/ migrations/ vendor/
storage/ ← belgeler (yazılabilir olmalı)
downloads/ ← masaüstü uygulamasının kurulum dosyaları (siz koyarsınız)
public_html/ ← alan adının kökü: damga/public/ içeriği buraya
index.php .htaccess assets/
public_html/index.php içindeki $appDir satırını uygulama klasörünü gösterecek şekilde düzenleyin.
Adımlar
- Veritabanı ve kullanıcı oluşturun;
migrations/altındaki dosyaları (001_init.sql,002_members.sql, …) sırayla phpMyAdmin ile içe aktarın (ya daphp bin/damga migrate). config.example.php'yiconfig.phpolarak kopyalayıp doldurun:app.url,db,admin.password_hash,cron.token,mail,downloads.- Yönetici parolasının özetini üretin:
php bin/damga admin:password 'parola'— ya da herhangi bir PHP ortamındapassword_hash(). https://alanadiniz/yonetimadresinden girip platform ekleyin; API anahtarını platform sahibine iletin.- Zamanlanmış görev:
https://alanadiniz/cron/<cron.token>adresini dakikada bir çağırın (süresi dolan istekler, bildirim tekrarları, eski belgelerin silinmesi, kurum planlarının aylık kredileri ve bitiş hatırlatmaları, süresinde ödenmeyen havale siparişlerinin iptali). Cron yoksa bu işler API istekleri sırasında dakikada bir kendiliğinden çalışır; plan kredileri ve hatırlatmalar için cron önerilir. - Kamu SM ve kullandığınız diğer ESHS'lerin kök / ara sertifikalarını PEM olarak bir dosyada toplayıp
signing.ca_bundleile gösterin: canlı platformlarda sertifika zinciri de doğrulanır. - Zaman damgası (isteğe bağlı ama önerilir):
tsa.*ayarlarıyla bir RFC 3161 zaman damgası sunucusu tanımlayın (aşağıda). Tanımlanmazsa imzalar zaman damgasız (B-B) atılır ve panel bunu belge sayfasında belirtir. - Ödeme: PayTR mağaza bilgilerini ve havale hesabını
config.php'ye yazın; PayTR Mağaza Paneli'nde Bildirim URL olarakhttps://alanadiniz/odeme/paytr/bildirimadresini girin. Ayrıntı: Ödeme ve faturalama.
Zaman damgası
Zaman damgalı (T) ve uzun süreli doğrulanabilir (PAdES-B-LT / B-LTA) imzalar için bir RFC 3161 zaman damgası sunucusu (TSA) gerekir. Kimlik bilgileri yalnız config.php'de durur; kullanıcıların Damga uygulaması damgayı sunucudan ister.
'tsa' => [
'driver' => 'rfc3161', // none (varsayılan) | rfc3161 | kamusm (uygulanmadı)
'url' => 'https://zd.ornek-tsa.com.tr/tsa',
'user' => '…', // isteğe bağlı HTTP Basic kimlik bilgileri
'password' => '…',
'policy' => '', // isteğe bağlı politika OID'i
'timeout' => 10,
'nonce' => true,
'ca_bundle' => '/home/HESAP/damga/tsa-kokler.pem', // TSA kök / ara sertifikaları: verilirse TSA zinciri doğrulanır
],
'credits' => ['costs' => ['timestamp' => 0]], // zaman damgası başına kredi (T, LT: 1; LTA: 2 damga)
- İstek: SHA-256 özet, nonce,
certReq(TSA sertifikası belirtece eklenir); yanıt denetimi: durum, özet, nonce, politika, TSA imzası ve "Time Stamping" kullanımı. - Kamu SM: Kamu SM'nin zaman damgası hizmeti RFC 3161 tabanlıdır, ancak abone kimliği isteğe standart HTTP Basic yerine Kamu SM'ye özgü bir
identitybaşlığıyla (müşteri numarası ve paroladan türetilen şifreli değer) eklenir. Bu başlığın biçimi Kamu SM'nin ESYA istemci kütüphanesinde tanımlıdır ve abonelik sözleşmesiyle paylaşılır; doğrulayabildiğimiz açık bir belirtimi olmadığındankamusmsürücüsü uygulanmadı (seçilirse zaman damgalı istekler açıklamalı bir hatayla reddedilir). Kamu SM ile çalışmak için ya ESYA istemcisinin belgeleri edinilip sürücü tamamlanmalı ya da sağlayıcınızın standart RFC 3161 (HTTP Basic) uç noktasırfc3161ile kullanılmalıdır. - Uzun süreli doğrulama (LT): sunucu, sertifikalardaki OCSP (AIA) ve CRL dağıtım noktası adreslerine (çoğunlukla
http://) çıkabilmelidir. Yanıtlarstorage/cache/revocation/altında geçerlilik süreleri boyunca önbelleğe alınır. Zaman aşımı:revocation.timeout(sn). - Ayarı denemek için bir test platformuyla
level: "T"istek açıp imzalayın; damga alınamazsa kullanıcı imza sayfasında TSA'nın hata iletisini görür, sunucu günlüğüne[damga] zaman damgası alınamadı …satırı düşer.
Kurulum dosyaları ve üyelik
Masaüstü uygulamasının doğrudan indirme adresi yoktur. Paketler web'den erişilemeyen bir klasörde durur; yalnız e-postasını doğrulamış üyeler indirir. İndirme düğmesi indirmeyi kaydeder ve üyeyi birkaç dakika geçerli, yalnız onun oturumunda açılan imzalı bir adrese (/dosya/…, HMAC-SHA256) yönlendirir. Dosyanın sunucudaki yolu hiçbir yerde görünmez. Üyelik ayrıntıları: Üyelik ve kişisel veriler.
- Paketleri
storage/downloads/klasörüne yükleyin (FTP ya da dosya yöneticisiyle). Başka bir klasör kullanacaksanızdownloads.pathile gösterin; klasörpublic_htmldışında olmalı. config.php'de her platformun dosya adını yazın ve sürümü güncelleyin:
'downloads' => [
'version' => '3.0.0',
'windows' => ['file' => 'Ondiso Damga-3.0.0.msi'],
'macos' => ['file' => 'Ondiso Damga-3.0.0.dmg'],
'linux_deb' => ['file' => 'damga_3.0.0_amd64.deb'],
'linux_rpm' => ['file' => 'damga-3.0.0-1.x86_64.rpm'],
],
Dosya adı boş olan ya da klasörde bulunmayan platform sitede "yakında" görünür. Yeni sürümde dosyayı yükleyip adını ve version değerini değiştirmeniz yeterli. İmzalı bağlantının süresi downloads.link_ttl (varsayılan 300 sn). Bağlantıları imzalayan anahtar app.secret; boşsa storage/.app-key dosyasında kendiliğinden üretilir (bu dosyayı silmek yalnız o an açık bağlantıları geçersiz kılar).
E-posta
Üyelik doğrulama ve parola sıfırlama e-postaları mail ayarıyla gönderilir:
'mail' => [
'driver' => 'smtp', // smtp | mail | log
'from' => 'damga@alanadiniz',
'from_name' => 'Damga',
'host' => 'mail.alanadiniz',
'port' => 587,
'encryption' => 'tls', // tls (STARTTLS, 587) | ssl (465) | ''
'user' => 'damga@alanadiniz',
'password' => '…',
],
smtp: barındırma firmanızın e-posta hesabıyla gönderir (önerilen; SPF/DKIM'e uygun olur). Kimlik doğrulama AUTH LOGIN; sertifika doğrulanır.mail: PHP'ninmail()işlevi; sunucunun postacısı yapılandırılmışsa ek ayar gerekmez.log: e-posta gönderilmez,storage/mail/altına.emldosyası olarak yazılır (geliştirme ve deneme için).
from adresi gönderen sunucuya yetkili bir alan adından olmalı; yoksa e-postalar gereksiz klasörüne düşer.
Üyeleri /yonetim/uyeler sayfasından görebilir, arayabilir, gerekirse kapatabilirsiniz (kapatılan üye giriş yapamaz, indiremez).
Kullanıcıların uygulaması
Kullanıcılarınız Ondiso'nun dağıttığı Damga uygulamasını kullanabilir. İlk bağlantıda uygulama sizin adresinizi gösterip bir kez sorar; toplu dağıtımda trusted.sites satırına adresinizi ekleyin (Damga uygulaması).
Güncelleme
Dosyaları değiştirin (config.php ve storage/ hariç; storage/downloads/ içindeki paketler de yerinde kalır), ardından php bin/damga migrate çalıştırın ya da migrations/ altındaki yeni dosyaları sırayla içe aktarın (005 ödeme, 006 kurum hesapları, 007 e-posta mühürleme, 008 resmi fatura, 009 XAdES, 010 zaman damgası). Havale dekontları ve faturalar storage/billing/, kurum logoları storage/organizations/ altında durur; yedeğe dahil edin. Her güncellemenin notları deponun CHANGELOG'unda.