Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何为MacOSX Maverick配置BouncyCastle_Android_Macos_Ssl Certificate_Bouncycastle - Fatal编程技术网

Android 如何为MacOSX Maverick配置BouncyCastle

Android 如何为MacOSX Maverick配置BouncyCastle,android,macos,ssl-certificate,bouncycastle,Android,Macos,Ssl Certificate,Bouncycastle,我正在尝试将bouncycastle添加到我的类路径中,我能找到的唯一说明是针对Windows的。我需要它,这样我就可以连接我的android客户端到我的服务器。有人遇到过同样的问题吗?我想我会写这篇文章作为答案,尽管OP在编辑中给出了解决方案。额外的解释可能会有所帮助,但更重要的是,我在做这件事之后遇到了一个与Gradle或Android Studio有关的奇怪问题。因此,这里的步骤是: 提到的“proivder罐”指的是一个有弹性的城堡罐。我用的那个我从下载的。按照说明将其放入/System

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

我想我会写这篇文章作为答案,尽管OP在编辑中给出了解决方案。额外的解释可能会有所帮助,但更重要的是,我在做这件事之后遇到了一个与Gradle或Android Studio有关的奇怪问题。因此,这里的步骤是:

提到的“proivder罐”指的是一个有弹性的城堡罐。我用的那个我从下载的。按照说明将其放入
/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
显然,问题在于类路径上现在有两个弹跳城堡罐子。因此,删除您添加到/扩展中的一个,一切都会好起来

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

创建密钥库

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`
创建信任库

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`
用户2829409在其问题中提供的答案

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`
其实很简单。只需将提供者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文件夹中


我希望这能帮助别人

。。。这是一个Android应用程序,本地系统的类路径不相关。像任何其他的库一样添加到你的Android应用程序的构建过程中,不管你在使用什么。如果你已经解决了这个问题,考虑添加一个答案,这有助于未来的访问者看到解决方案。