插件窝 干货文章 OpenSSL在Linux上如何进行数字证书验证

OpenSSL在Linux上如何进行数字证书验证

证书 OpenSSL 验证 certificate 418    来源:    2025-05-08

OpenSSL在Linux上进行数字证书验证的完整指南

OpenSSL是一个强大的开源工具包,用于处理SSL/TLS协议和加密相关任务。以下是使用OpenSSL在Linux系统上验证数字证书的详细方法。

基本证书验证

1. 查看证书基本信息

openssl x509 -in certificate.crt -text -noout

这会显示证书的所有详细信息,包括颁发者、有效期、主题等。

2. 检查证书有效期

openssl x509 -in certificate.crt -dates -noout

3. 验证证书链

openssl verify -CAfile ca-bundle.crt certificate.crt

其中ca-bundle.crt是包含信任的CA证书的文件。

高级验证方法

1. 验证证书链完整性

openssl verify -CAfile root-ca.crt -untrusted intermediate.crt end-entity.crt
  • root-ca.crt: 根CA证书
  • intermediate.crt: 中间CA证书
  • end-entity.crt: 要验证的终端实体证书

2. 检查证书吊销状态(OCSP)

openssl ocsp -issuer issuer.crt -cert certificate.crt -url http://ocsp.example.com -text

3. CRL检查(证书吊销列表)

openssl crl -in crl.pem -text -noout
openssl verify -CRLfile crl.pem -CAfile ca-bundle.crt certificate.crt

服务器证书验证

1. 验证远程服务器证书

openssl s_client -connect example.com:443 -showcerts </dev/null 2>/dev/null | openssl x509 -text -noout

2. 验证服务器证书链

openssl s_client -connect example.com:443 -showcerts </dev/null | openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt

证书格式转换

有时需要转换证书格式以便验证:

PEM转DER

openssl x509 -in certificate.pem -outform der -out certificate.der

DER转PEM

openssl x509 -inform der -in certificate.der -out certificate.pem

常见问题排查

  1. 证书链不完整

    error 20 at 0 depth lookup: unable to get local issuer certificate
    

    解决方案:确保包含所有中间证书

  2. 证书已过期

    error 10 at 0 depth lookup: certificate has expired
    

    解决方案:获取新的有效证书

  3. 主机名不匹配

    error 62 at 0 depth lookup: hostname mismatch
    

    解决方案:确保证书的CN或SAN包含正确的主机名

自动化验证脚本示例

#!/bin/bash

CERT=$1
CA_BUNDLE="/etc/ssl/certs/ca-certificates.crt"

echo "验证证书: $CERT"
echo "基本证书信息:"
openssl x509 -in $CERT -text -noout | grep -E "Subject:|Issuer:|Not Before|Not After"

echo -e "\n验证证书链:"
openssl verify -CAfile $CA_BUNDLE $CERT

echo -e "\n证书有效期:"
openssl x509 -in $CERT -dates -noout

使用方式:./verify_cert.sh your_certificate.crt

通过以上方法,您可以全面验证数字证书的有效性、完整性和可信度。