文档章节

Java通过 p12 建立ssl链接

w
 walala_Lee
发布于 2015/11/02 12:34
字数 237
阅读 1122
收藏 3
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());


© 著作权归作者所有

w
粉丝 3
博文 169
码字总数 50381
作品 0
深圳
私信 提问
加载中

评论(1)

Matrix-lj
Matrix-lj
666666
nginx + tomcat + java SSL客服端

=====nginx + tomcat + java SSL客服端======= 1. 通过keytool 生成密钥库 【注意 CN 为服务端访问域名地址或者IP地址或者主机名 比如 config.ebnew.com】(密钥库密码为:bidconfig) keytool...

愚者00
2015/01/16
717
0
教你做一个简单的SSL安全通讯实例

一直想就SSL安全通讯部分写一些东西,今天就和大家一起探讨一下。 首先来介绍一下什么是SSL: SSL (Secure Socket Layer) 为Netscape所研发,用以保障在Internet上数据传输的安全,利用数据加...

程序员YB
2011/12/06
266
0
配置iOS推送通知与推送通知iOS客户端编写实现及推送服务器端编写

1)先配置iOS推送通知: 配置推送通知比较麻烦,需要iOS开发者帐号,然后配置一个Apple ID、配置概要文件和SSL证书。 1 证书签名请求 首先需要证书签名请求,这需要在Mac OS X系统中完成,通...

江山风雨
2018/07/04
0
0
你想要了解但是却羞于发问的有关SSL的一切

你想要了解但是却羞于发问的有关SSL的一切 或者更准确的说,“我所知的关于的SSL的实事”。本文(以及Spring Boot应用指南)将告诉你在一些通用服务(web服务器、浏览器认证、单元和集成测试)...

drkaka
2016/01/11
7.9K
17
tomcat 6 配置 双向https 访问

工作中使用了银行接口,需要部署单独的web服务器,接收https的请求,研究了一下tomcat 6进行双向https的配置,参考了网上的文章以及不断的摸索,总算小有心得,这里简单的整理和记录一下。 ...

Realfighter
2015/03/20
914
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
5
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
6
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部