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
如果通过浏览器访问出现
image
可以直接通过命令行下载

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
image

3. 配置

配置Java的classpath环境变量,新增以下内容

 ;%JAVA_HOME%\jre\lib\ext\bcprov-ext-jdk18on-172.jar

image

修改%JAVA_HOME%/jre/lib/security/java.security文件配置
以本地环境为例,是修改C:\Program Files\Java\jdk1.8.0_321\jre\lib\security\java.security文件。
在文件中的security.provider.10下新增。数字自+1即可。(修改该文件需要管理员权限)
image

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:证书库密码。
image

得到密钥库truststore.bks

image
如果遇到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

image
查看详细信息可以加-v
image

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格式输出证书,否则以二进制格式输出。
image
image
image

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:证书库密码。
image
image

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格式输出证书,否则以二进制格式输出。
image
image

6. 删除别名

删除别名burpcer,相当于删除密钥库里的项(密钥对,证书等)

keytool -delete -alias burpcer -keystore ./mytrustcerts.bks -storetype BKS -storepass store_pass

删除后无任何提示信息
image

posted @ 2023-03-14 09:55  Jarwu  阅读(636)  评论(0编辑  收藏  举报