在  Apache  中,并没有一个直接命令可以查看“当前加载”的证书。更准确的做法是,去查看  Apache  配置文件中指定的证书文件,然后使用  `openssl`  命令来读取它的有效期。

这里有几种常用方法,你可以根据情况选择:

方法一:直接检查证书文件(最常用)

这是最直接的方法,前提是你能找到  Apache  配置中指向的证书文件。

1.    找到证书文件:在  Apache  的配置文件(通常是  `httpd.conf`  或  `ssl.conf`)中,查找  `SSLCertificateFile`  指令,它会指明证书文件的路径。

        ```bash

        grep  -i  "SSLCertificateFile"  /path/to/your/apache/conf/ssl.conf

        ```

        假设找到的路径是  `/etc/ssl/certs/your_cert.pem`。

2.    使用  `openssl`  查看有效期:

        ```bash

        openssl  x509  -in  /etc/ssl/certs/your_cert.pem  -noout  -dates

        ```

        命令解释:

              `openssl  x509`:调用  OpenSSL  的  X.509  证书处理工具。

              `-in  /path/to/cert.pem`:指定证书文件路径。

              `-noout`:不输出证书的编码内容。

              `-dates`:只显示证书的起始和结束有效期。

        输出示例:

        ```

        notBefore=May  15  00:00:00  2024  GMT

        notAfter=May  15  23:59:59  2025  GMT

        ```

        这里  `notAfter`  就是证书的过期时间。

        如果想更简洁地只看过期时间,可以用  `-enddate`  参数:

        ```bash

        openssl  x509  -enddate  -noout  -in  /etc/ssl/certs/your_cert.pem

        ```

方法二:直接查询正在运行的网站(无需找文件)

如果你不确定证书文件的位置,或者想直接验证服务器当前提供的证书,可以用这个方法。它会直接与服务器进行  SSL  握手,获取并显示其证书信息。

```bash

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

```

命令解释:

      `echo  |`:向  `openssl  s_client`  发送一个空输入,以建立连接后立即关闭。

      `openssl  s_client  -connect  your-domain.com:443`:建立一个到目标域名  443  端口的  SSL  连接。

      `-servername  your-domain.com`:重要,用于支持  SNI(Server  Name  Indication),确保当服务器托管多个网站时,你能获取到正确域名的证书。

      `2>/dev/null`:屏蔽掉连接过程中的调试信息。

      `|  openssl  x509  -noout  -dates`:将获取的证书信息通过管道传递给  `openssl`  来提取有效期。

方法三:如果你用  Let's  Encrypt  自动续期

如果你的证书是通过  Certbot  (Let's  Encrypt  客户端)  管理的,可以用更简单的命令查看所有证书的到期情况:

```bash

certbot  certificates

```

这个命令会清晰列出所有由  Certbot  管理的证书及其到期日。

补充提示:

      检查证书时,也可以顺便查看证书的颁发者(Issuer)和主题(Subject)等信息,确认是否正确。

      如果需要查看证书的完整详细信息,可以用  `openssl  x509  -in  certificate.crt  -text  -noout`。