java p12证书验证_p12格式的安全证书在Java项目中使用
前一段时间因为需要别人给的p12格式的安全证书才能获取相关数据,但是p12格式的证书无法导入到jdk的证书库,但是又需要在Java项目中使用p12格式的证书,找了很久,最后在别人的帮助下找到方法。
因为p12格式的证书包含证书和私钥,不能直接导入jdk的证书库,转换成cer格式的证书能导入,但是导出的cer格式证书不含私钥,这样仍不能使用证书。所以我找到的方法是先将导出的cer格式的证书导入jdk证书库中,再在Java项目中写一个工具类导入p12格式的证书。
用keytool将p12的证书导入到jdk的证书库具体步骤如下:
1. 先将p12格式的证书导入浏览器。
P12格式的证书导入,双击p12格式的证书,按照导入向导完成导入。
2. 再从浏览器中导出cer格式的证书。
在Internet选项中选择内容->证书->导出
导出为cer格式选择不要导出私钥,下一步默认第一个—DER编码二进制 X.509(.CER)(D),依次下一步完成。
3. 将导出的cer格式证书导入到jdk的证书库cacerts中。
打开命令行窗口,输入:keytool –import –file cer格式证书路径 –keystore jdk证书库路径 –alias 导入的别名。
执行import命令之后会提示输入密码,cacerts的默认密码为changeit
输入命令之后会提示是否信任这个证书?输入y就可以。
证书导入完成,再根据导入时的别名查看证书是否导入,
命令行输入:keytool –list –keystore jdk证书库路径 |findstr /i 证书别名
输入keystore密码,也为默认的changeit
下面会显示你导入的证书和时间,这样就证明证书导入成功了。
4. 在Java程序中测试证书库的使用。
public class P12CertTest{
private final static String TEST_URL ="https://vtsis-szmsa0.mardep.gov.hk/szmsa/SzmsaVesselTripResponseServlet";
public void getHKVesselTrip() throws Exception {
KeyStoreclientStore = KeyStore.getInstance("PKCS12");
clientStore.load(new FileInputStream("D:/work_rg/jdk1.6.0_27/jdk1.6.0_27/jre/lib/security/szmsa.p12"),"12345678".toCharArray());
KeyManagerFactorykmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(clientStore,"12345678".toCharArray());
KeyManager[]kms = kmf.getKeyManagers();
KeyStoretrustStore = KeyStore.getInstance("JKS");
trustStore.load(new FileInputStream("D:/work_rg/jdk1.6.0_27/jdk1.6.0_27/jre/lib/security/cacerts"),"changeit".toCharArray());
TrustManagerFactorytmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(trustStore);
TrustManager[]tms = tmf.getTrustManagers();
SSLContextsslContext = null;
sslContext= SSLContext.getInstance("TLS");
sslContext.init(kms,tms, newSecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
URLurl = newURL(TEST_URL);
HttpsURLConnectioncon = (HttpsURLConnection) url.openConnection();
con.connect();
InputStreaminputStream = con.getInputStream();
System.out.println(inputStream2String(inputStream));
inputStream.close();
con.disconnect();
}
public static String inputStream2String(InputStream is)throws IOException {
ByteArrayOutputStreambaos = newByteArrayOutputStream();
int i = -1;
while ((i = is.read()) != -1) {
baos.write(i);
}
returnbaos.toString();
}
public static void main(String[] args)throws Exception {
new P12CertTest().getHKVesselTrip();
}
}
删除证书,防止导入错误,备用。
java p12证书验证_p12格式的安全证书在Java项目中使用相关推荐
- HTML通过java信息保存,如何使用java邮件API将HTML格式的数据保存为java邮件的主体?...
我需要将XML验证报告作为HTML内容邮件发送. 如何使用java邮件API将以下详细信息(从父类派生)作为HTML主体. //精确要求: 标题:CAR验证报告 //背景颜色:橙色 //字体颜色:黑色 ...
- java证书验证失败_解决https证书验证不通过的问题
1.报错信息 java.security.cert.CertificateException: No name matching api.weibo.com found; nested excepti ...
- 翻译:通过Java编程创建X.509格式的数字签名证书
本文翻译自此篇文章,如有余力可直接阅读原文. 我所需要解决的问题很简单:创建一个只需要配置很少字段的X.509协议的证书,再使用已有的CA私钥/证书进行签名,最后导出为PKCS12格式的签名证书.把这 ...
- python ssl连接 证书验证失败_python foursquare – SSL3证书验证失败
我正在尝试使用Mike Lewis的 Python包装器( https://github.com/mLewisLogic/foursquare)向Foursquare API发出无用的请求: clie ...
- java design按钮_DesignJava 设计模式,讲述 的各种 方便在项目中进行 框架结构 Develop 238万源代码下载- www.pudn.com...
文件名称: DesignJava下载 收藏√ [ 5 4 3 2 1 ] 开发工具: Java 文件大小: 1675 KB 上传时间: 2013-11-21 下载次数: 2 提 供 者: 1 ...
- es java 模糊查询_java使用elasticsearch进行模糊查询-已在项目中实际应用
java使用elasticsearch进行模糊查询 使用环境上篇文章本人已书写过,需要maven坐标,ES连接工具类的请看上一篇文章,以下是内容是笔者在真实项目中运用总结而产生,并写的是主要方法和思路 ...
- java https双向验证_java https双向认证证书
// 双向认证证书 KeyStore keyStore = KeyStore.getInstance("PKCS12"); KeyStore trustStore = KeySto ...
- java证书验证失败_使用certbot证书验证失败
这是我的情况 . 我在Debian Jessie上运行Apache服务器 . 我在那里有3个域,3个月前,我运行Certbot以使用此命令安装ssl证书 sudo certbot --authenti ...
- java 播放器开发 dat_dat格式用什么播放器 JAVA中文件的读写 I/O 输入输出流(3)
OutputStreamWriter 和InputStreamReader都是包裹流 实例:如何将键盘输入的字符组成字符串直接赋给String对象. readLine()与回车符的问题: Print流 ...
最新文章
- 以太坊知识教程------账户
- [html] 如何实现多行文字梯形排版?
- TCPMP0.72RC1的编译与移植以及自己另外做UI完整方法
- ArcGIS栅格数据批量转换格式
- 黑白群晖为Plex添加证书,开启HTTPS访问
- GPS定位+经纬度定位
- win7中怎么显示文件名后缀
- CSU 1256 天朝的单行道
- oracle general ledger,处理 Oracle General Ledger 调整期间
- 开箱一款高精度智能手表,健康监测运动记录,你来评评是否值得
- 点仙人掌(cactus)
- mysql候选关键字_MySQL(三)之SQL语句分类、基本操作、三大范式
- silvaco 仿真BJT
- 谷歌中一些十分有趣的特效现象
- 什么是UML,UML类图
- Unix中sed用法
- 2014中国CRM与商业IT展览会(上交会专题)
- Win10自定义短语
- 蓝牙协议栈开发板 STM32F1 跑蓝牙协议栈 --传统蓝牙串口协议SPP演示以及实现原理
- Java中的集合---------Collections 类---集合的工具类 Comparator比较器