Mersel DSS Verify API - Türkiye e-imza standartlarına uygun dijital imza doğrulama servisi
10K+
Türkiye e-imza standartlarına uygun dijital imza doğrulama (PAdES, XAdES, Timestamp) servisi.
Tüm detaylı dökümantasyon merkezi dökümantasyon sitesinde bulunur:
Bu API, PAdES (PDF), XAdES (XML) dijital imzaların ve zaman damgalarının doğrulanması için kapsamlı bir servis sağlar. EU DSS (Digital Signature Service) kütüphanesi üzerine inşa edilmiştir.
git clone https://github.com/mersel-dss/verify-api.git
cd verify-api
mvn clean package
java -jar target/verify-api.jar
Servis http://localhost:8086 adresinde çalışmaya başlayacaktır.
cd devops/docker
cp .env.example .env
docker-compose up -d
docker-compose logs -f verify-api
curl http://localhost:8086/api/v1/health
curl -X POST http://localhost:8086/api/v1/verify/pades \
-F "[email protected]" \
-F "level=SIMPLE"
curl -X POST http://localhost:8086/api/v1/verify/pades \
-F "[email protected]" \
-F "level=COMPREHENSIVE" \
-F "checkRevocation=true" \
-F "validateTimestamp=true"
Not:
level=SIMPLE: Sadece temel bilgiler (valid/invalid, format, signing time)level=COMPREHENSIVE: Tüm detaylar (sertifika zinciri, timestamp, validation details)- Validation parametreleri (
checkRevocation,validateTimestamp) her iki seviyede de kullanılabilir
Örnek Response (Simple):
{
"valid": true,
"status": "VALID",
"signatureType": "PADES",
"verificationTime": "2024-11-08T10:30:00Z",
"signatures": [
{
"signatureId": "id-1234",
"valid": true,
"signatureFormat": "PAdES-BASELINE-B",
"signingTime": "2024-11-07T14:20:00Z"
}
]
}
Örnek Response (Comprehensive):
{
"valid": true,
"status": "VALID",
"signatureType": "PADES",
"verificationTime": "2024-11-08T10:30:00Z",
"signatures": [
{
"signatureId": "id-1234",
"valid": true,
"signatureFormat": "PAdES-BASELINE-LT",
"signatureLevel": "PAdES-BASELINE-LT",
"signingTime": "2024-11-07T14:20:00Z",
"claimedSigningTime": "2024-11-07T14:20:00Z",
"signerCertificate": {
"subjectDN": "CN=Test User, O=Test Organization",
"issuerDN": "CN=Test CA, O=KamuSM",
"serialNumber": "5A2295753A906E",
"notBefore": "2023-01-01T00:00:00Z",
"notAfter": "2025-01-01T00:00:00Z",
"trusted": true,
"expired": false,
"revoked": false
},
"certificateChain": [...],
"timestampInfo": {
"valid": true,
"timestampTime": "2024-11-07T14:20:05Z"
}
}
],
"validationDetails": {
"signatureIntact": true,
"certificateChainValid": true,
"certificateNotExpired": true,
"certificateNotRevoked": true,
"trustAnchorReached": true,
"timestampValid": true
}
}
curl -X POST http://localhost:8086/api/v1/verify/xades \
-F "[email protected]" \
-F "level=SIMPLE"
curl -X POST http://localhost:8086/api/v1/verify/xades \
-F "[email protected]" \
-F "level=COMPREHENSIVE" \
-F "checkRevocation=true" \
-F "validateTimestamp=true"
curl -X POST http://localhost:8086/api/v1/verify/xades \
-F "[email protected]" \
-F "[email protected]" \
-F "level=COMPREHENSIVE" \
-F "checkRevocation=true"
Not:
- DSS otomatik olarak imza tipini (Enveloped, Enveloping, Detached) tespit eder
- Detached imza için
originalDocumentparametresi opsiyoneldir - DSS otomatik tespit edebilir ancak belirtilmesi daha güvenilir sonuçlar verirlevelparametresi sadece response detay seviyesini belirler- Validation özellikleri (OCSP/CRL, timestamp) bağımsız olarak kontrol edilir
curl -X POST http://localhost:8086/api/v1/verify/timestamp \
-F "[email protected]" \
-F "[email protected]" \
-F "validateCertificate=true"
Örnek Response:
{
"valid": true,
"status": "VALID",
"timestampTime": "2024-11-07T14:20:05Z",
"tsaName": "CN=KamuSM TSA",
"digestAlgorithm": "SHA-256",
"messageImprint": "ZGF0YSBoYXNo...",
"tsaCertificate": {
"subjectDN": "CN=KamuSM TSA",
"notBefore": "2023-01-01T00:00:00Z",
"notAfter": "2026-01-01T00:00:00Z"
},
"verificationTime": "2024-11-08T10:30:00Z"
}
Uygulama aşağıdaki environment variable'lar ile yapılandırılabilir:
SERVER_PORT=8086 # Sunucu portu
LOG_LEVEL=INFO # Log seviyesi (DEBUG, INFO, WARN, ERROR)
LOG_PATH=./logs # Log dosya dizini
CORS_ALLOWED_ORIGINS=* # İzin verilen origin'ler
CORS_ALLOWED_METHODS=GET,POST # İzin verilen HTTP metodları
CERTSTORE_PATH=/path/to/store.jks # Sertifika deposu yolu (zorunlu)
CERTSTORE_PASSWORD=secret # Sertifika deposu şifresi
CUSTOM_ROOT_CERT_PATH=/path/to/root.cer # Özel root sertifika (opsiyonel)
ONLINE_VALIDATION_ENABLED=true # Online OCSP/CRL kontrolü
VERIFICATION_POLICY=STRICT # STRICT veya RELAXED
CERT_CACHE_TTL=3600 # Sertifika cache süresi (saniye)
CRL_CACHE_TTL=3600 # CRL cache süresi (saniye)
Sistem üç farklı resolver tipini destekler. TRUSTED_ROOT_RESOLVER_TYPE parametresi ile seçim yapılır.
Varsayılan olarak, KamuSM root ve ara sertifikaları otomatik olarak şu adresten yüklenir:
Bu sayede her zaman güncel sertifikalar kullanılır. Periyodik olarak otomatik yenilenir (varsayılan: her gün saat 03:15).
export TRUSTED_ROOT_RESOLVER_TYPE=kamusm-online
export KAMUSM_ROOT_URL=http://depo.kamusm.gov.tr/depo/SertifikaDeposu.xml
export KAMUSM_ROOT_REFRESH_CRON="0 15 3 * * *" # Her gün saat 03:15
Offline ortamlarda veya internet bağlantısı olmayan sistemlerde, KamuSM sertifika deposunu yerel dosya sisteminden yükleyebilirsiniz:
export TRUSTED_ROOT_RESOLVER_TYPE=kamusm-offline
export KAMUSM_ROOT_OFFLINE_PATH=file:/path/to/SertifikaDeposu.xml
# veya classpath'ten
export KAMUSM_ROOT_OFFLINE_PATH=classpath:certs/SertifikaDeposu.xml
Offline Mod Kullanım Senaryoları:
Not: Offline modda sertifikalar sadece uygulama başlangıcında yüklenir. Otomatik yenileme yapılmaz.
Belirtilen klasördeki tüm .crt, .cer ve .pem dosyalarını güvenilir kök sertifika olarak yükler. Bu resolver, özel sertifika klasörlerinden sertifika yüklemek için idealdir.
export TRUSTED_ROOT_RESOLVER_TYPE=certificate-folder
export TRUSTED_ROOT_CERT_FOLDER_PATH=/path/to/certificates
# veya file: prefix ile
export TRUSTED_ROOT_CERT_FOLDER_PATH=file:/path/to/certificates
Certificate Folder Resolver Kullanım Senaryoları:
Not: Klasördeki tüm geçerli sertifika dosyaları otomatik olarak yüklenir. Alt klasörler taranmaz.
Sertifika deposu kullanmak için (zorunlu):
export CERTSTORE_PATH=/path/to/kamusm-certstore.jks
export CERTSTORE_PASSWORD=yourpassword
veya özel bir root sertifika eklemek için:
export CUSTOM_ROOT_CERT_PATH=/path/to/custom-root.cer
Prometheus metrikleri /actuator/prometheus endpoint'inde sunulur:
curl http://localhost:8086/actuator/prometheus
Grafana ile birlikte çalıştırmak için:
docker-compose --profile monitoring up -d
CORS_ALLOWED_ORIGINS değerini spesifik domain'lere sınırlayın# Tüm testleri çalıştır
mvn test
# Spesifik test
mvn test -Dtest=SignatureVerificationServiceTest
OpenAPI dokümantasyonuna erişim:
http://localhost:8086/api-docs
| Dosya | Açıklama |
|---|---|
| dss.mersel.dev | 📚 Merkezi Dökümantasyon |
| LICENSE | MIT Lisansı |
| CHANGELOG.md | Versiyon geçmişi |
| CONTRIBUTING.md | Katkıda bulunma rehberi |
| SECURITY.md | Güvenlik politikası |
| COMPARISON_REPORT.md | Sign-API ile karşılaştırma raporu |
CONTRIBUTING.md dosyasına bakın.
Detaylı dökümantasyon, API referansları, deployment rehberleri ve tüm güncellemeler için:
Not: Bu servis, sign-api projesinin doğrulama karşılığıdır. İmzalama işlemleri için sign-api'yi kullanın.
Content type
Image
Digest
sha256:2cff340d7…
Size
137.3 MB
Last updated
10 months ago
docker pull mersel/dss-verifier-api-java