it-swarm-id.com

Berapa nilai sebenarnya dari sidik jari sertifikat?

Dalam sertifikat digital x509 terdapat bagian "sidik jari sertifikat". Ini berisi md5, sha1 dan sha256. Bagaimana ini diperoleh, dan selama koneksi SSL, bagaimana nilai-nilai ini diperiksa?

34
Ashwin

Sidik jari, seperti yang ditampilkan di bagian Sidik Jari ketika melihat sertifikat dengan Firefox atau sidik jari di IE adalah hash dari seluruh sertifikat dalam bentuk DER.

Jika sertifikat Anda dalam format PEM, konversikan ke DER dengan OpenSSL:

openssl x509 -in cert.crt -outform DER -out cert.cer

Lalu, lakukan hash SHA-1 di atasnya (mis. Dengan sha1sum1):

sha1sum cert.cer

Ini harus menghasilkan hasil yang sama seperti apa yang Anda lihat di browser. Nilai-nilai ini bukan bagian dari sertifikat, melainkan dihitung dari sertifikat.

Salah satu aplikasi dari sidik jari ini adalah untuk memvalidasi sertifikat EV. Dalam hal ini, sidik jari SHA-1 dari sertifikat root EV CA kode keras di browser (perhatikan bahwa (a) itu adalah sidik jari dari sertifikat root dan (b) harus cocok dengan tepatnya anchor trust yang dikirimkan dengan versi browser yang dikompilasi dengan nilai-nilai itu).

Terlepas dari ini, sidik jari ini sebagian besar digunakan untuk mengidentifikasi sertifikat (untuk mengaturnya).

Ini adalah kunci publik aktual yang digunakan untuk verifikasi sertifikat lain dalam rantai. Intisari yang digunakan untuk menandatangani sertifikat sebenarnya tidak ada dalam sertifikat (hanya tanda tangan yang dihasilkan). Lihat struktur sertifikat :

   Certificate  ::=  SEQUENCE  {
        tbsCertificate       TBSCertificate,
        signatureAlgorithm   AlgorithmIdentifier,
        signatureValue       BIT STRING  }

   TBSCertificate  ::=  SEQUENCE  {
        version         [0]  EXPLICIT Version DEFAULT v1,
        serialNumber         CertificateSerialNumber,
        signature            AlgorithmIdentifier,
        issuer               Name,
        validity             Validity,
        subject              Name,
        ...

Dalam hal ini, nilai tanda tangan dihitung dari DER yang disandikan tbsCertificate (yaitu isinya). Ketika algoritma tanda tangan adalah SHA1 dengan RSA (misalnya), intisari SHA-1 dihitung dan kemudian ditandatangani menggunakan kunci pribadi RSA dari penerbit. Intisari SHA-1 ini tidak ada hubungannya dengan sidik jari yang ditunjukkan oleh openssl x509 -fingerprint atau di dalam browser, karena hanya di bagian tbsCertificate.

Ada juga beberapa ekstensi yang tidak terkait yang dapat menggunakan intisari, dari kunci publik kali ini: Pengidentifikasi Kunci Subjek dan Pengidentifikasi Kunci Otoritas . Ini adalah opsional (dan dalam konten TBS sertifikat).

39
Bruno