【发布时间】:2017-09-12 11:08:33
【问题描述】:
我创建了一个自签名 SSL 证书用于测试目的。当我从浏览器打开 https://localhost 时它工作正常,现在我正在遵循 this 指南在 Android 中添加我自己的 TrustManager。
当我尝试使用我机器的IP address 连接到服务器时,它会抛出
javax.net.ssl.SSLPeerUnverifiedException: Hostname 192.168.10.3 not verified:
虽然我能够使用HostnameVerifier 解决它
HostnameVerifier hostnameVerifier = new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
HostnameVerifier hv = HttpsURLConnection.getDefaultHostnameVerifier();
return hostname.trim().equals("192.168.10.3") || hv.verify(hostname, session);
}
};
但我仍然想知道 我在这里遗漏了什么? 我是否仍然使用自定义 HostnameVerifier 正确配置它?这是我的输出
证书
I/System.out: ca=C=PK, L=Islamabad, O=Self, OID.1.2.840.113549.1.9.1=#16176D616C6C617564696E71617A6940676D61696C2E636F6D, CN=https://192.168.10.3
我正在使用以下命令运行openssl 服务器
openssl s_server -key rsa.key -cert allaudin.pem -accept 4000 -WWW
【问题讨论】:
-
https://前缀不应成为通用名称的一部分 -
没有前缀也是不行的。我试过了。
-
尝试在证书的 SAN 字段或 dNSName 字段中使用 IP。我很确定其中一个过去对我有用。如果可行,请发布,我会将其转换为答案。
-
如何添加 SAN 字段?
标签: android ssl openssl ssl-certificate self-signed