如何导入证书(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
微信聊天记录备份怎么才查(微信怎么看聊天记录)微信聊天记录备份怎么才查(微信怎么看聊天记录)微信现已成为咱们最常用的谈天东西,由于微信的运用率非常高,咱们也常常会拾掇一下微信谈天记载和其他软件的缓存文件来腾出手机空间。但有时分
微信聊天记录报告怎么查(微信聊天记录在哪里查)微信聊天记录报告怎么查(微信聊天记录在哪里查)微信现已成为我们最常用的谈天东西,因为微信的运用率十分高,我们也常常会收拾一下微信谈天记载和其他软件的缓存文件来腾出手机空间。但有时分
vivox20怎么样(vivox21s是三星屏幕吗)前不久,vivo正式推出vivoX20全面屏手机。虽然这是vivo旗下首款全面屏产品,但是其完成度之高令人惊讶。首批备货350万台也表明,vivo不屑概念机,产品一旦推出,便要成为
文思海辉公司怎么样(文思海辉1万元工资什么级)文思海辉技术有限公司前身分别是创立于1995年的文思创新软件技术有限公司和创立于1996年海辉软件(国际)集团公司,2012年合并成立文思海辉技术有限公司,此后一直致力于为全球客户
汽修怎么样(修车这个行业怎么样)如今,只要掌握了一技之长的好工作和高薪,哪里都会吃香。有些人对汽车很有兴趣,想学汽车维修,但却犹豫不决,不知道汽车维修工人一个月能赚多少钱?挣钱不赚吗?学习汽修没问题,毕竟是一种技
大成律师事务所怎么样(大成律所深圳怎样)刑事辩护是律师业务王冠上最闪亮的一颗明珠,也是法律行业中最具挑战性和复杂性的一门技艺!刑事辩护关乎当事人的自由甚至生命,也关乎辩护律师的职责与荣耀。随着刑事法律法规和司法解释时更时
郑州升达经贸管理学院怎么样(郑州升达经军事化管理)河南省是我国高考大省,已经连续3年高考报名人数超100万人,并且一直在增加。考虑到河南省重点大学较少,很多学生只能去读民办本科高校。本文就与大家分享河南省实力较好的10所民办本科高
闽江学院怎么样(闽江学院大吗)我在大学等你福州市是福建省省会,全省最大城市之一,拥有2000多年的悠久历史,一直是福建省主要的政治文化中心,同时也是港口城市和造船中心交通运输的中心。自宋代以来,福州市遍植榕树,
微信为什么查不来聊天记录(怎么可以查聊天记录)微信为什么查不来聊天记录(怎么可以查聊天记录)微信现已成为咱们最常用的谈天东西,由于微信的运用率非常高,咱们也常常会拾掇一下微信谈天记载和其他软件的缓存文件来腾出手机空间。但有时分
微信为什么不能查聊天记录(查找微信聊天记录)微信为什么不能查聊天记录(查找微信聊天记录)微信现已成为咱们最常用的谈天东西,由于微信的运用率非常高,咱们也常常会拾掇一下微信谈天记载和其他软件的缓存文件来腾出手机空间。但有时分咱
微信为什么不可以查聊天记录(微信怎么看聊天记录)微信为什么不可以查聊天记录(微信怎么看聊天记录)微信现已成为我们最常用的谈天东西,因为微信的运用率十分高,我们也常常会收拾一下微信谈天记载和其他软件的缓存文件来腾出手机空间。但有时
可以去酒店查住房记录吗(怎么查开的房记录软件)可以去酒店查住房记录吗(怎么查开的房记录软件)通过身份证号码可以查询宾馆入住记录吗?不能,除了公安机关能查外,其它人员是没法查到的。这是个人隐私,而且办案人员没有正当的手续流程,个
可以去酒店查住房记录吗(怎么查开的房记录软件)可以去酒店查住房记录吗(怎么查开的房记录软件)通过身份证号码可以查询宾馆入住记录吗?不能,除了公安机关能查外,其它人员是没法查到的。这是个人隐私,而且办案人员没有正当的手续流程,个
可以去酒店查住房记录吗(怎么查开的房记录软件)可以去酒店查住房记录吗(怎么查开的房记录软件)平常我们外出订酒店住房,都是需要登记身份证的。如果想查询,可以如何查开房记录呢?接下来,且听PChouse细细说来。开房记录不是轻易能
可以去酒店查住房记录吗(怎么查开的房记录软件)可以去酒店查住房记录吗(怎么查开的房记录软件)通过身份证号码可以查询宾馆入住记录吗?不能,除了公安机关能查外,其它人员是没法查到的。这是个人隐私,而且办案人员没有正当的手续流程,个
可以去酒店查住房记录吗(怎么查开的房记录软件)可以去酒店查住房记录吗(怎么查开的房记录软件)实践日子中酒店的入住记载怎样查?假定说你有入住宾馆记载,那么就能够直接进入处理网络去查询自己的一个个人信息,所以在日常日子傍边,人们仍
身份证查酒店记录app(身份证入住酒店记录查询)身份证查酒店记录app(身份证入住酒店记录查询)PingWest品玩1月3日讯,苹果AppStore近日出现开房记录查询app,价格30元50元不等。其中一个app酒店开房记录和查
身份证查酒店记录app(身份证入住酒店记录查询)身份证查酒店记录app(身份证入住酒店记录查询)平常我们外出订酒店住房,都是需要登记身份证的。如果想查询,可以如何查开房记录呢?接下来,且听PChouse细细说来。开房记录不是轻易
酒店房记录查询(查询个人酒店住房记录)酒店房记录查询(查询个人酒店住房记录)通过身份证号码可以查询宾馆入住记录吗?不能,除了公安机关能查外,其它人员是没法查到的。这是个人隐私,而且办案人员没有正当的手续流程,个人也不是
酒店房记录查询(查询个人酒店住房记录)酒店房记录查询(查询个人酒店住房记录)通过身份证号码可以查询宾馆入住记录吗?不能,除了公安机关能查外,其它人员是没法查到的。这是个人隐私,而且办案人员没有正当的手续流程,个人也不是
酒店房记录查询(查询个人酒店住房记录)酒店房记录查询(查询个人酒店住房记录)平常我们外出订酒店住房,都是需要登记身份证的。如果想查询,可以如何查开房记录呢?接下来,且听PChouse细细说来。开房记录不是轻易能查得到的
酒店房记录查询(查询个人酒店住房记录)酒店房记录查询(查询个人酒店住房记录)通过身份证号码可以查询宾馆入住记录吗?不能,除了公安机关能查外,其它人员是没法查到的。这是个人隐私,而且办案人员没有正当的手续流程,个人也不是