Tarayıcınız önbelleğe alınmış ara sertifikalar tutar, önceki ziyaretleri hatırlar ve hoşgörülüdür. Sınamaya onunla başlanmaz, onunla bitirilir. Bu komutlar ise sunucuya doğrudan sorar ve hiçbir şey önbellekte değildir.

1. Zaten doğrulanıyor mu

openssl s_client -connect yourdomain.com:443 -servername yourdomain.com < /dev/null 2>/dev/null \
  | grep -E 'Verify return code|^ *[0-9]+ s:'

Verify return code: 0 (ok) ve listelenmiş en az iki sertifika. Bunun dışındaki her şey eksik bir zincirdir.

2. Hangi adları kapsıyor

openssl s_client -connect yourdomain.com:443 -servername yourdomain.com < /dev/null 2>/dev/null \
  | openssl x509 -noout -text | grep -A1 "Subject Alternative Name"

3. Ne zaman doluyor

echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null \
  | openssl x509 -noout -dates

4. Yalnızca ana adı değil, her alt alan adını

for h in www shop api mail staging; do
  printf '%-8s ' "$h"
  echo | openssl s_client -connect "$h.yourdomain.com:443" -servername "$h.yourdomain.com" 2>/dev/null \
    | openssl x509 -noout -enddate 2>/dev/null || echo "no certificate"
done

5. Önbelleksiz, bir yabancı olarak

curl -sS -o /dev/null -w '%{http_code} %{ssl_verify_result}\
' https://yourdomain.com/
# ssl_verify_result 0 is correct

6. Eski protokoller - ki reddedilmeleri gerekir

openssl s_client -connect yourdomain.com:443 -tls1_1 < /dev/null 2>&1 | tail -3
# a handshake failure here is the CORRECT result
TLS 1.0 ve 1.1 geri çekilmiştir; 3DES ve RC4 de anlaşmaya varmamalıdır. Bunlardan biri bağlanıyorsa yapılandırma eskidir - ssl_protocols TLSv1.2 TLSv1.3; ve çağdaş bir şifre listesi ayarlayın.

Sonra bitiş tarihini izleyin

0 8 * * * /usr/local/bin/check-cert.sh yourdomain.com 21   # warn 21 days out
Sertifikayı ağınızın DIŞINDAN da denetleyin. Bir güvenlik duvarı ya da bir vekil, içeride farklı bir sertifika sunabilir; dolayısıyla içeriden yapılan bir sınama geçerken herkese açık site bozuk olabilir.