Peramban Anda menyimpan sertifikat perantara di singgahan, mengingat kunjungan sebelumnya, dan bersikap pemaaf. Ia alat terakhir untuk menguji, bukan yang pertama. Perintah-perintah ini bertanya langsung ke servernya dan tak ada yang disinggahkan.

1. Apakah ia terverifikasi sama sekali

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) dan sekurangnya dua sertifikat terdaftar. Selain itu berarti rantai yang tidak lengkap.

2. Nama-nama apa yang dinaunginya

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. Kapan ia kedaluwarsa

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

4. Setiap subdomain, bukan yang utama saja

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. Tanpa singgahan, sebagai orang asing

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

6. Protokol lama, yang seharusnya ditolak

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 dan 1.1 sudah ditarik, dan 3DES serta RC4 seharusnya tak berunding sama sekali. Kalau salah satunya tersambung, konfigurasinya sudah tua - setel ssl_protocols TLSv1.2 TLSv1.3; dan daftar sandi yang modern.

Lalu pantau kedaluwarsanya

0 8 * * * /usr/local/bin/check-cert.sh yourdomain.com 21   # warn 21 days out
Periksa sertifikatnya dari LUAR jaringan Anda juga. Tembok api atau proksi bisa menyajikan sertifikat yang berbeda di dalam, sehingga uji dari dalam bisa lolos sementara situs publiknya rusak.