Halo, Habr! Saya mempersembahkan untuk Anda terjemahan artikel terakhir "Java Certificate" oleh Jakob Jenkov dari serangkaian artikel untuk pemula yang ingin mempelajari dasar-dasar kriptografi di Jawa.
Daftar isi:
- Kriptografi Jawa
- Java cipher
- Pesan pesan
- Mac
- Tanda tangan
- Keypair
- Keygenerator
- KeyPairGenerator
- Keystore
- Keytool
- Sertifikat
- Pabrik Sertifikat
- CertPath
Sertifikat Java
Kelas sertifikat ( java.security.cert.Certificate ) adalah sertifikat yang menyatakan bahwa suatu entitas milik, misalnya, seorang pengguna. Sebuah instance dari kelas sertifikat berisi nama dan informasi lain tentang objek yang diidentifikasi, serta, mungkin, tanda tangan digital dari otoritas sertifikasi (CA). Kelas Certificate
adalah kelas abstrak, oleh karena itu, Anda dapat menggunakan Certificate
sebagai jenis variabel, dan variabel Anda akan selalu mengarah ke subkelas. Kelas ini memiliki satu subkelas - X509Certificate
, yang mewakili sertifikat X.509, yang digunakan sebagai sertifikat dalam protokol HTTPS dan TLS.
Memperoleh Mesin Virtual Sertifikat
Anda bisa mendapatkan contoh sertifikat dengan cara berikut:
- Dari
CertificateFactory
. - Dari keystore .
Lihat dua panduan ini untuk informasi lebih lanjut tentang cara mendapatkan instance sertifikat.
getEncoded ()
Metode getEncoded()
dari sertifikat mengembalikan versi yang disandikan dari sertifikat sebagai array byte. Misalnya, jika sertifikat tersebut adalah sertifikat X509, array byte yang dikembalikan akan berisi versi yang disandikan X.590 dari instance sertifikat (ASN.1 DER). Berikut adalah contoh menggunakan metode getEncoded()
:
byte[] encodedCertificate = certificate.getEncoded();
getPublicKey ()
Metode sertifikat getPublicKey()
mengembalikan kunci publik dari instance sertifikat ini. Berikut adalah contoh metode getPublicKey()
:
PublicKey certificatePublicKey = certificate.getPublicKey();
getType ()
Metode getType()
mengembalikan jenis instance sertifikat. Contoh getType()
:
String certificateType = certificate.getType();
verifikasi ()
Kelas sertifikat berisi tiga metode verify()
. Metode ini dapat digunakan untuk memverifikasi bahwa sertifikat memang ditandatangani dengan kunci pribadi yang sesuai dengan kunci publik yang diharapkan. Berikut ini contoh verifikasi sertifikat:
Metode verify()
tidak mengembalikan nilai. Jika tes gagal, InvalidKeyException
akan InvalidKeyException
. Jika tidak ada pengecualian yang dilemparkan, instance sertifikat dapat dianggap diverifikasi.
Java CertificateFactory (Pabrik Sertifikat
Kelas CertificateFactory
( java.security.cert.CertificateFactory ) mampu membuat instance sertifikat ( Certificate
) dari data biner untuk sertifikat yang disandikan X.509 (ASN.1 DER). CertificateFactory
juga dapat membuat instance CertPath
. CertPath
adalah rantai sertifikat, tempat setiap sertifikat ditandatangani oleh sertifikat berikutnya dalam rantai ini.
Membuat instance CertificateFactory
Sebelum Anda dapat membuat instance Certificate
, Anda harus membuat instance CertificateFactory
. Contoh:
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
Contoh ini menciptakan instance CertificateFactory
, yang mampu membuat instantiasi sertifikat X.509 ( X509Certificate
adalah subkelas Certificate
).
Buat Instance Sertifikat
Dengan membuat instance CertificateFactory
, Anda dapat mulai membuat instance Certificate
. Ini dilakukan dengan memanggil metode generateCertificate()
. Contoh memanggil metode generateCertificate()
:
InputStream certificateInputStream = new FileInputStream("my-x509-certificate.crt"); Certificate certificate = certificateFactory.generateCertificate(certificateInputStream);
Membuat instance dari CertPath
CertificateFactory
juga dapat membuat CertPath
. Contoh CertPath
dibuat dengan memanggil metode generateCertPath()
:
InputStream certificateInputStream = new FileInputStream("my-x509-certificate-chain.crt"); CertPath certPath = certificateFactory.generateCertPath(certificateInputStream);
Java CertPath (Rantai Sertifikat)
Kelas CertPath
( java.security.cert.CertPath ) mewakili rantai sertifikat (objek Certificate
), di mana setiap sertifikat adalah penandatangan digital dari sertifikat berikutnya dalam rantai. Kelas CertPath
biasanya digunakan untuk memverifikasi sertifikat identitas, bersama dengan sertifikat dari otoritas sertifikasi (CA) yang telah menandatangani sertifikat.
Mendapatkan instance dari CertPath
Biasanya, instance CertPath
diperoleh dari pabrik sertifikat ( CertificateFactory CertPathBuilder
).
getCertificates ()
Setelah Anda mendapatkan instance CertPath
, Anda bisa mendapatkan instance Certificate
yang terdiri dari CertPath
dengan memanggil metode getCertificates()
. Berikut adalah contoh mendapatkan sertifikat dari instance CertPath
:
List<Certificate> certificates = certPath.getCertificates();
getType ()
Metode getType()
mengembalikan string yang menunjukkan jenis sertifikat apa (misalnya, X.509) yang terkandung dalam instance CertPath
ini. Berikut ini adalah contoh mendapatkan tipe CertPath
melalui metode getType()
:
String type = certPath.getType();