XML imza kütüphanesinin imza yaratma ve doğrulama ayarlarına erişim için kullandığı konfigurasyon dosyasıdır. Bu konfigürasyon içinde kaynaklara erişim için proxy, zaman damgası, kaynak çözücüleri(Resolver arayüzü), varsayılan algoritmalar ve doğrulama ayarları yer alır.
<?xml version="1.0" encoding="UTF-8"?> <xml-signature-config>
XML imza konfigürasyonu, xml-signature-config
kök elemanı ile başlar.
Yerelleştirme seçenekleri, locale elementi ile ayarlanır.
<locale language="EN" country="EN"/>
<http> <proxy-host></proxy-host> <proxy-port></proxy-port> <proxy-username></proxy-username> <proxy-password></proxy-password> <basic-authentication-username></basic-authentication-username> <basic-authentication-password></basic-authentication-password> <connection-timeout-in-milliseconds>2000</connection-timeout-in-milliseconds> </http>
Eğer proxy üzerinden bağlantı kurulacaksa ilgili ayarlar http elementi ile yapılır.
<resolvers> <resolver class="tr.gov.tubitak.uekae.esya.api.xmlsignature.resolver.IdResolver"/> <resolver class="tr.gov.tubitak.uekae.esya.api.xmlsignature.resolver.DOMResolver"/> <resolver class="tr.gov.tubitak.uekae.esya.api.xmlsignature.resolver.HttpResolver"/> <resolver class="tr.gov.tubitak.uekae.esya.api.xmlsignature.resolver.XPointerResolver"/> <resolver class="tr.gov.tubitak.uekae.esya.api.xmlsignature.resolver.FileResolver"/> </resolvers>
Bu alanda imza içideki URL'lerin çözümünde kullanılacak sınıflar yer almaktadır. Standart bir kullanım için buradaki çözücü tanımlamaları yeterlidir. Farklı protokoller eklenmek istenirse IResolver arayüzü gerçeklenip, konfigürasyonda resolvers elementine eklenebilir. Örneğin bir URI'ye karşılık gelen veriyi bir veritabanında tutmak isterseniz, kendi DatabaseResolver sınıfınızı yazabilirsiniz.
public interface IResolver { boolean isResolvable(String aURI, Context aContext); Document resolve(String aURI, Context aContext) throws IOException; }
<timestamp-server> <host>http://timestamp_server_address</host> <userid>fill_id_here</userid> <password>pass</password> <digest-alg>SHA-1</digest-alg> </timestamp-server>
Userid ve password alanları ESYA tabanlı zaman damgası içindir. Açık bir zaman damgası servisi için bu alanları boş bırakın.
<algorithms> <digest-method>http://www.w3.org/2001/04/xmlenc#sha256</digest-method> </algorithms>
<validation> <!-- default policy for certificate validation --> <certificate-validation-policy-file>//path/to/certval-policy.xml</certificate-validation-policy-file> <!-- possible types: {QualifiedCertificate, MaliMuhurCertificate, TimeStampingCertificate} --> <certificate-validation-policy-file for="MaliMuhurCertificate">//path/to/certval-mm-policy.xml</certificate-validation-policy-file> <!-- grace period is the time that needs to pass to get exact revocation info--> <grace-period-in-seconds>86400</grace-period-in-seconds> <!-- how old revocation data should be accepted? --> <last-revocation-period-in-seconds>172800</last-revocation-period-in-seconds> <!-- compare resolved policy with the one at policy uri, if indicated --> <check-policy-uri>false</check-policy-uri> <!-- loosening below 2 settings will cause warnings instead of validation failure --> <!-- referenced validation data must be used for cert validation is set true --> <force-strict-reference-use>false</force-strict-reference-use> <!-- validation data must be published after creation ifs set true, requires grace period for signers --> <use-validation-data-published-after-creation>false</use-validation-data-published-after-creation> <validators> ... </validators> </validation>
certificate-validation-policy-file | Sertifika doğrulamada kullanılacak konfigürasyon. 'for' attribute'u kullanılmazsa default politika olur. Bu attribute içinde QualifiedCertificate , MaliMuhurCertificate , TimeStampingCertificate değerlerinden biri kullanılarak sertifika tipine göre doğrulama politikası vermek mümkündür. |
---|---|
grace-period-in-seconds | Saniye cinsinden grace period. Grace period doğrulama verisinin olgunlaşması için beklenmesi gereken süredir. |
last-revocation-period-in-seconds | Doğrulama verisinin üretim zamanı ile, doğrulama zamanı arasında ne kadar süre olabileceği |
force-strict-reference-use | Referanslarla işaret edilen iptal bilgisi doğrulamada kullanılmalı. Güvenlik açısından normal şartlarda bu değer true olmalıdır. |
use-validation-data-published-after-creation | Doğrulama verisinin imza tarihinden sonra üretilmesini şart koş. Default değer true. Sağlıklı ve güvenilir bir imzada doğrulama verisi imza tarihinden sonra yayınlanmış olmalıdır. |
XML İmza doğrulayıcı sınıflar validation
/validators
tagları arasında yer almaktadır. Normalde bu kısımları değiştirmeniz gerekmez. Ekstra (custom) doğrulayıcılar geliştirmek isterseniz bu kısma ekleme yapmak için örnek konfigürasyonları inceleyebilirsiniz. Dikkat etmeniz gereken tek nokta profil tanımlarında “inherit-validators-from” attribute'ı aracılığıyla profiller arası ortak doğrulayıcı kullanımı yapılabilmesidir.