教育房产时事环球科技商业
投稿投诉
商业财经
热点动态
科技数码
软件应用
国际环球
晨报科学
新闻时事
信息智能
汽车房产
办公手机
教育体育
生活生物

如何导入证书(CA证书验证信任关系时系统层)

  问题现象
  前些天第三方公司同我们公司开发的业务系统对接,调用我们系统的https接口时出现如下日志提示:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:  PKIX path building failed:  sun.security.provider.certpath.SunCertPathBuilderException:  unable to find valid certification path to requested target
  问题分析
  几经周折,历经磨难后发现,此类问题一般是证书本身或者jdk版本问题导致的。解决问题的办法也有几种。
  第一种办法:重新申请更换符合安全规范的证书。(推荐)
  第二种办法:重写SSLSocketFactory类,信任所有所有证书。public class HttpsClientUtil { 	private static ThreadSafeClientConnManager cm = null; // 多连接的线程安全的管理器 	private static int MAX_TOTAL = 500; // 最大连接数 	private static int defaultMaxConnection = 100; // 默认最大 主机连接数 	public final static int CONNECT_TIMEOUT = 10000; // 连接超时时间 	public final static int SOCKET_TIMEOUT = 90000; // 读取数据超时时间  	static { 		// 设置访问协议 		SchemeRegistry schemeRegistry = new SchemeRegistry(); 		schemeRegistry.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory())); 		try { 			schemeRegistry.register(new Scheme("https", 443, getSSLSocketFactory())); 		} catch (KeyManagementException e1) { 			e1.printStackTrace(); 		} catch (NoSuchAlgorithmException e1) { 			e1.printStackTrace(); 		} 		cm = new ThreadSafeClientConnManager(schemeRegistry); 		try { 			cm.setMaxTotal(MAX_TOTAL); 			// 每条通道的并发连接数设置(连接池) 			cm.setDefaultMaxPerRoute(defaultMaxConnection); 		} catch (NumberFormatException e) { 			e.printStackTrace(); 		} 	}  	public static HttpClient getHttpsClient() { 		HttpParams params = new BasicHttpParams(); 		// HTTP 协议的版本,1.1/1.0/0.9 		params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1); 		/* 连接超时 */ 		HttpConnectionParams.setConnectionTimeout(params, CONNECT_TIMEOUT); 		/* 请求超时 */ 		HttpConnectionParams.setSoTimeout(params, SOCKET_TIMEOUT);  		return new DefaultHttpClient(cm, params); 	}  	/** 	 * 设置信任所有证书 	 *  	 * @return 	 * @throws KeyManagementException 	 * @throws NoSuchAlgorithmException 	 */ 	private static SSLSocketFactory getSSLSocketFactory() throws KeyManagementException, NoSuchAlgorithmException { 		// SSLContext ctx = SSLContext.getInstance("SSL"); 		SSLContext ctx = SSLContext.getInstance("TLS"); 		X509TrustManager tm = new X509TrustManager() {  			public void checkClientTrusted(X509Certificate[] xcs, String string) throws CertificateException {  			}  			public void checkServerTrusted(X509Certificate[] xcs, String string) throws CertificateException { 			}  			public X509Certificate[] getAcceptedIssuers() { 				return null; 			} 		}; 		ctx.init(null, new TrustManager[] { tm }, null); 		SSLSocketFactory ssf = new SSLSocketFactory(ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);// 信任所有域名主机 		return ssf; 	}  	public static void release() { 		if (cm != null) { 			cm.shutdown(); 		} 	} }
  第三种办法:把安全证书导入到java中cacerts证书库。
  废话不多说,直接上干货。第一步是要下载证书
  建议使用谷歌浏览器,如下图所示,点击"小锁"。
  证书下载
  在"证书"页面,点击"复制到文件"按钮,选择https证书存放到的目录位置。
  复制证书到文件
  在"证书导出向导"页面,选择base64编码。
  选择编码导入证书
  切换到jdk jre的/lib/security/下,执行如下命令:keytool -import -alias test -keystore cacerts -file D://test.cer
  说明:
  -alias 指定别名
  -keystore 指定存储文件
  -file 指定证书文件所在的目录
  注意:当切换到 cacerts 文件所在的目录时,才可指定 -keystore cacerts,否则应该指定全路径。此时命令行会提示你输入cacerts证书库的密码,敲入changeit即可,这是java中cacerts证书库的默认密码。
  库密钥口令输入:changeit
  是否信任:y
  证书导入成功。 查看证书,密钥默认是changeitkeytool -list -keystore cacerts -alias test更新证书时,要先删除原来的证书,然后导入新的证书keytool -list -keystore cacerts  keytool -delete -alias test -keystore cacerts  keytool -import -alias test -file mytest.cer -keystore cacerts -trustcacerts

教大家阴阳师引路珍珠获取攻略关于到现在阴阳师引路珍珠获取攻略这个话题,相信很多小伙伴都是非常有兴趣了解的吧,因为这个话题也是近期非常火热的,那么既然现在大家都想要知道阴阳师引路珍珠获取攻略,小编也是到网上收集教大家阴阳师百闻牌秘卷获取攻略关于到现在阴阳师百闻牌秘卷获取攻略这个话题,相信很多小伙伴都是非常有兴趣了解的吧,因为这个话题也是近期非常火热的,那么既然现在大家都想要知道阴阳师百闻牌秘卷获取攻略,小编也是到网上教大家2019阴阳师周年庆神秘符咒获取攻略关于到现在2019阴阳师周年庆神秘符咒获取攻略这个话题,相信很多小伙伴都是非常有兴趣了解的吧,因为这个话题也是近期非常火热的,那么既然现在大家都想要知道2019阴阳师周年庆神秘符咒教大家崩坏3朔夜观星武器选择攻略及观星武器搭配攻略关于到现在崩坏3朔夜观星武器选择攻略及观星武器搭配攻略这个话题,相信很多小伙伴都是非常有兴趣了解的吧,因为这个话题也是近期非常火热的,那么既然现在大家都想要知道崩坏3朔夜观星武器选教大家崩坏3朔夜观星阵容搭配方法及崩坏3朔夜观星阵容攻略关于到现在崩坏3朔夜观星阵容搭配方法及崩坏3朔夜观星阵容攻略这个话题,相信很多小伙伴都是非常有兴趣了解的吧,因为这个话题也是近期非常火热的,那么既然现在大家都想要知道崩坏3朔夜观星教大家王者荣耀回城特效桃源月圆获取攻略关于到现在王者荣耀回城特效桃源月圆获取攻略这个话题,相信很多小伙伴都是非常有兴趣了解的吧,因为这个话题也是近期非常火热的,那么既然现在大家都想要知道王者荣耀回城特效桃源月圆获取攻略教大家一梦江湖元宵时装获取攻略及浮元子雪庐隐逸时装外观一览关于到现在一梦江湖元宵时装获取攻略及浮元子雪庐隐逸时装外观一览这个话题,相信很多小伙伴都是非常有兴趣了解的吧,因为这个话题也是近期非常火热的,那么既然现在大家都想要知道一梦江湖元宵360杀毒怎么样(360杀毒有多强)7月下旬,360安全卫士官方宣布正式上线360安全卫士极速版,主打永久免费无弹窗广告的特点。此次,极速版除了保留了常规版的功能,还在发挥安全保护作用的基础上,更便捷地帮助大家提高电360手机系统怎么样(360手机杀毒完整版)热得你走出半生,归来全熟,身上还挂着椒盐晒得你走出半生,归来仍是少年包青天。央视段子手朱广权此前刷爆社交媒体的高温调侃,足可见大众对高温的悲鸣。其实受不了高温煎熬的不只是人,还有手360隔离的文件在哪(联想杀毒如何恢复隔离的文件)现在,windows10系统的最新正式版版本号是1703创意者更新版,新版系统进一步加强了windowsdefender杀毒软件功能,但是取消了隔离区选项,这就导致文件程序在被误删教学视频哪个好(教学视频哪个软件好)线上教育除了直播教学外,还有一种是通过录播的形式进行的,也就是说,课程不是老师实时讲解的,而是提前录制好并上传到相关平台上供学员学习,如今很多个人教师也会采用录播课的形式将自己录制
网上怎么查宾馆记录(怎么查一个人的入住信息)网上怎么查宾馆记录(怎么查一个人的入住信息)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就可以直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人们仍是怎么用身份证查酒店住宿记录(怎样查个人住宾馆信息)怎么用身份证查酒店住宿记录(怎样查个人住宾馆信息)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就可以直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人用身份证怎样查住宾馆记录(如何查个人住宾馆信息)用身份证怎样查住宾馆记录(如何查个人住宾馆信息)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就能够直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人们用身份怎样查宾馆记录(怎样查个人住宾馆信息)用身份怎样查宾馆记录(怎样查个人住宾馆信息)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就能够直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人们仍是用身份证号怎么查住宾馆记录(个人怎么查开宾馆记录)用身份证号怎么查住宾馆记录(个人怎么查开宾馆记录)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就能够直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人怎样查人在酒店入住记录(如何查询自己去过的酒店)怎样查人在酒店入住记录(如何查询自己去过的酒店)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就可以直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人们查人住酒店记录查询(输身份证号码查住酒店)查人住酒店记录查询(输身份证号码查住酒店)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就可以直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人们仍是要查人住酒店记录(身份证查询入住信息)查人住酒店记录(身份证查询入住信息)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就可以直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人们仍是要求尽量有身份证如何查人住酒店记录(查询身份证开过的酒店)有身份证如何查人住酒店记录(查询身份证开过的酒店)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就能够直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人查人住酒店记录查询(如何查个人开的房记录)查人住酒店记录查询(如何查个人开的房记录)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就能够直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人们仍是要知道身份证号能查酒店记录吗(如何查询自己去过的酒店)知道身份证号能查酒店记录吗(如何查询自己去过的酒店)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就能够直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,