OpenSSL是一个强大的开源工具包,用于处理SSL/TLS协议和加密相关任务。以下是使用OpenSSL在Linux系统上验证数字证书的详细方法。
openssl x509 -in certificate.crt -text -noout
这会显示证书的所有详细信息,包括颁发者、有效期、主题等。
openssl x509 -in certificate.crt -dates -noout
openssl verify -CAfile ca-bundle.crt certificate.crt
其中ca-bundle.crt
是包含信任的CA证书的文件。
openssl verify -CAfile root-ca.crt -untrusted intermediate.crt end-entity.crt
root-ca.crt
: 根CA证书intermediate.crt
: 中间CA证书end-entity.crt
: 要验证的终端实体证书openssl ocsp -issuer issuer.crt -cert certificate.crt -url http://ocsp.example.com -text
openssl crl -in crl.pem -text -noout
openssl verify -CRLfile crl.pem -CAfile ca-bundle.crt certificate.crt
openssl s_client -connect example.com:443 -showcerts </dev/null 2>/dev/null | openssl x509 -text -noout
openssl s_client -connect example.com:443 -showcerts </dev/null | openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt
有时需要转换证书格式以便验证:
openssl x509 -in certificate.pem -outform der -out certificate.der
openssl x509 -inform der -in certificate.der -out certificate.pem
证书链不完整:
error 20 at 0 depth lookup: unable to get local issuer certificate
解决方案:确保包含所有中间证书
证书已过期:
error 10 at 0 depth lookup: certificate has expired
解决方案:获取新的有效证书
主机名不匹配:
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
通过以上方法,您可以全面验证数字证书的有效性、完整性和可信度。