我遵循的详细分步说明实现了这一目标

从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密钥库相关推荐

  1. tkinter如何lable重复显示到同一行中_如何创建包含 CAD 导入和选择的仿真 App

    在使用 COMSOL 软件二次开发的过程中,你可能会遇到这样的问题:如何使用 App 开发器创建可以处理 CAD 导入并能让用户交互式选择边界条件的仿真 App?我需要了解编程吗?今天我们将为您介绍在 ...

  2. Java笔记-为客户端及服务端创建公私钥的密钥库

    使用密钥库使得客户端与服务器之间进行安全的通信,通过下面的方式生成公钥私钥库: 1. 创建client及server的keystore. 2. 从keystore中导出certificate. 3. ...

  3. java后端语言_后端程序员一定要看的语言大比拼:Java vs. Go vs. Rust

    这是Java,Go和Rust之间的比较.这不是基准测试,更多是对可执行文件大小.内存使用率.CPU使用率.运行时要求等的比较,当然还有一个小的基准测试,可以看到每秒处理的请求数量,我将尝试对这些数字进 ...

  4. jsp中java代码无效_来杯咖啡,教你如何优雅的在java中统计代码块耗时

    推荐阅读: Sping源码+Redis+Nginx+MySQL等七篇实战技术文档,阿里大佬推荐 阿里内部:2020年全技术栈文档+PPT分享,(万粉总结,回馈粉丝) 在我们的实际开发中,多多少少会遇到 ...

  5. python处理字典中双引号_如何创建带有双引号作为默认引号格式的Python词典?

    如何创建带有双引号作为默认引号格式的Python词典? 我正在尝试创建一个python字典,该字典将用作html文件中的java脚本变量,以实现可视化目的. 作为必要条件,我需要创建所有名称都用双引号 ...

  6. java csr 证书_使用JAVA自带security,创建测试用的CSR证书请求文件

    项目中要用到安全证书,生成CSR测试. 不多说,直接上干货. 1.什么是数字证书,这篇文章讲的不错,通俗易懂,简单明了. http://www.ruanyifeng.com/blog/2011/08/ ...

  7. 自建ca根证书_如何创建私有 CA 并签发证书

    为什么需要自己的 CA? 因为公共 CA (比如排名前几的这几家:Comodo, Symantec, GlobalSign, DigiCert, StartCom)颁发证书要收费,而且价格很贵.当然现 ...

  8. java tls 证书_在使用Java 8重新协商TLS_1.2期间,服务器证书更改受到限制

    我对SSL很陌生,并且被看似已知的问题所困扰.我的应用程序是SSL客户端,并调用另一个为双向SSL启用的组件.两个组件中的证书都是正确的,有时连接工作正常.每个服务器都有自己的服务器证书和私钥,但具有 ...

  9. java单位转换_如何创建单位转换Java程序

    步骤1:设置 步骤2:为LengthConverter创建骨架 注意: 在代码中添加注释通常是个好主意.在上面的方法中做注释,以解释方法的作用,解释传递给方法的参数,解释方法的返回值等.这将帮助您了解 ...

  10. ec java sm2证书_国密算法SM2证书制作

    前段时间将系统的RSA算法全部升级为SM2国密算法,密码机和UKey硬件设备大都同时支持RSA和SM2算法,只是应用系统的加解密签名验证需要修改,这个更改底层调用的加密动态库来,原来RSA用的对称加密 ...

最新文章

  1. 【原创】linux命令bc使用详解
  2. JQUERY获取text,areatext,radio,checkbox,select值
  3. 将Java程序作成exe文件的几种方法【转载】
  4. LeetCode 1333. 餐厅过滤器(Lambda排序)
  5. 菜鸟网络宣布推出物流加速上云行动“鲲鹏计划”
  6. Java Html转pdf实战
  7. python能做什么效果_python对于做SEO主要有什么作用?
  8. 计算机学院信息系统,信息系统
  9. ArcEngine中实现对符号的预览图输出
  10. TypeError: 'float' object is not iterable
  11. java语言实现任何一种排序_请用java语言编写排序程序。
  12. 算法案例之有效字母异位词
  13. OpenCV-图像处理(29、凸包-Convex Hull)
  14. 下docfetcher先下Java,docfetcher怎么用-docfetcher的使用教程 - 河东软件园
  15. 怎样两台计算机共用一台打印机,多台电脑如何共享一台打印机(图文讲解)
  16. 注册表-在IE上永久显示我的名字www.baidu.com - 朱建强
  17. 哇哦,它让美味随心所“鲜”
  18. Java 拆分PDF文档
  19. 力扣-股票的资本损益
  20. Visual Studio code 代码格式化整理

热门文章

  1. html5海洋模板,海洋cms模板 海洋cms影视模板 海洋cms模板简洁
  2. skip gram模型的实现
  3. 尺寸工程分析软件-尺寸公差分析软件-尺寸链计算软件
  4. Interval 类型总结
  5. 重装系统要钱吗?电脑重装系统需要多少钱?
  6. 如何在CSDN上上传资源
  7. 如何将多sheet Excel 导入到超级表格中
  8. shell编程——select语句
  9. 360WiFi之愚见
  10. 教你来使用雪碧图(CSS sprite)