Ana içeriğe geç

Operasyon

Sağlık, metrikler, yeniden denemeler, zaman damgası ve olay müdahalesi için işletim kılavuzu.

CI/CD

Çekme istekleri restore, derleme, test, web lint ve zafiyet denetimlerini çalıştırır (.github/workflows/ci.yml). main’e push üç GHCR imajı da yayınlar:

ghcr.io/serhatboyraz/opensignature/api:latest
ghcr.io/serhatboyraz/opensignature/worker:latest
ghcr.io/serhatboyraz/opensignature/web:latest

Her imaj sha-<kısa-sha> ile de etiketlenir. Sırları veya PFX dosyalarını imaja gömmeyin. GHCR paketleri ilk yayında özeldir; anonim çekim için görünürlüğü Public yapın.

Sağlık

/health/live
/health/ready

Hazırlık, yapılandırılmış bağımlılıkları (PostgreSQL, RabbitMQ, depolama) içermelidir.

İzlenecek metrikler

  • İstek / tamamlanma / hata oranları
  • Kuyruk derinliği ve bekleme süresi
  • İşleme süresi
  • Sağlayıcı ve depolama hataları
  • Yeniden deneme sayısı ve DLQ derinliği

Yerel yığın

Tam yığın:

cp .env.example .env
docker compose up -d --build
docker compose ps
Servis URL
Web http://localhost:5173
API http://localhost:5270/health
RabbitMQ UI http://localhost:15672

Yalnızca altyapı: docker compose up -d postgres rabbitmq.

Sırlar: PFX_PASSWORD, isteğe bağlı TIMESTAMPING_*OPENSIGNATURE_SECRET_* (mühendislik operasyon kaynağına bakın).

Tam operasyon notları: mühendislik operasyon kaynağı.

İşçi yeniden deneme varsayılanları

Ayar Tipik varsayılan
MaxAttempts 5
İlk geri çekilme 1s
Çarpan 2
Maks. geri çekilme 60s
Kilit süresi 15 dakika

Kalıcı hatalar sonsuz yeniden deneme olmadan esign.signature.dlq kuyruğuna gider.

flowchart TD
  F[İmza hatası] --> C{Sınıflandırıcı}
  C -->|Geçici| R[Geri çekilerek yeniden yayın]
  R --> M{MaxAttempts?}
  M -->|Hayır| W[İşçi yeniden deneme]
  M -->|Evet| DLQ[DLQ]
  C -->|Kalıcı| DLQ

Zaman damgası (RFC 3161)

T/LT/LTA bir TSA gerektirir. İşçide yapılandırın:

"Timestamping": {
  "Url": "https://tsa.example.invalid/",
  "PolicyOid": "",
  "Username": "",
  "PasswordSecretName": "Timestamping:Password"
}

Eksik TSA → TIMESTAMP_AUTHORITY_UNAVAILABLE (B’ye sessiz düşüş yok).
HTTP Basic Auth: Username doldurun; parolayı user secrets / PasswordSecretName ile verin. Anonim TSA için Username boş kalsın.

Olay kontrol listesi

  1. Correlation / signature / job kimliği
  2. Sağlayıcı sağlığı
  3. esign.signature.worker ve DLQ
  4. input.bin / signed.bin varlığı
  5. Makine okunabilir hata kodu
  6. Yalnızca geçici hatalarda yeniden deneme

USB token (Development)

Satıcı PKCS#11 ara yazılımı kuruluysa Development otomatik algılama yapabilir (Signing:SmartCard:AutoDetect). Süresi dolmuş sertifikalar yalnızca Signing:AllowExpiredCertificates=true iken imzalayabilir — üretimde false tutun.

Tam operasyon notları: mühendislik operasyon kaynağı.