Tinjau sertifikat SSL untuk pencabutan

Saat ini, salah satu aspek terpenting dari transfer informasi yang aman adalah enkripsi. Data yang dikirimkan dari klien ke server dienkripsi menggunakan sertifikat SSL. Sertifikat adalah kunci publik yang disertifikasi oleh otoritas sertifikasi.

Semua sertifikat SSL, sebagai suatu peraturan, dikeluarkan untuk periode terbatas, setelah itu habis masa berlakunya dan harus diterbitkan kembali. Namun, ada kalanya sertifikat dapat dicabut sebelum tanggal kedaluwarsa. Ada banyak alasan untuk mencabut sertifikat SSL, yang paling umum adalah bahwa kunci pribadi hilang atau dikompromikan, data pendaftaran perusahaan berubah, dll.

Ada 2 cara alternatif untuk memeriksa apakah sertifikat SSL ada dalam daftar pencabutan:

  • CRL (Daftar Pencabutan Sertifikat) - memeriksa keberadaan nomor seri sertifikat dalam daftar pencabutan.
  • OCSP (Online Certificate Status Protocol) - sertifikat dikirim ke server khusus, di mana statusnya diperiksa.

Mari kita lihat kedua metode ini secara lebih rinci menggunakan konsol Ubuntu. Dan sebagai contoh, mari kita periksa sertifikat untuk domain habr.com untuk ditinjau.

CRL


Unduh sertifikat domain yang kami minati:

echo -n | openssl s_client -connect habr.com:443 -servername habr.com 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/habr.com.crt 

Terima kasih kepada legioner untuk petunjuk untuk menambahkan parameter -servername - perlu untuk pemilihan sertifikat yang benar jika ada beberapa (SNI) yang diinstal pada alamat IP yang sama.

Kami melihat detail sertifikat:

 openssl x509 -noout -text -in /tmp/habr.com.crt 

Di sini kita tertarik pada bagian "Poin Distribusi CRL X509v3" item "Nama Lengkap".

Unduh daftar CLR dari tautan ini:

 wget http://crl.comodoca.com/COMODORSADomainValidationSecureServerCA.crl 

Kami memilih nomor seri sertifikat:

 openssl x509 -in /tmp/habr.com.crt -noout -serial 

Kami melihat apakah nomor ini ada dalam daftar CRL:

 openssl crl -inform DER -text -in COMODORSADomainValidationSecureServerCA.crl | grep "90E58B0601C3AD98F07AEE092041C437" 

Jika tidak ada yang ditemukan, maka sertifikat tidak dicabut.

OCSP


Kami akan menampilkan sertifikat domain yang menarik bagi kami dan rantai sertifikat perantara:

 echo -n | openssl s_client -connect habr.com:443 -showcerts 

Simpan sertifikat domain dan sertifikat perantara (kode di antara baris ----- BEGIN CERTIFICATE ----- dan ----- END CERTIFICATE -----) ke dalam file:

 /tmp/habr.com.crt /tmp/intermediate.crt 

Tentukan server OCSP:

 openssl x509 -in /tmp/habr.com.crt -noout -ocsp_uri 

Kami akan mengirimkan permintaan ke server OCSP untuk memeriksa sertifikat untuk pencabutan:

 openssl ocsp -url http://ocsp.comodoca.com -issuer /tmp/intermediate.crt -cert /tmp/habr.com.crt -text 

Jika semuanya ditentukan dengan benar, maka server OCSP harus mengembalikan informasi pada sertifikat.

Inilah baris terakhir yang menarik:

 Response verify OK /tmp/habr.com.crt: good 

Tidak adanya sertifikat dalam daftar yang dicabut ditunjukkan oleh nilai "baik", jika sertifikat dicabut, nilainya akan "dicabut".

Otomasi


Memeriksa sertifikat SSL secara manual untuk pencabutan tidak selalu mudah, sehingga proses verifikasi dapat dilakukan secara otomatis.

Untuk melakukan ini, kami mengambil skrip ssl-check-revoc.sh yang sudah jadi dengan Github , yang memeriksa sertifikat menggunakan metode CRL:

 wget https://raw.githubusercontent.com/o-pod/security/master/ssl-check-revoc.sh 

Selanjutnya, buat skrip dapat dieksekusi:

 chmod a+x ssl-check-revoc.sh 

Sekarang Anda dapat memeriksa sertifikat yang sudah diinstal untuk domain dan yang disimpan secara lokal dalam file (opsi -f):

 ./ssl-check-revoc.sh habr.com -v 

Zabbix


Skrip ssl-check-revoc.sh dapat memeriksa sertifikat tidak hanya dari konsol, tetapi juga cukup cocok sebagai pemeriksa untuk Zabbix, oleh karena itu semua pekerjaan kotor melacak sertifikat yang masuk ke daftar pencabutan dapat dipercayakan ke sistem pemantauan.

Kita masuk ke konfigurasi Zabbix /etc/zabbix/zabbix_server.conf dan lihat di mana skrip untuk pemeriksaan eksternal berada:

 ExternalScripts=/etc/zabbix/externalscripts 

Kami menyalin skrip kami ke direktori ini dan memulai ulang Zabbix:

 sudo cp ssl-check-revoc.sh /etc/zabbix/externalscripts/ sudo systemctl restart zabbix-server 

Kami masuk ke antarmuka web dan membuat templat (Konfigurasi >> Templat >> Buat templat). Untuk nama templat, tentukan โ€œMemeriksa SSL Templatโ€. Kemudian, di dalam templat, buat item "Sertifikat SSL dalam Daftar Pencabutan" (Item), tentukan "ssl-check-revoc.sh [{HOST.NAME}]" sebagai kunci, dengan jenis centangnya adalah "Pemeriksaan eksternal". Interval inspeksi dapat diatur sesuai kebijaksanaan Anda, tergantung pada kekritisan proyek.



Anda juga membutuhkan dua pemicu:

1. Untuk memberi sinyal pencabutan sertifikat, "Sertifikat untuk domain {HOST.NAME} ada dalam daftar pencabutan"
Ekspresi: "{Memeriksa SSL Kustom Template: ssl-check-revoc.sh [{HOST.NAME}]. Terakhir ()} = 1"



2. Untuk memberi sinyal kesalahan jika terjadi kesalahan (misalnya, ada masalah dengan server CLR, dll.) "Kesalahan untuk memeriksa sertifikat untuk domain {HOST.NAME}"
Ekspresi: "{Memeriksa SSL Kustom Template: ssl-check-revoc.sh [{HOST.NAME}]. Terakhir ()} = 2"



Jangan lupa di tindakan (Konfigurasi >> Tindakan) untuk mengonfigurasi metode pemberitahuan jika terjadi pemicu.

Sekarang tinggal membuat host, sertifikat yang akan kami periksa secara teratur (Konfigurasi >> Host >> Buat host). Pada tab Templat, tautkan templat Memeriksa SSL templat kami.



Dan itu dia! Anda dapat tidur nyenyak: jika sertifikat SSL domain Anda dengan alasan apa pun termasuk dalam daftar yang dicabut, Zabbix akan segera memberi tahu Anda.

Source: https://habr.com/ru/post/id417521/


All Articles