مرحبا يا هبر! أقدم لكم ترجمة المقال الأخير "شهادة جافا" لجاكوب جينكوف من سلسلة من المقالات للمبتدئين الذين يرغبون في تعلم أساسيات التشفير في جافا.
جدول المحتويات:
- تشفير جافا
- تشفير جافا
- 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();