X509TrustManager信任SSL证书
- 做个笔记
private Discovery getTrustDiscovery() throws KeyManagementException, NoSuchAlgorithmException, NoSuchProviderException, IOException {// 对用户提供的标识符执行发现Discovery dd = new Discovery();// //创建SSLContext对象,并使用我们指定的信任管理器初始化
// TrustManager[] tm = {new MyX509TrustManager ()};
// SSLContext sslContext = SSLContext.getInstance("SSL","SunJSSE");
// sslContext.init(null, tm, new java.security.SecureRandom());
//
// //从上述SSLContext对象中得到SSLSocketFactory对象
// SSLSocketFactory ssf = sslContext.getSocketFactory();
//
// //创建HttpsURLConnection对象,并设置其SSLSocketFactory对象
// URL url=new URL(ENDPOINT);
// HttpsURLConnection httpsConn = (HttpsURLConnection)url.openConnection();
// httpsConn.setSSLSocketFactory(ssf);// 获取一个SSLContext实例SSLContext s = SSLContext.getInstance("SSL");X509TrustManager x509m = new X509TrustManager() {// 返回受信任的X509证书数组。@Overridepublic X509Certificate[] getAcceptedIssuers() {return null;}
// 该方法检查服务器的证书,若不信任该证书同样抛出异常。通过自己实现该方法,可以使之信任我们指定的任何证书。
// 在实现该方法时,也可以简单的不做任何处理,即一个空的函数体,由于不会抛出异常,它就会信任任何证书。@Overridepublic void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {}
// 该方法检查客户端的证书,若不信任该证书则抛出异常。由于我们不需要对客户端进行认证,
// 因此我们只需要执行默认的信任管理器的这个方法。JSSE中,默认的信任管理器类为TrustManager。@Overridepublic void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {}};s.init(null, new TrustManager[] { x509m }, new java.security.SecureRandom());// 打印这个SSLContext实例使用的协议
// System.out.println("缺省安全套接字使用的协议: " + s.getProtocol());// 获取SSLContext实例相关的SSLEnginedd.setYadisResolver(new YadisResolver(new HttpFetcherFactory(s, new X509HostnameVerifier() {@Overridepublic boolean verify(String hostname, SSLSession session) {// TODO Auto-generated method stubreturn true;}@Overridepublic void verify(String host, String[] cns, String[] subjectAlts) throws SSLException {// TODO Auto-generated method stub}@Overridepublic void verify(String host, X509Certificate cert) throws SSLException {// TODO Auto-generated method stub}@Overridepublic void verify(String host, SSLSocket ssl) throws IOException {// TODO Auto-generated method stub}})));return dd;}
package com.jiuqi.crcc.util;
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.TrustManager;
import javax.net.ssl.X509TrustManager;
/*** * <p>TODO SSL忽略安全证书</p>**/
public class SslUtils {private static void trustAllHttpsCertificates() throws Exception {TrustManager[] trustAllCerts = new TrustManager[1];TrustManager tm = new miTM();trustAllCerts[0] = tm;SSLContext sc = SSLContext.getInstance("SSL");sc.init(null, trustAllCerts, null);HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());}static class miTM implements TrustManager,X509TrustManager {public X509Certificate[] getAcceptedIssuers() {return null;}public boolean isServerTrusted(X509Certificate[] certs) {return true;}public boolean isClientTrusted(X509Certificate[] certs) {return true;}public void checkServerTrusted(X509Certificate[] certs, String authType)throws CertificateException {return;}public void checkClientTrusted(X509Certificate[] certs, String authType)throws CertificateException {return;}}/*** 忽略HTTPS请求的SSL证书,必须在openConnection之前调用* @throws Exception*/public static void ignoreSsl() throws Exception{HostnameVerifier hv = new HostnameVerifier() {public boolean verify(String urlHostName, SSLSession session) {return true;}};trustAllHttpsCertificates();HttpsURLConnection.setDefaultHostnameVerifier(hv);}
}
X509TrustManager信任SSL证书相关推荐
- iOS开发HTTPS实现之信任SSL证书和自签名证书
首先来分析一下什么是HTTPS以及了解HTTPS对于iOS开发者的意义 HTTPS 以及SSL/TSL 什么是SSL? SSL(Secure Sockets Layer, 安全套接字层),因为原先互联 ...
- intellij服务器证书不受信任,ssl证书不受信任怎么办?ssl证书不受信任解决方案有什么?...
随之愈来愈多的ssl证书错误的状况出現,大伙儿都是有ssl证书不受信任怎么办这类的难题,而且对这种难题很头痛,下边将带大伙儿解析一下ssl证书不受信任的缘故及解决方案. 一.ssl证书不会受到信任是什 ...
- 教你秒建受信任的本地 SSL 证书,彻底解决开发测试环境的无效证书警告烦恼!...
您是否厌倦了在本地开发项目中使用不受信任的 SSL 证书?维护自己的证书颁发机构(CA)是一个痛苦的事情,这过程中需要用到神秘的程序和命令.在本指南中,我将向您展示一种在没有 CA 的情况下在本地开发 ...
- SSL证书信任问题处理,两种解决方案
异常信息:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path build ...
- springboot忽略证书_SpringBoot中通过java代码实现忽略SSL证书
//工具类 package com.oauth.utils; import org.springframework.stereotype.Component; import java.security ...
- 浏览器如何对SSL证书进行验证?
一.浏览器如何验证SSL证书 1.在浏览器菜单中点击"工具-Internet选项-内容-证书"按钮,可以查看受浏览器信任的"中级证书颁发机构"和"受信 ...
- 【SSL证书】OV、DV和EV三种类型证书的区别
以下内容由SSL盾小编发布[www.ssldun.com] 网站安全之盾 证书安全有保障 关于https证书 https协议需要到ca申请证书,一般免费证书很少,需要交费.并且免费的没有安全保障 ht ...
- Java爬虫https网页内容报错SSLHandshakeException信任(忽略)所有SSL证书
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building f ...
- Android _实现SSL解决不受信任的证书问题
介绍 网络安全已成为大家最关心的问题. 如果你利用服务器存储客户资料, 那你应该考虑使用 SSL 加密客户跟服务器之间的通讯. 随着这几年手机应用迅速崛起. 黑客也开始向手机应用转移, 原因有下列3点 ...
- iOS 10.3下解决Fiddler代理抓包ssl证书信任问题
iOS 10.3下解决Fiddler代理抓包ssl证书信任问题 参考文章: (1)iOS 10.3下解决Fiddler代理抓包ssl证书信任问题 (2)https://www.cnblogs.com/ ...
最新文章
- 使用mail发送附件
- Android 自定义ListView单击事件失效
- linux bash 学习
- java servlet https_javaweb项目对https的配置01
- thinkphp3.2自定义success及error跳转页面
- LINQ是死是活?——很奇怪为什么会有这样的话题?
- 【转】04.Dicom 学习笔记-DICOM C-Move 消息服务
- 2.3_ 1_ 进程同步、进程互斥
- 引物设计软件_你的引物设计进行得如何了?这份PCR引物设计及软件使用技巧供你参考...
- L1-037 A除以B (10 分)—团体程序设计天梯赛
- Linux的段错误调试方法
- 实验固体力学类毕业论文文献包含哪些?
- 用js两张图片合并成一张图片
- 一种很轻松的Excel关键字方式进行网页Web自动化测试(Java+Selenium+TestNG+Excel)
- PAT乙级 1068 万绿丛中一点红 (20 分) Java 实现
- 博士申请 | 浙江大学孙优贤院士课题组招收智能无人系统方向硕士生/博士生
- html玫瑰花ui,玫瑰花小制作分享-JavaScript(七夕专属浪漫)
- python格式规范的要求_Python书写规范
- Tomcat高级配置(应用场景总结及示例)
- SD卡及其写保护功能