2019独角兽企业重金招聘Python工程师标准>>>

public static void main(String[] args) throws UnrecoverableKeyException, KeyManagementException, NoSuchAlgorithmException, KeyStoreException, CertificateException, FileNotFoundException, IOException {        ResourceLoader resourceLoader = new DefaultResourceLoader();InputStream keyStore = resourceLoader.getResource("test.p12").getInputStream();String   keyStorePassword = "111111";    String  keyPassword = "111111";    String   KeyStoreType= "PKCS12";    String   KeyManagerAlgorithm = "SunX509";    String   SSLVersion = "SSLv3";new Test01().getHttpsURLConnection(null, keyStore, keyStorePassword, keyPassword, KeyStoreType, KeyManagerAlgorithm, SSLVersion);
}
public HttpURLConnection getHttpsURLConnection(URL url, InputStream  keystore,String   keyStorePass,String  keyPassword, String  KeyStoreType,String KeyManagerAlgorithm, String  SSLVersion)throws NoSuchAlgorithmException, KeyStoreException,CertificateException, FileNotFoundException, IOException,UnrecoverableKeyException, KeyManagementException {System.setProperty("javax.net.debug","ssl,handshake,record");SSLContext sslcontext = SSLContext.getInstance(SSLVersion);KeyManagerFactory kmf =  KeyManagerFactory.getInstance(KeyManagerAlgorithm);KeyStore ks = KeyStore.getInstance(KeyStoreType);ks.load(keystore, keyStorePass.toCharArray());kmf.init(ks, keyPassword.toCharArray());TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());tmf.init(ks);TrustManager[] tm = tmf.getTrustManagers();sslcontext.init(kmf.getKeyManagers(), tm, null);SSLSocketFactory sslSocketFactory = sslcontext.getSocketFactory();HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory);//HttpsURLConnection httpsURLConnection = ( HttpsURLConnection)url.openConnection();return null;}

最开始拿到p12的时候,给的密码是错的,试了好久,最后断定是p12文件的密码不正确,

于是通过pem和key重新生成了一个p12文件,密码自己设置后,就成功了。

第二种实现方式:

KeyStore ks = KeyStore.getInstance("PKCS12");
char[] password = "p12pwd".toCharArray();
Resource resource = resourceLoader.getResource("test.p12");
ks.load(resource.getInputStream(), password);
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(ks, password);
SSLContext ssl = SSLContext.getInstance("TLS");
ssl.init(kmf.getKeyManagers(), null, null);
HttpsURLConnection httpsURLConnection = ( HttpsURLConnection)new URL("").openConnection();
httpsURLConnection.setSSLSocketFactory(ssl.getSocketFactory());

转载于:https://my.oschina.net/u/555639/blog/524821

Java通过 p12 建立ssl链接相关推荐

  1. Java 第一阶段建立编程思想 【房屋出租系统】

    Java 第一阶段建立编程思想 [房屋出租系统] 1. 项目需求说明 2. 项目界面 1. 主菜单 2. 新增房源 3. 查找房源 4. 删除房源 5. 修改房源 6. 房屋列表 7. 退出系统 3. ...

  2. Java使用SSLContext请求https链接

    Java使用SSLContext请求https链接 先了解几个关键类 SSLContext 安全套接字协议的实现核心类 SSLSocket 扩展自Socket用户客户端 SSLSocketFactor ...

  3. 等保: Postgresql配置ssl链接

    文章目录 1 说明 2 操作步骤 2.1 数据库端调整 2.1.1 生成服务端证书 2.1.2 配置证书 2.1.3 生成客户端证书 2.2 使用pg库的服务端调整 3 避坑指南 3.1 证书核验通不 ...

  4. [C#]用HttpWebRequest加载证书建立SSL通道时发生异常的解决办法

    编写者:郑昀@UltraPower 关键字:HttpWebRequest, SSL,X509Certificate dotNet  Framwork 1.1 编写时间:2005-3-29 WSE 2. ...

  5. SQL SERVER使用ODBC 驱动建立的链接服务器调用存储过程时参数不能为NULL值

    我们知道SQL SERVER建立链接服务器(Linked Server)可以选择的驱动程序非常多,最近发现使用ODBC 的 Microsoft OLE DB 驱动程序建立的链接服务器(Linked S ...

  6. C语言 之建立静态链接库

    下面说一下建立静态链接库的方法 各个C语言编程软件都有它的方法,比如建立一个工程来共享文件,这就比较容易和简单了,现在我们选择使用难一点的linux系统,探究在linux系统下的建立静态链接库的方法. ...

  7. C语言编译构建系统,C语言 之建立静态链接库

    下面说一下建立静态链接库的方法 各个C语言编程软件都有它的方法,比如建立一个工程来共享文件,这就比较容易和简单了,现在我们选择使用难一点的linux系统,探究在linux系统下的建立静态链接库的方法. ...

  8. Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析

    Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析 一.介绍计算机网络体系结构 1.计算机的网络体系结构 在抓包分析TCP建立链接之前首先了解下计算机的网络通信的模型,我相信学习过计 ...

  9. php数据库可转java数据库,php转java 系列2 Spring boo 链接数据库jdbc

    php转java 系列2 Spring boo 链接数据库jdbc JDBC 首先创建一个新项目,在创建项目时要注意导入依赖, 在项目创建成功后就会看到在 pom.xml 文件中找到,但是如果在创建项 ...

最新文章

  1. 使用 Bundle在Activity间传递数据
  2. 【嵌入式开发】ARM 芯片简介 (ARM芯片类型 | ARM处理器工作模式 | ARM 寄存器 | ARM 寻址)
  3. OpenCV Python教程系列
  4. 201312-5 I’m stuck!
  5. java三国群雄_三国群英-真三国无双
  6. 黑客雇佣组织开发出新型的Windows 隐秘后门
  7. Java程序设计实验2
  8. SpringMVC中@RequestMapping参数设置
  9. pythonsample_python sample code | 学步园
  10. Swift3.0 中实现发短信功能
  11. 标志Logo设计的起源和艺术特点
  12. 网站制作的流程是什么?网站制作的流程包括哪些步骤?
  13. 怎么用python读取excel图_如何用Python读取Excel中图片?
  14. C#winform下获取主机ip及hostname
  15. 凯云水利水电工程造价管理系统 技术解析(七) 机械单价(二)
  16. 防止记录丢失,保存QQ聊天记录文件的方法
  17. 【白板推导系列笔记】数学基础-概率-高斯分布-求联合概率分布
  18. 【Spark NLP】第 12 章:情感分析和情绪检测
  19. html铺满整个页面_前端实践:怎么让一个HTML元素(标签)的区域铺满全屏?
  20. Go 开源说第十五期预告: Erda ——新一代企业级云原生 PaaS 平台

热门文章

  1. java b2b2c shop 多用户商城系统源码-common-service 项目构建过程
  2. idea新建web项目并配置运行教程
  3. 英国科研学术网络Janet遭遇DDoS攻击
  4. 所有权链(Ownership Chain)
  5. /dev/null脚本中作用
  6. Laravel后台 + AngularJS前端 的网站构建与维护
  7. kvm虚拟化学习笔记(二)之linux kvm虚拟机安装
  8. rsync+rsync+crond备份
  9. 我的c++学习(1)hello world!
  10. thread和threadLocal之间的关系