📜  openssl 检查证书过期 (1)

📅  最后修改于: 2023-12-03 15:18:07.907000             🧑  作者: Mango

检查证书过期

当使用SSL/TLS连接到其他系统时,我们需要确保所使用的证书没有过期。 OpenSSL是一种流行的开源加密库,可以用来检查证书是否过期。

以下是使用 OpenSSL 命令行工具检查证书过期的步骤:

  1. 打开终端并输入以下命令:
$ openssl s_client -connect example.com:443

其中,example.com 替换为实际要检查的域名或IP地址。

  1. 连接成功后,命令行中会显示服务器证书的相关信息,包括证书的有效期。
---
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”字段的值,即证书过期日期。

Server certificate -----BEGIN CERTIFICATE----- MIIFhTCCA22gAwIBAgIQC+QW29y1O/hYsV7z+eCmCTANBgkqhkiG9w0BAQsFADB1 ...
    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 机构颁发的证书来保障证书的有效性。