📅  最后修改于: 2023-12-03 15:18:07.907000             🧑  作者: Mango
当使用SSL/TLS连接到其他系统时,我们需要确保所使用的证书没有过期。 OpenSSL是一种流行的开源加密库,可以用来检查证书是否过期。
以下是使用 OpenSSL 命令行工具检查证书过期的步骤:
$ openssl s_client -connect example.com:443
其中,example.com 替换为实际要检查的域名或IP地址。
---
Certificate chain
0 s:/C=US/ST=California/L=San Francisco/O=GitHub, Inc./CN=*.github.com
i:/C=US/O=DigiCert Inc/CN=DigiCert SHA2 High Assurance Server CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIFhTCCA22gAwIBAgIQC+QW29y1O/hYsV7z+eCmCTANBgkqhkiG9w0BAQsFADB1
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQsIEluYy4xPjA8BgNVBAMT
......
3. 可以查看“Not After”字段的值,即证书过期日期。
Not After : Sep 29 12:00:00 2022 GMT
上述命令可与其他命令行工具结合使用,以自动化检查证书过期。
在 python 中,检查证书过期的过程类似:
```python
import ssl
import socket
hostname = 'example.com'
context = ssl.create_default_context()
with socket.create_connection((hostname, 443)) as sock:
with context.wrap_socket(sock, server_hostname=hostname) as ssock:
cert = ssock.getpeercert()
expire_date = cert['notAfter']
print(f"{'Certificate Expiry:':<25}{expire_date}")
以上python代码中,创造了一个安全上下文,使用Socket创建了一个连接,并通过 Sock 连接 SSL/TLS。 然后,从SSL/TLS握手中获取证书信息,然后读取证书的有效期字段并输出结果。
以上介绍了如何使用 OpenSSL 命令行工具和Python脚本来检查证书过期。 记住,对于生产环境,应使用更安全的方法来检查证书,如使用 CA 机构颁发的证书来保障证书的有效性。