在使用 MongoDB 实例的 Let's Encrypt 自动更新证书的过程中,我想知道该实例正在提供的具体证书。
有没有办法获取例如到期日期或任何其他信息?
答案1
有一个小 python3 程序这正是你所要求的(使用 OpenSSL):
$ certcheck www.example.com:443 serverfault.com
Host (SNI) | Port | Crt Issuer | Delta to expiry | Status
-----------------+------+---------------+---------------------------+--------
www.example.com | 443 | DigiCert Inc | 213 days, 23:50:03.267476 | VALID
serverfault.com | 443 | Let's Encrypt | 80 days, 13:04:26.637472 | VALID
请注意,certcheck
接受要检查的主机列表,您需要使用 OpenSSL 编写脚本。
仅使用 OpenSSL、sed 和 bash:
$ openssl s_client \
-servername www.example.com \
-connect www.example.com:443 2>&1 < /dev/null \
| sed -nre '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' \
| openssl x509 -in - -enddate -noout
notAfter=Dec 25 23:59:59 2021 GMT
从man x509
:
-enddate
Prints out the expiry date of the certificate, that is the notAfter date.
-dates
Prints out the start and expiry dates of a certificate.
-checkend arg
Checks if the certificate expires within the next arg seconds and exits nonzero if yes it will expire or zero if not.
www.example.com:443
用。。。来代替<your_mongodb_host>:27015
。
答案2
您可以通过浏览器轻松检查实例的证书详细信息。请查看本文以获取更多参考 检查浏览器中的 SSL 证书
您还可以使用此命令从客户端检查此 mongodb 实例所提供的证书:
openssl s_client-showcerts-connect实例名称:端口号
答案3
您可以使用以下命令获取所有 Let's Encrypt 证书的列表,包括其到期日期
certbot certificates
您还可以尝试使用以下方式编写自动续订脚本
certbot renew
然后将新获得的fullchain
和privkey
文件连接到一个 pem 文件,并将其保存在 mongodb 期望的位置。执行此操作的脚本可在此处找到:https://gist.github.com/zabirauf/bda54230ca1335c1cf00e3adba682ee7