android - Okhttp3,如果为 IP 地址颁发 SSL 证书,则无法验证主机名

标签 android ssl-certificate retrofit2 android-networking okhttp

OkHttp尝试使用IP地址连接到服务器时发生以下异常:

javax.net.ssl.SSLPeerUnverifiedException: Hostname 195.168.2.68 not verified:
       certificate: sha256/rxO7r+KJOj2iTLR+MPWF7rNV45BYYQKvhlsb4K6yHXE=
       DN: CN=test sandbox,OU=it,O=abc,L=newyork,ST=western,C=us
       subjectAltNames: []

服务器具有为服务器的 IP 地址生成的自签名 SSL 证书。

基本网址为: https://195.168.2.68:8092/Mobile/

这里出了什么问题?

最佳答案

Hostname 195.168.2.68 not verified

I tried with various Values for CN , I used ip also. now cn values is 'test'.

由于 195.168.2.68test 不匹配,因此一切都按预期工作,因为 CommonName 主要用于匹配,因此您需要正确颁发的证书,或者您即委托(delegate) test 域指向 195.168.2.68 并使用 test 而不是 IP 来使其与 CN 匹配。但我会首先修复证书。

关于android - Okhttp3,如果为 IP 地址颁发 SSL 证书,则无法验证主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41562209/

相关文章:

java - Retrofit 2/Rxjava - 从响应中检索 header

android - 关于 fragment 生命周期的困惑

java - Android IntentService 无法在开机时启动

android - 如何制作 RxErrorHandlingCallAdapterFactory?

javax.net.ssl.SSLHandshakeException : Received fatal alert: handshake_failure

ssl - 本地注册表上的 docker 推送问题 https 对资源的访问被拒绝

android - 使用不同的路径参数更新 @url 路径

android - RxJava2 找不到 Func0

java - 为什么未选中 android.database.SQLException?

kubernetes - 使用云 DNS 的 GKE 上的证书管理器配置