BouncyCastle(BKS)简单总结
环境:
Windows10
jdk1.8.0_321及路径为:C:\Program Files\Java\jdk1.8.0_321\
0x01 安装Bouncy Castle
1. 下载
可以在通过官方界面下载bouncycastle
https://www.bouncycastle.org/latest_releases.html
也可以直接通过下面链接下载jar包
https://downloads.bouncycastle.org/java/bcprov-ext-jdk18on-172.jar
如果通过浏览器访问出现
可以直接通过命令行下载
curl https://downloads.bouncycastle.org/java/bcprov-ext-jdk18on-172.jar -o bcprov-ext-jdk18on-172.jar
2. 安装
将下载后的jar包放入C:\Program Files\Java\jdk1.8.0_321\jre\lib\ext
3. 配置
配置Java的classpath
环境变量,新增以下内容
;%JAVA_HOME%\jre\lib\ext\bcprov-ext-jdk18on-172.jar
修改%JAVA_HOME%/jre/lib/security/java.security
文件配置
以本地环境为例,是修改C:\Program Files\Java\jdk1.8.0_321\jre\lib\security\java.security
文件。
在文件中的security.provider.10
下新增。数字自+1即可。(修改该文件需要管理员权限)
0x02 使用Bouncy Castle
1. 生成密钥对
如果证书库文件truststore.bks
不存在,会自动创建,如果存在,则会直接加入到证书库中,输入命令:
keytool -genkeypair -alias mykey1 -keystore ./truststore.bks -storepass bks_store_pass -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider
-alias
:自定义密钥对别名 。
-keystore
:本地bks证书库文件,可自定义证书库文件名称,如果文件不存在,会自动创建 。
-storepass
:证书库密码。
得到密钥库truststore.bks
如果遇到ClassNotFoundException: org.bouncycastle.jce.provider.BouncyCastleProvider
问题,
可以直接指定BouncyCastle jar包的位置,-providerpath
例如:
keytool -genkey -alias mykey1 -keystore ./truststore.bks -storepass bks_store_pass -storetype BKS -providerpath ./bcprov-ext-jdk18on-172.jar -provider org.bouncycastle.jce.provider.BouncyCastleProvider
2. 查看证书库
查看证书库,密码为上面命令中的 bks_store_pass
,输入以下命令:
keytool -list -storetype BKS -keystore ./truststore.bks
查看详细信息可以加-v
3. 导出公钥
通过密钥对导出公钥,私钥无法通过keytool导出,只能导出密钥对的公钥。私钥文件只能通过代码来导出,私钥导出代码参考
导出指定的密钥对mykey1
的公钥
keytool -exportcert -alias mykey1 -storetype BKS -keystore ./truststore.bks -file ./mykey_pub.cer -rfc -storepass bks_store_pass
-alias
:请修改密钥库中的密钥名。
-file ./mykey_pub.cer
:自定义要导出成的密钥文件名,后缀可以任意更改。
-keystore
:本地bks证书库文件。
-storepass
:证书库密码。
-rfc
:会使用Base64格式输出证书,否则以二进制格式输出。
4. 导入证书
以burp.cer
证书为例
keytool -importcert -v -trustcacerts -alias burpcer -file ./burp.cer -keystore mytrustcerts.bks -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider -storepass store_pass
-alias
:自定义别名。
-file burp.cer
:要导入的证书文件。
-keystore
:本地bks证书库文件,可自定义证书库文件名称,如果文件不存在,会自动创建。
-storepass
:证书库密码。
5. 导出证书
以上面的mytrustcerts.bks
为例:
keytool -exportcert -alias burpcer -storetype BKS -keystore ./mytrustcerts.bks -file ./burp_export.cer -rfc -storepass store_pass
-alias
:自定义别名。
-file burp.cer
:要导出成的证书文件名。
-keystore
:指定要导出的bks证书库文件。
-storepass
:证书库密码。
-rfc
:会使用Base64格式输出证书,否则以二进制格式输出。
6. 删除别名
删除别名burpcer
,相当于删除密钥库里的项(密钥对,证书等)
keytool -delete -alias burpcer -keystore ./mytrustcerts.bks -storetype BKS -storepass store_pass
删除后无任何提示信息
本文来自博客园,作者:Jarwu,转载请注明原文链接:https://www.cnblogs.com/jarwu/p/17213838.html