文档中心
SSL璇佷功鍏挜鑾峰彇鍏ㄦ敾鐣ヤ粠鍘熺悊鍒板疄鎴樻紨绀?txt
时间 : 2025-09-27 16:42:13浏览量 : 2

关键词:SSL证书公钥如何获取
作为网站安全的"身份证",SSL证书中的公钥就像一把公开的保险箱钥匙。本文将用最通俗的语言,结合渗透测试和运维场景,手把手教你5种实战中获取SSL证书公钥的方法。
一、为什么需要获取SSL证书公钥?
假设你正在做安全评估:
1. 验证证书有效性:检查是否使用弱加密算法(如已淘汰的RSA-1024)
2. HTTPS中间人检测:对比不同网络路径获取的公钥是否一致
3. 证书指纹比对:确认CDN节点是否都部署了正确证书
> 真实案例:2025年某银行APP被曝出测试环境证书误用到生产环境,通过公钥比对即可快速发现这类问题。
二、5种实战获取方法详解
方法1:浏览器直接查看(最简方式)
1. Chrome点击地址栏锁图标 → "连接是安全的" → "证书有效"
2. 在"详细信息"标签页 → 选择"公钥"字段
3. 典型显示格式(以RSA为例):
```plaintext
算法: RSA (2048位)
模数: A9F3...C23B
指数: 65537
```
方法2:OpenSSL命令行(运维必备)
```bash
openssl s_client -connect example.com:443 -servername example.com | openssl x509 -pubkey -noout
```
输出示例:
--BEGIN PUBLIC KEY--
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz6OWZft5M6RJhnFDm42P
...
--END PUBLIC KEY--
方法3:Python代码自动获取(适合批量检查)
```python
import ssl, socket
cert = ssl.get_server_certificate(('example.com', 443))
from OpenSSL import crypto
x509 = crypto.load_certificate(crypto.FILETYPE_PEM, cert)
pubkey = x509.get_pubkey()
print(crypto.dump_publickey(crypto.FILETYPE_PEM, pubkey).decode())
方法4:Wireshark抓包提取(网络分析场景)
1. 捕获Client Hello报文后的Server Hello报文
2. 展开TLS协议层 → "Certificate"字段
3. 右键 → "Export Packet Bytes"保存为DER格式文件
4. 用OpenSSL转换:`openssl x509 -inform der -in cert.der -pubkey`
方法5:第三方API查询(如Censys)
curl https://censys.io/api/v1/view/certificates/SHA-256指纹?fields=parsed.public_key
适合大规模资产测绘时使用。
三、关键安全注意事项
1. 有效期验证:即使公钥正确,也要检查`notAfter`时间戳
```bash
openssl x509 -noout -dates -in certificate.pem
2. 密钥强度审计(重点检查项):
- RSA密钥应≥2048位(PCI DSS强制要求)
- ECC密钥应≥256位
3. 常见风险场景:
- 同一私钥多域名使用(可通过公钥反向查询发现)
- 测试证书泄露(公开搜索引擎可能索引到开发环境证书)
四、高级技巧:公钥指纹计算
安全人员常用SHA-256指纹做唯一标识:
openssl x509 -in cert.pem -noout -pubkey | openssl pkey -pubin -outform der | openssl dgst -sha256
输出类似:
SHA256(stdin)= a5:d9:63:...:b0:21
这就是证书的唯一指纹
掌握这些方法,你就能像专业安全工程师一样全面审计网站的SSL/TLS配置。实际工作中建议将上述命令封装成自动化脚本,定期检查关键业务系统的证书状态。
TAG:ssl证书公钥如何获取,ssl密钥,ssl证书配置教程,ssl证书怎么获取,https的ssl证书