SSL sertifikasının geçerli olup olmadığını kontrol etmek için komut dosyası


14

Birkaç SSL sertifikam var ve bir sertifikanın süresi dolduğunda bilgilendirilmek istiyorum.

Benim fikrim, her gün basit bir komut yürüten bir cronjob yaratmak.

opensslLinux'ta komutun uzak sunucunun sertifika bilgilerini görüntülemek için kullanılabileceğini biliyorum , yani:

openssl s_client -connect www.google.com:443

Ancak bu çıktıda son kullanma tarihini görmüyorum. Ayrıca, CTRL+ ile bu komutu sonlandırmak zorundayım c.

Bir komut dosyasının uzak sertifikasının sona ermesini bir komut dosyasından (tercihen kullanarak openssl) nasıl kontrol edebilirim ve bunu kullanıcı toplu işlemi olmadan otomatik olarak çalışacak şekilde "toplu iş modunda" nasıl yapabilirim ?


4
-servername www.google.comSNI özellikli sunucular için sunucu < /dev/null
adını

Eğer Red Hat / CentOS / Fedora koşuyorsanız , sertifikaya bir göz atın . Ayrıca standart depolardan da edinilebilir.
JRFerguson

Sertifika kontrolünü nagios veya icinga gibi bir izleme aracına eklerdim.
sebix

Yanıtlar:


18

Komutunuz şimdi örneğin bir http isteği bekler GET index.php. Bunun yerine şunu kullanın:

if true | openssl s_client -connect www.google.com:443 2>/dev/null | \
  openssl x509 -noout -checkend 0; then
  echo "Certificate is not expired"
else
  echo "Certificate is expired"
fi

  • true: sadece eof ile girilen herhangi bir girdi vermez, böylece bağlandıktan sonra openssl çıkar.
    • openssl ...: sorunuzdan gelen komut
    • 2>/dev/null: hata çıktısı yoksayılır.
  • openssl x509: X.509 Sertifika Veri Yönetimini etkinleştirir.
    • Bu, varsayılan olarak standart girişten okunur
    • -noout: Tüm sertifika çıktısını bastırır
    • -checkend 0: sertifikanın süresinin 0 saniye içinde dolup dolmadığını kontrol edin

-checkendTarih aritmetiği yaptığını bulduğum senaryodan çok daha kolay!
Auspex

7

Size sertifikayı getirir, ancak kodunu çözmez. Tarih istiyorsanız bu gerekli olacağından, görmüyorsunuz. Yani gerekli olan x509, sertifikanın kodunu çözmek için OpenSSL'nin uygulamasına bağlamanızdır :

openssl s_client -connect www.example.com:443 \
    -servername www.example.com </dev/null |\
    openssl x509 -in /dev/stdin -noout -text

Bu, geçerlilik tarihleri ​​de dahil olmak üzere stdout'ta tam kod çözülmüş sertifikayı verecektir.


3

Son kullanma tarihini kontrol etmeniz gerekiyorsa, bu blog gönderisi sayesinde , bu bilgileri tek bir çağrı ile ilgili diğer bilgilerle bulmanın bir yolunu buldunuz:

echo | openssl s_client -servername unix.stackexchange.com -connect unix.stackexchange.com:443 2>/dev/null | openssl x509 -noout -issuer -subject -dates

Çıktı, ihraççı, konu (sertifikanın verildiği tarih), verildiği tarih ve son olarak sona erme tarihini içerir :

issuer= /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA
subject= /C=US/ST=NY/L=New York/O=Stack Exchange, Inc./CN=*.stackexchange.com
notBefore=May 21 00:00:00 2016 GMT
notAfter=Aug 14 12:00:00 2019 GMT
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.