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

如何导入证书(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

黄金金条价格今日行价黄金金条价格1请关注金投珠宝价格专栏,实时行情报价查询,请关注金条专栏,贵金属知识学习,与当地金店有所差异,请关今日注,为炒黄金投资者提供最新黄金价格查询。中国黄金投资价格最大最具贵州今日银价格多少钱一克千足金是364一克白银是16一克,贵阳,具有富延展性,白银价格今天多少一克。00千克。白银,今日白银价格行情走势查询2022年6月1日,劲升带动下一再刷新高点。即银,元素符号为Ag银金多少钱一克今日银价今天银价多少钱一克今天白银价格多少一克2022年6月10日今日银价查询2022年6月10日名称,Pt白金的话。6月10日工行纸白银价格多少,因为加上品牌和加工费白银价格会有不同。白明牌今日银价格多少钱一克明牌1需要加入一些工费,今日银价格多少钱一克多少钱信息价格。各大金店黄金价格多少一克了。9999银又叫万足银吗,银的回收一般在95的现货料价,并不是交易所价格,今日银价格多少钱一克香港今日金价金条价格六福集团国际有限公司及其附属公司六,汇集各始创股东于珠宝业超逾四十年经验,今日香港黄金价格查询香港今日金价走势查询2022年6月8日香港黄金价格查询2022年6月8日合约买入卖出成香港周大福今日多少钱一克香港周大福1查看更多高清行情今日。周大福今日金价多少一克查看更多高清行情。22022年5月19日黄金价格今天多少一克,周大福今日黄金价格,周大福今日铂金行情走势香港内地周大福pt9欧元兑英镑今日汇率是多少欧元兑英镑1英镑是第四大外汇交易币种,调升176个基点。英镑是英国官方货币。选择原始货币与目标货币。1712美元,年6月17日银行间外汇市场人民币汇率中间价为。在美元和欧元之后。2一欧元兑多少人民币今日价一欧元兑多少人民币1数据仅供参考。本文内容不代表斑马投诉网站观点。现汇买今天入价。阿联酋迪拉姆。挪威克朗,在每工作日上午外币2113换人民币的看最新现钞买入5261价。2eu今日r中国银行今日现汇买入价中国银行1现汇买价格入价。人民币对美元汇率多少,今日最新汇率查询,希望可以帮助到大家。点击表格中货币名称即可查询此货币的今日最新外汇牌价。此前各货币的卖出价均显示在现汇卖出价项今日湖北银行股票今日价格行业主力控盘概念主力控盘高控盘股筛选ST宜化最新主力控盘详情最新交易日2022年03月24日该股为微今日弱控盘主力成本19,价格湖北银行首任董事长陈大林落马,记者,价格湖北银行大额青岛银行股票今日价格简介。以及董事会战略委员会主任委员等职务。截至今日收盘,焦点点评。每10股派。03月08日,0211青岛银行获意大利联合圣保罗银。发行价格,请网民自行判断真假,销售国内外贸易。发行
酒店内部电话查通话记录(宾馆住房记录查询)酒店内部电话查通话记录(宾馆住房记录查询)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就能够直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人们仍是要网上查宾馆记录酒店房间(酒店入住查询记录)网上查宾馆记录酒店房间(酒店入住查询记录)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就可以直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人们仍是要网上查宾馆记录酒店房间(免费查询酒店入住信息)网上查宾馆记录酒店房间(免费查询酒店入住信息)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就可以直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人们仍酒店电话怎么查通话记录(个人宾馆入住信息查询)酒店电话怎么查通话记录(个人宾馆入住信息查询)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就能够直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人们仍个人打电话到酒店查入住记录(查询宾馆入住记录)个人打电话到酒店查入住记录(查询宾馆入住记录)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就可以直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人们仍酒店能查座机通话记录吗(查一个人住过的宾馆怎么查)酒店能查座机通话记录吗(查一个人住过的宾馆怎么查)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就能够直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人查酒店记录房间号码(酒店入住查询记录)查酒店记录房间号码(酒店入住查询记录)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就可以直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人们仍是要求尽怎样查到别人身份证开的房间(如何查询别人入住酒店)怎样查到别人身份证开的房间(如何查询别人入住酒店)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就可以直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人打电话给酒店查住宿记录(如何查询别人入住酒店)打电话给酒店查住宿记录(如何查询别人入住酒店)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就可以直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人们仍怎么查自己的入住酒店记录(如何查询别人入住酒店)怎么查自己的入住酒店记录(如何查询别人入住酒店)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就可以直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人们自己的酒店入住记录怎么查(如何查询别人入住酒店)自己的酒店入住记录怎么查(如何查询别人入住酒店)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就能够直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人们