如何为Mac OSX Maverick配置BouncyCastle

时间:2014-02-19 22:18:10

标签: android macos ssl-certificate bouncycastle

我正在尝试将bouncycastle添加到我的类路径中,我能找到的唯一指令是Windows。我需要它,所以我可以将我的Android客户端连接到我的服务器。有没有人遇到同样的问题?

2 个答案:

答案 0 :(得分:1)

在他的问题中由user2829409提供的答案

实际上非常简单。只需将提供者jar添加到System / Library / Java / Extensions,操作系统就会将其添加到您的类路径中。然后运行一些代码:

keytool -importcert -v -trustcacerts -file "YOUR_CERT.crt" -alias imeto_alias -keystore
"NEW_BKS_SERVER_CERT_NAME.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider
-providerpath "bcprov-jdk16-146.jar" -storetype BKS

您应该看到提示要求输入密码。输入密码,然后添加" NEW_BKS_SERVER_CERT_NAME.bks"进入eclipse中的res / raw文件夹。

我希望能帮到那里的人。

答案 1 :(得分:0)

我认为即使OP在编辑中提供了解决方案,我也会将其写为答案。额外的说明可能会有所帮助,但更重要的是,在执行此操作后,我遇到了Gradle或Android Studio的奇怪问题。所以,这里一步一步是:

提到的“proivder JAR”指的是Bouncy Castle JAR。我使用的那个是从maven.org/maven2/org/bouncycastle/bcprov-ext-jdk15on/1.46/下载的。按照说明将其删除到/System/Library/Java/Extensions

使用OP提供的行但请务必更改-providerpath "bcprov-jdk16-146.jar"以匹配您实际拥有的JAR。所以我们在这里:

-providerpath "bcprov-ext-jdk15on-1.46.jar"

现在你有了信任库。尝试在Android Studio中构建时出现以下错误:

Error:Execution failed for task ':app:packageDebug'. > class org.bouncycastle.asn1.ASN1Primitive overrides final method equals.(Ljava/lang/Object;)Z

显然问题是现在在类路径上有两个Bouncy Castle JAR。所以删除你添加到/ Extensions的那个,一切都会好的。

要使用自签名证书和后续BKS信任库创建密钥库,我使用了以下命令:

创建密钥库

keytool -genkey -keyalg RSA -alias selfsigned -keystore server.jks -storepass password -validity 360 -keysize 2048

创建信任库

keytool -export -alias selfsigned -keystore server.jks -file server.cer -storepass password
keytool -importcert -v -trustcacerts -file "server.cer" -alias server_truststore \
-keystore "server_truststore.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider \
-providerpath "bcprov-ext-jdk15on-1.46.jar" -storetype BKS`