您当前的位置: 首页 >  Java

蓝不蓝编程

暂无认证

  • 3浏览

    0关注

    706博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

自签名证书报错:javax.net.ssl.SSLPeerUnverifiedException: Hostname xxx not verified

蓝不蓝编程 发布时间:2019-05-24 15:37:30 ,浏览量:3

背景

现在服务器都要求使用https了,正式商用时,肯定要申请标准的商用ssl证书,但是测试时,为了方便,需要采用自签名证书.下面是在使用自签名证书时遇到的问题.

问题描述

安卓客户端通过okhttp访问服务器报错:

2019-05-24 09:35:37.988 24298-24343/com.cxyzy.note E/WM-WorkerWrapper: Work [ id=d948a142-a121-4b3d-aeeb-2d424f9e1f58, tags={ com.cxyzy.note.DataSyncWorker } ] failed because it threw an exception/error
    java.util.concurrent.ExecutionException: javax.net.ssl.SSLPeerUnverifiedException: Hostname 192.168.186.80 not verified:
        certificate: sha256/XYM7pQnVRFEOtEDnlDn4sJD3jKX592BPsDyBp/I/cGI=
        DN: CN=192.168.186.80,OU=internet,O=cxyzy,C=CN
        subjectAltNames: [127.0.0.1, 127.0.0.1, localhost]
        at androidx.work.impl.utils.futures.AbstractFuture.getDoneValue(AbstractFuture.java:516)
        at androidx.work.impl.utils.futures.AbstractFuture.get(AbstractFuture.java:475)
        at androidx.work.impl.WorkerWrapper$2.run(WorkerWrapper.java:290)
分析

证书最关键的是“常用名称”即CN(CommonName)和“IP地址”,必须和服务器的ip地址一致,否则就会校验失败.有两种查看证书的方式:

  1. 利用keytool命令查看证书内容 keytool -v -list -keystore https_keystore.jks -alias server -keypass 123456 -storepass 123456 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UsAjw6Rq-1592650992799)(https://upload-images.jianshu.io/upload_images/6169789-7a3d9e76ff637689.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
  2. 在浏览器查看证书内容 我在服务器端开放了一个get接口,通过浏览器来查看服务器证书. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eF7kOy2e-1592650992801)(https://upload-images.jianshu.io/upload_images/6169789-e7d05fd13cefc6ea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
解决方案

制作证书时,“常用名称”即CN(CommonName)和“IP地址”,保持和服务器的ip地址一致. 一般可以用openssl等命令来制作证书,我这边用的是kotlin代码来搞的.

关注
打赏
1639405877
查看更多评论
立即登录/注册

微信扫码登录

0.0458s