发布于2026-07-11 阅读(0)
扫一扫,手机访问
在Ja va生态中,标准的`HostnameVerifier`接口确实好用——但它的`verify`方法强制要求传入`SSLSession`,这也就意味着,如果你只是想离线检查一份证书(比如做证书预检、审计,或者自定义信任链验证),这条路就走不通了。这时候,手头只有一个`X509Certificate`对象和待验证的主机名(比方说`"api.example.com"`),就得自己动手解析证书里的Subject Alternative Name(SAN)扩展和Common Name(CN)字段,并且按照RFC 6125的规则来做匹配。
下面就把这个实现过程拆开来讲,附带完整的示例代码。
✅ **步骤一:把目标主机名整理好**
首先,确保主机名格式规整——统一转小写(DNS不区分大小写),去掉端口号和协议前缀:
```ja va
String host = "api.example.com".toLowerCase();
```
✅ **步骤二:从证书里提取Subject Alternative Names(SAN)**
SAN已经是现代证书的标配,也是验证主机名时的首选字段。它支持DNS名称、IP地址等多种类型,对应的OID是2.5.29.17。解析方式如下:
```ja va
Collection
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8