İndirdiğiniz kütüphane ile birlikte gelen politika dosyası, bir sertifika doğrulamanın işleminin hangi kontrol adımlarından oluşacağını belirler. Örnek olarak verilen politika dosyası sadece sertifika deposu ile çalışmaktadır. Sertifika deposunda ise sadece kanuni geçerliliği olan kök sertifikalar bulunmaktadır. Dolayısıyla test sistemi ile çalışmak için test sisteminin köklerinin de kütüphaneye güvenilir kök olarak gösterilmesi gerekmektedir. Bunun için Politikanın Çalışma Zamanında Düzenlenmesi bölümüne bakabilirsiniz.
Politika dosyasında yapılabilecek bir diğer düzenleme, sertifika iptal kontrollerinde ÇİSDUP veya SİL kullanılmasının ayarlanmasıdır. Bir sertifikanın doğrulanması sırasında sertifika zincirinin tamamının doğrulanması gerekmektedir. Zincirdeki bütün sertifikalar için ÇİSDUP desteği verilmeyebilir. Örneğin KamuSM sisteminde alt kökler için ÇİSDUP hizmeti verilmemektedir. Dolayısıyla sadece ÇİSDUP kullanarak bir sertifikayı doğrulamak mümkün değildir. Bu durumda ÇİSDUP öncelikli SİL ve ÇİSDUP'un bulunduğu konfigürasyon veya sadece SİL ile çalışan konfigürasyon yaratılabilir.
Politika dosyasında ÇİSDUP veya SİL'den hangisine öncelik verilmesi isteniyorsa, o sınıf üste yazılmalıdır.
Politika dosyası, dosyadan okunduktan sonra çalışma zamanında düzenlenebilir. Aşağıdaki kod parçası bir klasörden güvenilir sertifikaları bulan TrustedCertificateFinderFromFileSystem sınıfını çalışma zamanında eklemektedir.
ValidationPolicy POLICY = PolicyReader.readValidationPolicy(new FileInputStream(POLICY_FILE)); //For UEKAE Test Environment, we add our test roots. HashMap<String, Object> parameters = new HashMap<String, Object>(); parameters.put("dizin", "T:\\MA3\\api-cmssignature\\testdata\\support\\UGRootCerts\\"); POLICY.bulmaPolitikasiAl().addTrustedCertificateFinder("tr.gov.tubitak.uekae.esya.api.certificate.validation.find.certificate.trusted.TrustedCertificateFinderFromFileSystem", parameters);
ValidationPolicy POLICY = PolicyReader.readValidationPolicy(POLICY_FILE); //For UEKAE Test Environment, we add our test roots. Dictionary<String, Object> parameters = new Dictionary<String, Object>(); parameters.Add("dizin", "T:\\MA3\\api-cmssignature\\testdata\\support\\UGRootCerts\\"); POLICY.bulmaPolitikasiAl().addTrustedCertificateFinder("tr.gov.tubitak.uekae.esya.api.certificate.validation.find.certificate.trusted.TrustedCertificateFinderFromFileSystem", parameters);
Politika dosyasında tanımlanan sınıflar aşağıdaki tablolarda listelenmiştir.
Bu tablolardaki gösterimde;
Parametrenin alabileceği değerlerin listelendiği yerde * ile belirtilen değer parametrenin varsayılan değeridir.
[O] değeri ile belirtilen parametre opsiyonel parametre anlamına gelir.
Başlığın yanındaki XML tagları, o başlık altında yer alan sınıfların, politika dosyasında hangi XML tag değerinin altında listelenmesi gerektiğini (yani politika dosyasındaki yerini) belirtir.
GÜVENİLİR SERTİFİKA YAPISAL KONTROLCÜLERİ <policy><validate><certificate><trustedcertificate> |
|||
---|---|---|---|
CertificateDateChecker | Sertifika üzerinde yer alan geçerlilik zaman aralığının, doğrulama zamanını kapsaması kuralını doğrular. | ||
SelfSignatureChecker | Sertifika üzerindeki imzayı, sertifikanın açık anahtarı ile kriptografik olarak doğrular. | ||
SERTİFİKA YAPISAL KONTROLCÜLERİ <policy><validate><certificate><self> |
|||
CertificateDateChecker | Sertifika üzerinde yer alan geçerlilik zaman aralığının, doğrulama zamanını kapsaması kuralını doğrular. | ||
CertificateExtensionChecker | Sertifika üzerinde yer alan eklenti bilgilerinin RFC 5280 uyumluluğunu kontrol eder. | ||
PositiveSerialNumberChecker | Sertifika seri numarasının pozitif bir tamsayı olması kuralını doğrular. | ||
SignatureAlgConsistencyChecker | Sertifika üzerinde yer alan İmza Algoritması bilgilerinin uyuşması kuralını doğrular. | ||
VersionChecker | Sertifika versiyon bilgisinin RFC 5280 uyumluluğunu kontrol eder. | ||
QualifiedCertificateChecker | Sertifikanın nitelik kontrolü yapılır. | ||
Parametreler | statementoids | Verilen OID'lere göre sertifikanın nitelik kontrolleri yapılır. Bazı nitelikli sertifika kontrollerinde iki tane OID kontrol edilmek istenebilir. Bu gibi durumlarda AND ile OID'ler birleştirilebilir. Değişik ülkeler değişik OID'ler kullanabilmektedir. Bu tür durumlar için de OID'ler OR ile ayrılabilir. Örn: ”(0.4.0.1862.1.1 AND 2.16.792.1.61.0.1.5070.1.1) OR (4.3.2.1 AND 1.2.3.4)” |
|
SERTİFİKA ZİNCİR KONTROLCÜLERİ <policy><validate><certificate><issuer> |
|||
BasicConstraintCAChecker | Yayıncı Sertifikası üzerindeki Temel Kısıtlamalar (BasicConstraints) eklentisinin RFC 5280 uyumluluğunu kontol eder. | ||
CertificateKeyUsageChecker | Yayıncı Sertifikası üzerindeki Anahtar Kullanımı (KeyUsage) eklentisinin RFC 5280 uyumluluğunu kontol eder. | ||
CertificateNameChecker | Sertifika üzerindeki yayıncı özne adı (issuer) alanı ile yayıncı sertifikası üzerindeki özne adı (subject ) alanlarının eşleşmesi kuralını doğrular. | ||
CertificateSignatureChecker | Sertifika üzerindeki imzayı yayıncı sertifikasının açık anahtarı ile kriptografik olarak doğrular. | ||
KeyIdentifierChecker | Sertifika üzerindeki Yetkili Anahtar Tanımlayıcısı (AuthorityKeyIdentifier) eklentisi ile yayıncı sertifikası üzerinde yer alan Özne Anahtar Tanımlayıcısı (SubjectKeyIdentifier) eklentilerin uyumluluğunu kontrol eder. | ||
NameConstraintsChecker | Sertifikanın özne adının yayıncı sertifikasında (varsa) yer alan İsim Kısıtlamaları (NameConstraints) arasındaki ilişkinin RFC 5280 uyumluluğunu kontrol eder. | ||
PathLenConstraintChecker | Yayıncı Sertifikası üzerindeki Yol Uzunluğu Kısıtlamaları (PathLengthConstraints) eklentisinin RFC 5280 uyumluluğunu kontrol eder. | ||
PolicyConstraintsChecker | Yayıncı Sertifikası üzerindeki Politika Kısıtlamaları (PolicyConstraints) eklentisinin RFC 5280 uyumluluğunu kontrol eder. | ||
SERTİFİKA İPTAL KONTROLCÜLERİ <policy><validate><certificate><revocation> |
|||
RevocationFromCRLChecker | SİL'e bakarak sertifikanın iptal durumunu kontrol eder. | ||
Parametreler | cevrimdisicalis | [true,false*] Bu parametre doğrulamanın çevrimdışı olarak yürütüleceğini belirtir. True olarak tanımlanmışsa iptal kontrolcü hiçbir SİL bulamasa bile iptal kontrolünü başarılı olarak sonlandırır. Çevrimdışı ortamlarda SİL'e ulaşılamadığında bile sertifika doğrulamanın gerçekleşebilmesi için tanımlanmıştır. Dikkatli kullanılmalıdır! |
|
checkAllCRLs | [true,false*] Doğrulama sırasında normal olarak bir adet geçerli SİL kontrolü iptal kontrolünün tamamlanması için yeterlidir. Ancak bazı durumlarda kullanıcılar politika tanımlı bütün SİL bulucuların getirdikleri SİL'lere bakılmasını isteyebilirler. Bu durumda bu değer true yapılmalıdır. |
||
devam | [true,false*] Doğrulama sırasında normal olarak bir adet iptal kontrolcünün başarılı sonuçlanması iptal kontrolünün tamamlanması için yeterlidir. Ancak kullanıcılar daha güvenli olması amacıyla bir iptal kontrolü başarılı sonuçlansa bile diğer iptal kontrolcülerin kontrolüne devam etmesini isteyebilirler. Bu durumda bu parametre true yapılmalıdır. |
||
RevocationFromOCSPChecker | |||
Parametreler | devam | [true,false*] Doğrulama sırasında normal olarak bir adet iptal kontrolcünün başarılı sonuçlanması iptal kontrolünün tamamlanması için yeterlidir. Ancak kullanıcılar daha güvenli olması amacıyla bir iptal kontrolü başarılı sonuçlansa bile diğer iptal kontrolcülerin kontrolüne devam etmesini isteyebilirler. Bu durumda bu parametre true yapılmalıdır. |
|
SİL YAPISAL KONTROLCÜLERİ <policy><validate><crl><crlself> |
|||
CRLDateChecker | SİL üzerinde yer alan geçerlilik zaman aralığının, doğrulama zamanını kapsaması kuralını doğrular. | ||
CRLExtensionChecker | SİL üzerinde yer alan eklenti bilgilerinin RFC 5280 uyumluluğunu kontrol eder. | ||
SİL ZİNCİR KONTROLCÜLERİ <policy><validate><crl><crlissuer> |
|||
CRLKeyUsageChecker | Yayıncı Sertifikası üzerindeki Anahtar Kullanımı (KeyUsage) eklentisinin RFC 5280 uyumluluğunu kontol eder. | ||
CRLSignatureChecker | SİL üzerindeki imzayı yayıncı sertifikasının açık anahtarı ile kriptografik olarak doğrular. | ||
DELTA SİL KONTROLCÜLERİ <policy><validate><deltacrl> |
|||
FreshestCRLChecker | Delta SİL üzerindeki En Güncel SİL (FreshestCRL) eklentisinin RFC 5280 uyumluluğunu kontol eder. | ||
DeltaCRLIndicatorChecker | Delta SİL üzerindeki Delta SİL Belirteci (DeltaCRLIndicator) eklentisinin RFC 5280 uyumluluğunu kontol eder. | ||
OCSP CEVABI KONTROLCÜLERİ <policy><validate><ocsp> |
|||
SigningCertificateChecker | OCSP cevabını imzalayan yayıncı sertifikasını doğrular. | ||
OCSPSignatureChecker | OCSP cevabı üzerindeki imzayı yayıncı sertifikasının açık anahtarı ile kriptografik olarak doğrular. | ||
ResponseStatusChecker | OCSP cevabı üzerindeki cevap durumu alanının geçerliliğini doğrular. | ||
OCSPResponseDateChecker | OCSP üzerinde yer alan geçerlilik zaman aralığının doğrulama zamanını kapsaması kuralını doğrular. |
SERTİFİKA EŞLEŞTİRİCİLER <policy><match><certificate> |
|
---|---|
IssuerSubjectMatcher | Sertifika üzerindeki yayıncı özne adı (issuer) alanı ile yayıncı sertifikası üzerindeki özne adı (subject ) alanlarını eşleştirir. |
SİL EŞLEŞTİRİCİLER <policy><match><certificate> |
|
CRLDistributionPointMatcher | Sertifika üzerindeki SİL Dağıtım Noktaları (CRLDistributionPoints) eklentisinin üzerindeki bilgi ile SİL üzerindeki (varsa) Yayıncı Dağıtım Noktası (IssuingDistributionPoint) eklentisine bakarak SİL ile sertifikayı eşleştirir. |
CRLDistributionPointOnlyContainsMatcher | SİL üzerindeki Yayıncı Dağıtım Noktası (Issuing Distribution Point) eklentisindeki onlyContains özellikleri ile Sertifika üzerindeki Temel Kısıtlamalar (BasicConstraint) eklentisine bakarak SİL ile sertifikayı eşleştirir |
CRLIssuerMatcher | SİL üzerindeki yayıncı adı (issuer) alanı ile Sertifika üzerindeki yayıncı adı (issuer) alanına bakarak SİL ile sertifikayı eşleştirir. |
CRLKeyIDMatcher | SİL üzerindeki Yetkili Anahtar Tanımlayıcısı (AuthorityKeyIdentifier) eklentisi ile Sertifika üzerindeki Yetkili Anahtar Tanımlayıcısı (AuthorityKeyIdentifier) eklentisine bakarak SİL ile sertifikayı eşleştirir. |
Delta SİL EŞLEŞTİRİCİLER <policy><match><certificate> |
|
BaseCRLNumberMatcher | Delta SİL üzerindeki Temel SİL Numarası (BaseCRLNumber) eklentisi ile temel SİL üzerindeki SİL Numarası (CRLNumber) eklentisine bakarak temel SİL ile delta SİL'i eşleştirir. |
CRLNumberMatcher | Delta SİL üzerindeki SİL Numarası (CRLNumber) eklentisi üzerindeki SİL numarasının temel SİL üzerindeki SİL Numarası (CRLNumber) eklentisi üzerindeki SİL Numarasından büyük olduğunu doğrulayarak temel SİL ile delta SİL'i eşleştirir. |
DeltaCRLIssuerMatcher | Delta SİL üzerindeki yayıncı adı (issuer) alanı ile temel SİL üzerindeki yayıncı adı (issuer) alanına bakarak temel SİL ile delta SİL'i eşleştirir. |
ScopeMatcher | Delta SİL üzerindeki Yayıncı Dağıtım Noktası (IssuingDistributionPoint) eklentisi ile temel SİL üzerindeki Yayıncı Dağıtım Noktası (IssuingDistributionPoint) eklentisine bakarak temel SİL ile delta SİL'i eşleştirir. |
OCSP CEVABI EŞLEŞTİRİCİLER <policy><match><ocsp> |
|
CertIDOCSPResponseMatcher | OCSP cevabı üzerindeki Sertifika Tanımlayıcısı (CertID) alanına bakarak sertifika ile OCSP cevabını eşleştirir. |
ÇAPRAZ SERTİFİKA EŞLEŞTİRİCİLER <policy><match><crosscertificate> |
|
PublicKeyMatcher | Yayıncı sertifikasındaki açık anahtar ile Çapraz sertifika üzerindeki açık anahtarı eşleştirir. |
SKIMatcher | Yayıncı sertifikasındaki Özne Anahtar Tanımlayıcısı(SubjectKeyIdentifier) ile Çapraz sertifika üzerindeki Özne Anahtar Tanımlayıcısını(SubjectKeyIdentifier) eşleştirir. |
SubjectMatcher | Yayıncı sertifikasındaki özne adı (subject) alanı ile Çapraz sertifika üzerindeki özne adı (subject) alanını eşleştirir. |
GÜVENİLİR SERTİFİKA BULUCULAR<policy> <find><trustedcertificate> |
|||
---|---|---|---|
TrustedCertificateFinderFromECertStore | Yerel sertifika deposundaki yayıncı sertifikalarını getirir ve bu sertifikaları güvenilir kabul eder. | ||
Parametreler | securitylevel | [PERSONAL*, ORGANIZATIONAL, LEGAL] Depodan getirilecek sertifikaların güven seviyesini belirler. Kişisel sertifikalar için PERSONAL, kurumsal sertifikalar için ORGANIZATIONAL, kanuni sertifikalar için LEGAL olarak belirtilmelidir. |
|
storepath [O] | Yerel sertifika deposunun dosya sistemindeki yerini belirler. | ||
TrustedCertificateFinderFromFileSystem | Dosya sisteminde verilen dizin adresindeki yayıncı sertifikalarını getirir. Bu sertifikaları güvenilir kabul eder. | ||
Parametreler | dizin | Dizin adresi | |
TrustedCertificateFinderFromXml | Verilen URL adresindeki yayıncı sertifikalarını getirir. Bu sertifikaları güvenilir kabul eder. | ||
Parametreler | storepath [O] | URL adresi | |
SERTİFİKA BULUCULAR <policy><find><certificate> |
|||
CertificateFinderFromECertStore | Yerel sertifika deposundaki sertifikaları getirir. | ||
Parametreler | storepath [0] | Yerel sertifika deposunun dosya sistemindeki yerini belirler. | |
CertificateFinderFromFile | Dosya sisteminde verilen dosya adresindeki sertifikaları getirir. | ||
Parametreler | dosyayolu | Dosya adresi | |
CertificateFinderFromXml | Verilen URL adresindeki sertifikalarını getirir. | ||
Parametreler | storepath [O] | URL adresi | |
CertificateFinderFromHTTP | Sertifika üzerinde yer alan Yetkili Erişim Bilgileri (AuthorityInfoAccess) eklentisindeki HTTP adresinden yayıncı sertifikasını getirir. | ||
CertificateFinderFromLDAP | Sertifika üzerinde yer alan Yetkili Erişim Bilgileri (AuthorityInfoAccess) eklentisindeki LDAP adresinden yayıncı sertifikasını getirir. | ||
SİL BULUCULAR <policy><validate><certificate><revocation><find> |
|||
CRLFinderFromECertStore | Yerel sertifika deposundaki SİL'leri getirir. | ||
Parametreler | storepath [0] | Yerel sertifika deposunun dosya sistemindeki yerini belirler. | |
getactivecrl | [true,false*] Sertifika doğrulamanın kesin bir şekilde yapılması için sertifika doğrulamanın yapıldığı tarihten sonra yayınlanan SİL kullanılmaktadır. Yalnız yeni yayınlanacak SİL beklenmek istenmeyebilir ve yayında olan SİL kullanılmak istenebilir. Bu durumda getactivecrl parametresi için true verilmelidir. |
||
CRLFinderFromFile | Dosya sisteminde verilen dosya adresindeki SİL'leri getirir. | ||
Parametreler | dosyayolu | Dosya adresi | |
CRLFinderFromHTTP | Sertifika üzerinde yeralan SİL Dağıtım Noktaları(CRLDistributionPoints) eklentisindeki HTTP adresinden SİL'i getirir. | ||
CRLFinderFromLDAP | Sertifika üzerinde yeralan SİL Dağıtım Noktaları(CRLDistributionPoints) eklentisindeki LDAP adresinden yayıncı sertifikasını getirir. | ||
OCSP CEVABI BULUCULAR <policy><validate><certificate><revocation><find> |
|||
OCSPResponseFinderFromECertStore | Yerel sertifika deposundaki kayıtlı OCSP Cevaplarını getirir. | ||
Parametreler | storepath [0] | Yerel sertifika deposunun dosya sistemindeki yerini belirler. | |
OCSPResponseFinderFromAIA | Sertifika üzerinde yeralan Yetkili Erişim Bilgileri (AuthorityInfoAccess) eklentisindeki OCSP adresine OCSP sorgusu yaparak OCSP cevabı getirir. | ||
DELTA SİL BULUCULAR <find><deltacrl> |
|||
DeltaCRLFinderFromECertStore | Yerel sertifika deposundaki Delta SİL'leri getirir. | ||
Parametreler | storepath [0] | Yerel sertifika deposunun dosya sistemindeki yerini belirler. | |
DeltaCRLFinderFromFile | Dosya sisteminde verilen dosya adresindeki Delta SİL'leri getirir. | ||
Parametreler | dosyayolu | Dosya adresi | |
ÇAPRAZ SERTİFİKA BULUCULAR <find><crosscertificate> |
|||
CrossCertificateFinderFromECertStore | Yerel sertifika deposundaki çapraz sertifikaları getirir. | ||
Parametreler | storepath [0] | Yerel sertifika deposunun dosya sistemindeki yerini belirler. | |
CrossCertificateFinderFromFile | Dosya sisteminde verilen dosya adresindeki çapraz sertifikaları getirir. | ||
Parametreler | dosyayolu | Dosya adresi |
KAYDEDİCİLER <policy><save> |
|||
---|---|---|---|
CertStoreCertificateSaver | Sertifika doğrulama sırasında bulunan ve doğrulanan sertifikaları yerel sertifika deposuna kaydeder. | ||
Parametreler | storepath [O] | Yerel sertifika deposunun dosya sistemindeki yerini belirler. | |
CertStoreCRLSaver | Sertifika doğrulama sırasında uzaktan(LDAP, http vb.) bulunan SİL'leri yerel sertifika deposuna kaydeder. | ||
Parametreler | storepath [O] | Yerel sertifika deposunun dosya sistemindeki yerini belirler. | |
CertStoreOCSPResponseSaver | Sertifika doğrulama sırasında uzaktan(LDAP, http vb.) bulunan OCSP'leri yerel sertifika deposuna kaydeder. | ||
Parametreler | storepath [O] | Yerel sertifika deposunun dosya sistemindeki yerini belirler. |