解决局域网内开发https请求的证书问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决局域网内开发https请求的证书问题相关的知识,希望对你有一定的参考价值。
参考技术A最近做一个项目,局域网内开发一台华为机器,但是机器上部署了nginx负载均衡,众所周知Nginx部署完成以后会强制 https 。
欧拉机器上的证书是华为域名的证书,由于我们使用局域网,局域网内的地址是 192 开头,此证书在局域网域名内失效,因而通过 https 方式访问时会出现风险提示。
在这种情况下,解决 SSL Error 的方法一般有两个
或者依照请求方式的不同
结果呢?不报错了,直接返回 404 ,啊,被拒绝了!!!
Nginx真是个倔强的服务哈哈哈
发现已有大佬给出相关的参考
自己签发一个SSL证书,要求包含内网主机域名即可。
需要如下几步骤:
1.安装mkcert
这两个证书文件的输出的目录一般是 /Users/[用户名]
请注意以上文件最好都填绝对路径
例如:
会让你设置密码
得到文件:
导入局域网的服务器就行了。
java的https请求解决证书问题
package sqr.srchSpider.utils; import java.security.SecureRandom; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.X509TrustManager; public class TrustSSL { public static void trustEveryone() { try { HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { public boolean verify(String hostname, SSLSession session) { return true; } }); SSLContext context = SSLContext.getInstance("TLS"); context.init(null, new X509TrustManager[] { new X509TrustManager() { public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } } }, new SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory()); } catch (Exception e) { e.printStackTrace(); } } }
TrustSSL.trustEveryone();
Document doc = Jsoup.connect(url).data(key0,key).get();
以上是关于解决局域网内开发https请求的证书问题的主要内容,如果未能解决你的问题,请参考以下文章