为什么需要本地验证证书域名?
当你在以下场景时:
- 收到 CA 新签发的证书文件(未部署)
- 接手旧服务器需确认证书范围
- 审计通配符证书是否包含
app.yourdomain.com
浏览器在线工具无法直接解析本地文件,OpenSSL 命令行是最高效的解决方案。
准备工作:确认证书格式
检查证书文件类型(通常为以下两种):
- PEM 格式(crt格式相同):文本格式,以
-----BEGIN CERTIFICATE-----
开头 - DER 格式:二进制格式,不可直接阅读
⚠️ 若证书是 DER 格式,需先转换为 PEM:
openssl x509 -inform der -in certificate.der -out certificate.pem
核心操作:解析域名范围
命令模板(适用于 PEM 证书)
openssl x509 -noout -text -in 你的证书文件.crt | grep -A 1 "Subject Alternative Name"
参数说明:
-noout
:不输出证书原始编码-text
:以可读文本显示内容| grep ...
:过滤出关键字段(SAN 列表)
完整操作示例
假设证书文件为 ssl_certificate.crt
:
# 执行命令
openssl x509 -noout -text -in ssl_certificate.crt
# 关键输出(重点关注以下部分):
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:example.com,
DNS:*.app.example.com,
DNS:shop.example.org
X509v3 Key Usage: critical
Digital Signature, Key Encipherment
输出解析:
- 域名列表:
example.com
:根域名*.app.example.com
:通配符(覆盖dev.app.example.com
等单级子域)shop.example.org
:跨域名支持
- 通配符规则:
*.app.example.com
❌ 不匹配:app.example.com
(需单独声明)beta.dev.app.example.com
(多级子域)
进阶技巧:精确提取域名
1. 提取所有 SAN 域名
openssl x509 -noout -text -in ssl_certificate.crt | grep -oP 'DNS:\K[^,]+'
输出:
example.com
*.app.example.com
shop.example.org
2. 检查是否包含特定域名(如 api.example.com
)
openssl x509 -noout -text -in ssl_certificate.crt | grep -q "DNS:api.example.com" && echo "包含" || echo "不包含"
3. 验证通配符覆盖范围
# 检查是否支持 dev.app.example.com
openssl x509 -noout -text -in ssl_certificate.crt | grep -q "DNS:\*\.app\.example\.com" && echo "支持子域" || echo "不支持"
常见问题排查
❌ 问题:命令报错 unable to load certificate
原因:
- 证书文件路径错误
- 格式非 PEM(DER 需先转换)
- 文件内容被截断
解决方案:
# 检查文件完整性
head -n 1 your_cert.crt # 应显示 -----BEGIN CERTIFICATE-----
❌ 问题:输出中无 SAN 字段
原因:
- 旧版证书可能只使用 Common Name (CN) 字段
应急检查:
openssl x509 -noout -subject -in ssl_certificate.crt
# 输出示例:subject=CN = legacy-domain.com
⚠️ 警告:现代浏览器(Chrome/Firefox)已忽略 CN 字段,此类证书需重新签发支持 SAN!
附录:OpenSSL 其他实用命令
命令 | 作用 |
---|---|
openssl x509 -dates -noout -in cert.crt |
检查有效期 |
openssl x509 -issuer -noout -in cert.crt |
查看颁发机构 |
openssl verify -CAfile ca-bundle.crt your_cert.crt |
验证信任链 |
文章来源:
鸿辰
版权声明:本网站可能会转载或引用其他来源的文章、图片、数据等信息。对于这些转载内容,版权归原作者所有。本站尊重原作者的劳动成果,并在可能的情况下注明来源和作者。如有任何版权问题,请及时联系,收到后将第一时间处理。