android 如何配置BouncyCastle For Mac OSX Maverick

oymdgrw7  于 2023-06-28  发布在  Android
关注(0)|答案(2)|浏览(128)

我正试图将bouncycastle添加到我的类路径中,我能找到的唯一说明是针对Windows的。我需要它,这样我就可以连接我的Android客户端到我的服务器。有人遇到过同样的问题吗?

a6b3iqyw

a6b3iqyw1#

用户2829409问题答案

其实很简单只需将提供程序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文件夹中。
我希望这对外面的人有帮助。

g6ll5ycj

g6ll5ycj2#

我想我会写这个作为一个答案,即使OP在编辑中给出了解决方案。额外的解释可能会有所帮助,但更重要的是,在这样做之后,我遇到了Gradle或Android Studio的一个奇怪问题。所以,这里的一步一步是:
所提到的“供应商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`

相关问题