ESYAE-imza Kütüphaneleri

User Tools

Site Tools


esya:xades:kod-imza-profilleri

Farklar

Bu sayfanın seçili sürümü ile mevcut sürümü arasındaki farkları gösterir.

Karşılaştırma görünümüne bağlantı

esya:xades:kod-imza-profilleri [2013/07/19 10:53]
Ahmet Yetgin [P3 -Uzun Süreli - İmza Profili]
esya:xades:kod-imza-profilleri [2013/08/20 11:47] (mevcut)
Dindar Öz
Satır 1: Satır 1:
 ====== XAdES İmza Profillerine Göre İmza Atma ====== ====== XAdES İmza Profillerine Göre İmza Atma ======
 +
 +İmza profillerinin açıklamalarını ''​http://​www.tk.gov.tr/​bilgi_teknolojileri/​elektronik_imza/​dosyalar/​Elektronik_Imza_Kullanim_Profilleri_Rehberi.pdf''​ adresinde bulabileceğiniz gibi ''​config/​profiller''​ altında ''​Elektronik_Imza_Kullanim_Profilleri_Rehberi.pdf''​ dökümanında da bulabilirsiniz.
 +
 +Örnek kodları ''​tr.gov.tubitak.uekae.esya.api.xades.example.profiles''​ paketi altında bulabilirsiniz.
  
 ===== P1- Anlık- İmza Profili ===== ===== P1- Anlık- İmza Profili =====
  
-Anlık doğrulama gerektiren güvenlik ihtiyacı düşük seviyede olan uygulamalarda kullanılır. İmza doğrulayıcının eline geçtiği an, imza zamanı sayılır. Gelecekte imzayı tekrar doğrulama ihtiyacı olmayacak senaryolarda tercih edilmelidir. ​+Anlık doğrulama gerektiren güvenlik ihtiyacı düşük seviyede olan uygulamalarda kullanılır. İmza doğrulayıcının eline geçtiği an, imza zamanı sayılır. Gelecekte imzayı tekrar doğrulama ihtiyacı olmayacak senaryolarda tercih edilmelidir. Örnek kod ''​P1''​ sınıfındadır.
  
 <sxh java> <sxh java>
-// create signature XMLSignature signature = new XMLSignature(createContext());  +// create context with working directory 
-signature.addDocument("​./​sample.txt",​ "​text/​plain",​ false);  +Context context = createContext();​ 
-signature.addKeyInfo(CERTIFICATE);  + 
-// set time now It is better to use TimeProvider! ​ +// add resolver to resolve policies 
-signature.setSigningTime(Calendar.getInstance());​  +context.addExternalResolver(POLICY_RESOLVER);​ 
-signature.sign(PRIVATE_KEY);  + 
-signature.write(new FileOutputStream(SIGNATURE_FILENAME_P1));+// create signature ​according to context, 
 +// with default type (XADES_BES) 
 +XMLSignature signature = new XMLSignature(context); 
 + 
 +// add document as reference, but do not embed it 
 +// into the signature (embed=false) 
 +signature.addDocument("​./​sample.txt",​ "​text/​plain",​ false); 
 + 
 +signature.getSignedInfo().setSignatureMethod(SignatureMethod.RSA_SHA256);​ 
 + 
 +// false-true gets non-qualified certificates while true-false gets qualified ones 
 +X509Certificate cert = JSmartCardManager.getInstance().getSignatureCertificate(true,​ false); 
 + 
 +// add certificate to show who signed the document 
 +signature.addKeyInfo(new ECertificate(cert.getEncoded())); 
 + 
 +// set time now 
 +signature.setSigningTime(Calendar.getInstance());​ 
 + 
 +// now sign it by using smart card 
 +signature.sign(JSmartCardManager.getInstance().getSigner(PIN,​ cert)); 
 + 
 +signature.write(new FileOutputStream(BASE_DIR + SIGNATURE_FILENAME));
 </​sxh>​ </​sxh>​
  
Satır 19: Satır 45:
 ===== P2 -Kısa Süreli- İmza Profili ===== ===== P2 -Kısa Süreli- İmza Profili =====
  
-Kısa süreli kullanım ömrü olan imzalarda, ÇiSDuP erişimi bulunmayan ortamlarda tercih edilmelidir. ÇisDuP erişimi olan ortamlarda P4 profili kullanılmalıdır. ​+Kısa süreli kullanım ömrü olan imzalarda, ÇiSDuP erişimi bulunmayan ortamlarda tercih edilmelidir. ÇisDuP erişimi olan ortamlarda P4 profili kullanılmalıdır. Kodu ''​P2''​ sınıfında inceleyebilirsiniz.
  
 <sxh java> <sxh java>
-XMLSignature signature = createSignature();​  +// create context with working directory 
-// set policy info defined and required by profile ​ +Context context = createContext();
-signature.setPolicyIdentifier(OID_POLICY_P2,​ "Kısa Dönemli ve SİL Kontrollü Güvenli Elektronik İmza Politikası",​ "​http://​www.eimza.gov.tr/​EimzaPolitikalari/​XML_216792121157511.xml"​);​  +
-signature.sign(PRIVATE_KEY);+
  
-// add timestamp ​signature.upgradeToXAdES_T();  +// add resolver to resolve policies 
-signature.write(new FileOutputStream(SIGNATURE_FILENAME_P2));+context.addExternalResolver(POLICY_RESOLVER);​ 
 + 
 +// create signature according to context, 
 +// with default type (XADES_BES) 
 +XMLSignature signature = new XMLSignature(context);​ 
 + 
 +// add document as reference, but do not embed it 
 +// into the signature (embed=false) 
 +signature.addDocument("​./​sample.txt",​ "​text/​plain",​ false); 
 + 
 +signature.getSignedInfo().setSignatureMethod(SignatureMethod.RSA_SHA256);​ 
 + 
 +// false-true gets non-qualified certificates while true-false gets qualified ones 
 +X509Certificate cert = JSmartCardManager.getInstance().getSignatureCertificate(true,​ false); 
 + 
 +// add certificate to show who signed the document 
 +signature.addKeyInfo(new ECertificate(cert.getEncoded()));​ 
 + 
 +// set time now 
 +signature.setSigningTime(Calendar.getInstance());​ 
 + 
 +// set policy info defined and required by profile 
 +signature.setPolicyIdentifier(OID_POLICY_P2,​ 
 + "​Kısa Dönemli ve SİL Kontrollü Güvenli Elektronik İmza Politikası",​ 
 + "​http://​www.tk.gov.tr/​bilgi_teknolojileri/​elektronik_imza/​dosyalar/​Elektronik_Imza_Kullanim_Profilleri_Rehberi.pdf"​ 
 +); 
 + 
 +// now sign it by using smart card 
 +signature.sign(JSmartCardManager.getInstance().getSigner(PIN,​ cert)); 
 + 
 +// upgrade to T 
 +signature.upgrade(SignatureType.ES_T);​ 
 + 
 +signature.write(new FileOutputStream(BASE_DIR + SIGNATURE_FILENAME));
 </​sxh>​ </​sxh>​
 +
 ===== P3 -Uzun Süreli - İmza Profili ===== ===== P3 -Uzun Süreli - İmza Profili =====
  
-ÇiSDuP erişimi olmayan ortamlarda kullanılabilir. Aksi durumda P3 profilinin, P4 profiline tercih edilebilecek herhangi bir avantajı yoktur, SİL boyutlaıve imzadan sonra SİL yayınlanmasını ​bekme gerekliliği gibi sebeplerle mecbur kalmadıkça tercih edilmemelidir.. XMLSignature signature = createSignature(); // set policy info defined and required by profile signature.setPolicyIdentifier(OID_POLICY_P3,​ "Uzun Dönemli ve SİL Kontrollü Güvenli Elektronik İmza Politikası",​ "​http://​www.eimza.gov.tr/EimzaPolitikalari/XML_216792121157521.xml"); signature.sign(PRIVATE_KEY); signature.upgradeToXAdES_T(); // since P3 requires CRLs as revocation info // below code should be executed after grace period elapses signature.upgradeToXAdES_C(); signature.upgradeToXAdES_X1(); signature.upgradeToXAdES_XL(); signature.write(new FileOutputStream(SIGNATURE_FILENAME_P3));+ÇiSDuP erişimi olmayan ortamlarda kullanılabilir. Aksi durumda P3 profilinin, P4 profiline tercih edilebilecek herhangi bir avantajı yoktur, SİL boyutları ve imzadan sonra SİL yayınlanmasını ​bekleme ​gerekliliği gibi sebeplerle mecbur kalmadıkça tercih edilmemelidir. ​Örnek kod ''​P3''​ sınıfındadır. 
 + 
 +<sxh java> 
 +// create context with working directory 
 +Context context = createContext();​ 
 + 
 +// add resolver to resolve policies 
 +context.addExternalResolver(POLICY_RESOLVER);​ 
 + 
 +// create signature according to context, 
 +// with default type (XADES_BES) 
 +XMLSignature signature = new XMLSignature(context); 
 + 
 +// add document as reference, but do not embed it 
 +// into the signature (embed=false) 
 +signature.addDocument("​./​sample.txt",​ "​text/​plain",​ false); 
 + 
 +signature.getSignedInfo().setSignatureMethod(SignatureMethod.RSA_SHA256);​ 
 + 
 +// false-true gets non-qualified certificates while true-false gets qualified ones 
 +X509Certificate cert = JSmartCardManager.getInstance().getSignatureCertificate(true,​ false); 
 + 
 +// add certificate to show who signed the document 
 +signature.addKeyInfo(new ECertificate(cert.getEncoded()));​ 
 + 
 +// set time now 
 +signature.setSigningTime(Calendar.getInstance());​ 
 + 
 +// set policy info defined and required by profile 
 +signature.setPolicyIdentifier(OID_POLICY_P3,​ 
 + "Uzun Dönemli ve SİL Kontrollü Güvenli Elektronik İmza Politikası",​ 
 + "​http://​www.tk.gov.tr/bilgi_teknolojileri/elektronik_imza/​dosyalar/​Elektronik_Imza_Kullanim_Profilleri_Rehberi.pdf" 
 +); 
 + 
 +// now sign it by using smart card 
 +signature.sign(JSmartCardManager.getInstance().getSigner(PIN,​ cert)); 
 + 
 +// upgrade to T 
 +signature.upgrade(SignatureType.ES_T);​ 
 + 
 +signature.write(new FileOutputStream(BASE_DIR + "​p3_temp.xml"​)); 
 +</sxh> 
 + 
 +İkinci kod yeni bir SİL yayınlandıktan sonra çalıştırılmalıdır. 
 + 
 +<sxh java> 
 +// create context with working directory 
 +Context context = createContext();​ 
 + 
 +// set policy such that it only works with CRL 
 +CertValidationPolicies policies = new CertValidationPolicies();​ 
 +policies.register(null, PolicyReader.readValidationPolicy(POLICY_FILE_CRL)); 
 + 
 +context.getConfig().getValidationConfig().setCertValidationPolicies(policies);​ 
 + 
 +// add resolver to resolve policies 
 +context.addExternalResolver(POLICY_RESOLVER);​ 
 + 
 +// read temporary ​signature 
 +XMLSignature signature = XMLSignature.parse(new FileDocument(new File(BASE_DIR + "​p3_temp.xml"​)),​context); 
 + 
 +// upgrade to XL 
 +signature.upgrade(SignatureType.ES_XL); 
 + 
 +signature.write(new FileOutputStream(BASE_DIR + SIGNATURE_FILENAME)); 
 +</​sxh>​
  
 ===== P4 - Uzun Süreli- İmza Profili ===== ===== P4 - Uzun Süreli- İmza Profili =====
  
-En güvenilir, uzun ömürlü ve sorunsuz imza profilidir. ​Validasyon ​verisi imza içinde yer alır. XMLSignature signature = createSignature(); // set policy info defined and required by profile signature.setPolicyIdentifier(OID_POLICY_P4,​ "Uzun Dönemli ve ÇİSDuP Kontrollü Güvenli Elektronik İmza Politikası",​ "​http://​www.eimza.gov.tr/EimzaPolitikalari/XML_216792121157531.xml"​); ​signature.sign(SIGNER); ​// upgrade ​signature.upgradeToXAdES_T(); signature.upgradeToXAdES_C(); signature.upgradeToXAdES_X1(); signature.upgradeToXAdES_XL(); signature.write(new FileOutputStream(SIGNATURE_FILENAME_P4));+En güvenilir, uzun ömürlü ve sorunsuz imza profilidir. ​Doğrulama ​verisi imza içinde yer alır. ​Örnek kod ''​P4''​ sınıfındadır. 
 + 
 +<sxh java> 
 +// create context with working directory 
 +Context context = createContext();​ 
 + 
 +// add resolver to resolve policies 
 +context.addExternalResolver(POLICY_RESOLVER);​ 
 + 
 +// create signature according to context, 
 +// with default type (XADES_BES) 
 +XMLSignature signature = new XMLSignature(context); 
 + 
 +// add document as reference, but do not embed it 
 +// into the signature (embed=false) 
 +signature.addDocument("​./​sample.txt",​ "​text/​plain",​ false); 
 + 
 +signature.getSignedInfo().setSignatureMethod(SignatureMethod.RSA_SHA256);​ 
 + 
 +// false-true gets non-qualified certificates while true-false gets qualified ones 
 +X509Certificate cert = JSmartCardManager.getInstance().getSignatureCertificate(true,​ false); 
 + 
 +// add certificate to show who signed the document 
 +signature.addKeyInfo(new ECertificate(cert.getEncoded()));​ 
 + 
 +// set time now 
 +signature.setSigningTime(Calendar.getInstance()); 
 + 
 +// set policy info defined and required by profile 
 +signature.setPolicyIdentifier(OID_POLICY_P4,​ 
 + "Uzun Dönemli ve ÇİSDuP Kontrollü Güvenli Elektronik İmza Politikası",​ 
 + "​http://​www.tk.gov.tr/bilgi_teknolojileri/elektronik_imza/​dosyalar/​Elektronik_Imza_Kullanim_Profilleri_Rehberi.pdf" 
 +); 
 + 
 +// now sign it by using smart card 
 +signature.sign(JSmartCardManager.getInstance().getSigner(PIN, cert)); 
 + 
 +// upgrade to XL 
 +signature.upgrade(SignatureType.ES_XL); 
 + 
 +signature.write(new FileOutputStream(BASE_DIR + SIGNATURE_FILENAME)); 
 +</​sxh>​
  
 ===== Arşiv İmza ===== ===== Arşiv İmza =====
  
-Uzun süreli imza içindeki son zaman damgasını imzalayan sertifikanın ömrü dolmadan önce, yada imza içinde kullanılan algoritmalar güvenilirlik derecelerini yitirdikçe imza üzerine arĢiv zaman damgası eklenmelidir. ArĢiv formatına eriĢmek için X-Long(Profil 4) imza üzerinde signature.upgradeToXAdES_A();​ +Uzun süreli imza içindeki son zaman damgasını imzalayan sertifikanın ömrü dolmadan önce, yada imza içinde kullanılan algoritmalar güvenilirlik derecelerini yitirdikçe imza üzerine arşiv zaman damgası eklenmelidir. Arşiv formatına erişmek için X-Long(Profil 4) imza üzerinde ​ 
-metodu; + 
-halihazırda arşiv tipindeki imzaya her arşiv zaman damgası eklenmek istendiğinde ise +<sxh java> 
 +signature.upgradeToXAdES_A();​ 
 +</​sxh>​ 
 + 
 +metodu; halihazırda arşiv tipindeki imzaya her arşiv zaman damgası eklenmek istendiğinde ise 
  
 <sxh java> <sxh java>
esya/xades/kod-imza-profilleri.1374231193.txt.gz · Son değiştirilme: 2013/07/19 10:53 Değiştiren: Ahmet Yetgin