DamgaOndiso

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

  1. 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 da php bin/damga migrate).
  2. config.example.php'yi config.php olarak kopyalayıp doldurun: app.url, db, admin.password_hash, cron.token, mail, downloads.
  3. Yönetici parolasının özetini üretin: php bin/damga admin:password 'parola' — ya da herhangi bir PHP ortamında password_hash().
  4. https://alanadiniz/yonetim adresinden girip platform ekleyin; API anahtarını platform sahibine iletin.
  5. 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.
  6. Kamu SM ve kullandığınız diğer ESHS'lerin kök / ara sertifikalarını PEM olarak bir dosyada toplayıp signing.ca_bundle ile gösterin: canlı platformlarda sertifika zinciri de doğrulanır.
  7. 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.
  8. Ödeme: PayTR mağaza bilgilerini ve havale hesabını config.php'ye yazın; PayTR Mağaza Paneli'nde Bildirim URL olarak https://alanadiniz/odeme/paytr/bildirim adresini 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 identity baş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ığından kamusm sü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ı rfc3161 ile 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ıtlar storage/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.

  1. Paketleri storage/downloads/ klasörüne yükleyin (FTP ya da dosya yöneticisiyle). Başka bir klasör kullanacaksanız downloads.path ile gösterin; klasör public_html dışında olmalı.
  2. 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'nin mail() işlevi; sunucunun postacısı yapılandırılmışsa ek ayar gerekmez.
  • log: e-posta gönderilmez, storage/mail/ altına .eml dosyası 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.