如何获取 mongod 实例的公共证书信息

如何获取 mongod 实例的公共证书信息

在使用 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

然后将新获得的fullchainprivkey文件连接到一个 pem 文件,并将其保存在 mongodb 期望的位置。执行此操作的脚本可在此处找到:https://gist.github.com/zabirauf/bda54230ca1335c1cf00e3adba682ee7

相关内容