Android SSL 验证服务器证书 Hostname 不匹配错误。

本文讨论了在使用OkHttp库进行HTTPS访问时遇到的域名验证错误,并提供了两个解决方案:重新生成服务器证书和在客户端代码中忽略主机名验证。重点解决了域名不匹配导致的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用HttpsURLConnection进行https访问的时候,当验证服务器证书的时候,有时候会报下面的错误。

12-24 16:37:04.801: W/System.err(26380):   java.io.IOException: Hostname '74.208.145.100' was not verified
12-24 16:37:04.801: W/System.err(26380): at com.android.okhttp.Connection.upgradeToTls(Connection.java:201)
12-24 16:37:04.801: W/System.err(26380): at com.android.okhttp.Connection.connect(Connection.java:151)
12-24 16:37:04.802: W/System.err(26380): at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:276)
12-24 16:37:04.802: W/System.err(26380): at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:211)
12-24 16:37:04.802: W/System.err(26380): at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:373)
12-24 16:37:04.802: W/System.err(26380): at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:106)
12-24 16:37:04.802: W/System.err(26380): at com.android.okhttp.internal.http.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:89)
12-24 16:37:04.802: W/System.err(26380): at com.android.okhttp.internal.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:25)
12-24 16:37:04.802: W/System.err(26380): at com.example.ssl.MainActivity$1.doInBackground(MainActivity.java:75)
12-24 16:37:04.802: W/System.err(26380): at com.example.ssl.MainActivity$1.doInBackground(MainActivity.java:1)


然后查看服务器证书,发现其中的域名为

 CN=www.onlinehome-server.com

而我们的真正请求的域名为

74.208.145.100

错误原因是验证证书时发现真正请求和服务器的证书域名不一致。

解决这个问题有两个方法:

1.重新生成服务器的证书,用真实的域名信息。

2.在客户端代码中增加如下代码,忽略hostname 的验证。(仅仅用于测试阶段,不建议用于发布后的产品中。)

HttpsURLConnection.setDefaultHostnameVerifier( new HostnameVerifier(){
    public boolean verify(String string,SSLSession ssls) {
	        return true;
	    }
});



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值