مرحبا يا هبر! أقدم لكم ترجمة المقال الأخير "شهادة جافا" لجاكوب جينكوف من سلسلة من المقالات للمبتدئين الذين يرغبون في تعلم أساسيات التشفير في جافا.
جدول المحتويات:
- تشفير جافا
- تشفير جافا
- MessageDigest
- ماك
- توقيع
- KeyPair
- KeyGenerator
- KeyPairGenerator
- تخزين المفاتيح
- Keytool
- شهادة
- CertificateFactory
- CertPath
شهادة جافا
فئة الشهادة ( java.security.cert.Certificate ) هي شهادة تشهد على أن الكيان ينتمي ، على سبيل المثال ، إلى مستخدم. يحتوي مثيل فئة الشهادة على اسم ومعلومات أخرى حول الكائن الذي يحدده ، وكذلك ، ربما ، توقيع رقمي من مرجع مصدق (CA). فئة Certificate هي فئة مجردة ، لذلك ، يمكنك استخدام Certificate كنوع المتغير ، وسيشير المتغير الخاص بك دائمًا إلى فئة فرعية. تحتوي هذه الفئة على فئة فرعية واحدة - شهادة X509Certificate ، والتي تمثل شهادة X.509 ، والتي يتم استخدامها كشهادة في بروتوكولي HTTPS و TLS.
الحصول على شهادة المثيل
يمكنك الحصول على مثيل الشهادة بالطرق التالية:
راجع هذين الدليلين لمزيد من المعلومات حول الحصول على نسخة الشهادة.
getCoded ()
getEncoded() الأسلوب getEncoded() الشهادة الإصدار المشفر من الشهادة كصفيف بايت. على سبيل المثال ، إذا كانت الشهادة عبارة عن شهادة X509 ، فسيحتوي صفيف البايت الذي تم إرجاعه على إصدار مشفر X.590 لمثيل الشهادة (ASN.1 DER). فيما يلي مثال باستخدام طريقة getEncoded() :
 byte[] encodedCertificate = certificate.getEncoded(); 
getPublicKey ()
إرجاع أسلوب الشهادة getPublicKey() المفتاح العمومي لمثيل الشهادة هذا. فيما يلي مثال على طريقة getPublicKey() :
 PublicKey certificatePublicKey = certificate.getPublicKey(); 
getType ()
إرجاع الأسلوب getType() نوع مثيل الشهادة. مثال getType() :
 String certificateType = certificate.getType(); 
تحقق ()
تحتوي فئة الشهادة على ثلاثة طرق verify() . يمكن استخدام هذه الطرق للتحقق من أن الشهادة موقعة بالفعل مع المفتاح الخاص المطابق للمفتاح العمومي المتوقع. فيما يلي مثال على التحقق من الشهادة:
 
أسلوب verify() لا يُرجع قيمة. إذا فشل الاختبار ، سيتم InvalidKeyException . إذا تم طرح أي استثناء ، فيمكن اعتبار مثيل الشهادة مثبتًا.
Java CertificateFactory (مصنع الشهادات)
فئة CertificateFactory ( java.security.cert.CertificateFactory ) قادرة على إنشاء مثيلات الشهادة ( Certificate ) من البيانات الثنائية للشهادات المشفرة X.509 (ASN.1 DER). يمكن أيضًا إنشاء CertPath مثيلات CertPath . CertPath هي سلسلة شهادات ، حيث يتم توقيع كل شهادة بواسطة الشهادة التالية في هذه السلسلة.
إنشاء مثيل لشهادة CertificateFactory
قبل أن تتمكن من إنشاء مثيلات Certificate ، يجب عليك إنشاء مثيل CertificateFactory . مثال:
 CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); 
ينشئ هذا المثال مثيلًا CertificateFactory ، قادرًا على إنشاء مثيل لشهادة X.509 (شهادة X509Certificate هي فئة فرعية من Certificate ).
إنشاء مثيل الشهادة
بإنشاء مثيل CertificateFactory ، يمكنك البدء في إنشاء مثيلات Certificate . يتم ذلك عن طريق استدعاء الأسلوب generateCertificate() . مثال على استدعاء الأسلوب generateCertificate() :
 InputStream certificateInputStream = new FileInputStream("my-x509-certificate.crt"); Certificate certificate = certificateFactory.generateCertificate(certificateInputStream); 
إنشاء مثيل لـ CertPath
CertificateFactory يمكن أيضًا إنشاء مثيل لـ CertPath . CertPath إنشاء مثيل CertPath عن طريق استدعاء الأسلوب CertPath generateCertPath() :
 InputStream certificateInputStream = new FileInputStream("my-x509-certificate-chain.crt"); CertPath certPath = certificateFactory.generateCertPath(certificateInputStream); 
Java CertPath (سلسلة الشهادات)
CertPath فئة CertPath ( java.security.cert.CertPath ) سلسلة من الشهادات (كائنات Certificate ) ، حيث تكون كل شهادة موقّعًا رقميًا للشهادة التالية في السلسلة. عادةً ما CertPath استخدام فئة CertPath للتحقق من شهادة الهوية ، جنبًا إلى جنب مع شهادات من المراجع المصدقة (CAs) التي وقعت الشهادة.
الحصول على مثيل من CertPath
عادة ، CertPath الحصول على مثيل CertPath من مصنع الشهادات ( CertificateFactory CertPathBuilder ).
getCertificates ()
بمجرد الحصول على مثيل CertPath ، يمكنك الحصول على مثيلات Certificate التي يتكون منها CertPath عن طريق استدعاء الأسلوب getCertificates() . فيما يلي مثال على الحصول على شهادات من مثيل CertPath :
 List<Certificate> certificates = certPath.getCertificates(); 
getType ()
إرجاع الأسلوب getType() سلسلة تشير إلى نوع الشهادات (على سبيل المثال ، X.509) المضمنة في مثيل CertPath هذا. فيما يلي مثال على الحصول على نوع CertPath عبر getType() :
 String type = certPath.getType();