java bks证书_如何创建包含客户端证书链的BKS(BouncyCastle)格式的Java密钥库
我遵循的详细分步说明实现了这一目标
从http://repo2.maven.org/maven2/org/bouncycastle/bcprov-ext-jdk15on/1.46/bcprov-ext-jdk15on-1.46.jar下载bouncycastle JAR 或从“ doc”文件夹中获取。
使用以下方法之一为PC配置BouncyCastle。
静态添加BC提供程序(推荐)
将bcprov-ext-jdk15on-1.46.jar复制到每个
D:\ tools \ jdk1.5.0_09 \ jre \ lib \ ext(JDK(捆绑的JRE)
D:\ tools \ jre1.5.0_09 \ lib \ ext(JRE)
C:\(在env变量中使用的位置)
修改下的java.security文件
D:\ tools \ jdk1.5.0_09 \ jre \ lib \ security
D:\ tools \ jre1.5.0_09 \ lib \ security
并添加以下条目
security.provider.7 = org.bouncycastle.jce.provider.BouncyCastleProvider
在“用户变量”部分中添加以下环境变量
CLASSPATH =%CLASSPATH%; c:\ bcprov-ext-jdk15on-1.46.jar
将bcprov-ext-jdk15on-1.46.jar添加到项目的CLASSPATH中,并在代码中添加以下行
Security.addProvider(new BouncyCastleProvider());
使用Bouncy Castle生成密钥库
运行以下命令
keytool -genkey -alias myproject -keystore C:/myproject.keystore -storepass myproject -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider
这将生成文件C:\ myproject.keystore
运行以下命令以检查其是否正确生成
keytool-列表-keystore C:\ myproject.keystore -storetype BKS
为TOMCAT配置BouncyCastle
打开D:\ tools \ apache-tomcat-6.0.35 \ conf \ server.xml并添加以下条目
这些更改后,请重新启动服务器。
为Android客户端配置BouncyCastle
无需进行配置,因为Android在提供的“ android.jar”中内部支持Bouncy Castle版本1.46。
只需实现您的HTTP客户端版本(可在下面找到MyHttpClient.java)并在代码中设置以下内容
SSLSocketFactory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
如果您不这样做,则会出现如下异常
javax.net.ssl.SSLException:证书中的主机名不匹配:<192.168.104.66>!=
在生产模式下,将上面的代码更改为
SSLSocketFactory.setHostnameVerifier(SSLSocketFactory.STRICT_HOSTNAME_VERIFIER);
MyHttpClient.java
package com.arisglobal.aglite.network;
import java.io.InputStream;
import java.security.KeyStore;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.SingleClientConnManager;
import com.arisglobal.aglite.activity.R;
import android.content.Context;
public class MyHttpClient extends DefaultHttpClient {
final Context context;
public MyHttpClient(Context context) {
this.context = context;
}
@Override
protected ClientConnectionManager createClientConnectionManager() {
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
// Register for port 443 our SSLSocketFactory with our keystore to the ConnectionManager
registry.register(new Scheme("https", newSslSocketFactory(), 443));
return new SingleClientConnManager(getParams(), registry);
}
private SSLSocketFactory newSslSocketFactory() {
try {
// Get an instance of the Bouncy Castle KeyStore format
KeyStore trusted = KeyStore.getInstance("BKS");
// Get the raw resource, which contains the keystore with your trusted certificates (root and any intermediate certs)
InputStream in = context.getResources().openRawResource(R.raw.aglite);
try {
// Initialize the keystore with the provided trusted certificates.
// Also provide the password of the keystore
trusted.load(in, "aglite".toCharArray());
} finally {
in.close();
}
// Pass the keystore to the SSLSocketFactory. The factory is responsible for the verification of the server certificate.
SSLSocketFactory sf = new SSLSocketFactory(trusted);
// Hostname verification from certificate
// http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html#d4e506
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
return sf;
} catch (Exception e) {
throw new AssertionError(e);
}
}
}
如何在Activity类中调用以上代码:
DefaultHttpClient client = new MyHttpClient(getApplicationContext());
HttpResponse response = client.execute(...);
java bks证书_如何创建包含客户端证书链的BKS(BouncyCastle)格式的Java密钥库相关推荐
- tkinter如何lable重复显示到同一行中_如何创建包含 CAD 导入和选择的仿真 App
在使用 COMSOL 软件二次开发的过程中,你可能会遇到这样的问题:如何使用 App 开发器创建可以处理 CAD 导入并能让用户交互式选择边界条件的仿真 App?我需要了解编程吗?今天我们将为您介绍在 ...
- Java笔记-为客户端及服务端创建公私钥的密钥库
使用密钥库使得客户端与服务器之间进行安全的通信,通过下面的方式生成公钥私钥库: 1. 创建client及server的keystore. 2. 从keystore中导出certificate. 3. ...
- java后端语言_后端程序员一定要看的语言大比拼:Java vs. Go vs. Rust
这是Java,Go和Rust之间的比较.这不是基准测试,更多是对可执行文件大小.内存使用率.CPU使用率.运行时要求等的比较,当然还有一个小的基准测试,可以看到每秒处理的请求数量,我将尝试对这些数字进 ...
- jsp中java代码无效_来杯咖啡,教你如何优雅的在java中统计代码块耗时
推荐阅读: Sping源码+Redis+Nginx+MySQL等七篇实战技术文档,阿里大佬推荐 阿里内部:2020年全技术栈文档+PPT分享,(万粉总结,回馈粉丝) 在我们的实际开发中,多多少少会遇到 ...
- python处理字典中双引号_如何创建带有双引号作为默认引号格式的Python词典?
如何创建带有双引号作为默认引号格式的Python词典? 我正在尝试创建一个python字典,该字典将用作html文件中的java脚本变量,以实现可视化目的. 作为必要条件,我需要创建所有名称都用双引号 ...
- java csr 证书_使用JAVA自带security,创建测试用的CSR证书请求文件
项目中要用到安全证书,生成CSR测试. 不多说,直接上干货. 1.什么是数字证书,这篇文章讲的不错,通俗易懂,简单明了. http://www.ruanyifeng.com/blog/2011/08/ ...
- 自建ca根证书_如何创建私有 CA 并签发证书
为什么需要自己的 CA? 因为公共 CA (比如排名前几的这几家:Comodo, Symantec, GlobalSign, DigiCert, StartCom)颁发证书要收费,而且价格很贵.当然现 ...
- java tls 证书_在使用Java 8重新协商TLS_1.2期间,服务器证书更改受到限制
我对SSL很陌生,并且被看似已知的问题所困扰.我的应用程序是SSL客户端,并调用另一个为双向SSL启用的组件.两个组件中的证书都是正确的,有时连接工作正常.每个服务器都有自己的服务器证书和私钥,但具有 ...
- java单位转换_如何创建单位转换Java程序
步骤1:设置 步骤2:为LengthConverter创建骨架 注意: 在代码中添加注释通常是个好主意.在上面的方法中做注释,以解释方法的作用,解释传递给方法的参数,解释方法的返回值等.这将帮助您了解 ...
- ec java sm2证书_国密算法SM2证书制作
前段时间将系统的RSA算法全部升级为SM2国密算法,密码机和UKey硬件设备大都同时支持RSA和SM2算法,只是应用系统的加解密签名验证需要修改,这个更改底层调用的加密动态库来,原来RSA用的对称加密 ...
最新文章
- 【原创】linux命令bc使用详解
- JQUERY获取text,areatext,radio,checkbox,select值
- 将Java程序作成exe文件的几种方法【转载】
- LeetCode 1333. 餐厅过滤器(Lambda排序)
- 菜鸟网络宣布推出物流加速上云行动“鲲鹏计划”
- Java Html转pdf实战
- python能做什么效果_python对于做SEO主要有什么作用?
- 计算机学院信息系统,信息系统
- ArcEngine中实现对符号的预览图输出
- TypeError: 'float' object is not iterable
- java语言实现任何一种排序_请用java语言编写排序程序。
- 算法案例之有效字母异位词
- OpenCV-图像处理(29、凸包-Convex Hull)
- 下docfetcher先下Java,docfetcher怎么用-docfetcher的使用教程 - 河东软件园
- 怎样两台计算机共用一台打印机,多台电脑如何共享一台打印机(图文讲解)
- 注册表-在IE上永久显示我的名字www.baidu.com - 朱建强
- 哇哦,它让美味随心所“鲜”
- Java 拆分PDF文档
- 力扣-股票的资本损益
- Visual Studio code 代码格式化整理