我正在配置wso2-emm
,我坚持的步骤是android configuation,正如教程中所说:
如果SSL证书是自签名的,请使用CA certificate PEM file that is generated for iOS创建与之兼容的BKS文件 的Android
我遵循关于iOS的说明,但它创建.jks文件而不是.bks文件,这是android所必需的。 我尝试使用Portecle将.jks文件转换为.bks但是我收到以下错误:
java.security.UnrecoverableKeyException : Cannot recover key.
如何创建与Android兼容的BKS文件?
答案 0 :(得分:2)
请按以下步骤操作:步骤2至步骤8 https://docs.wso2.com/display/EMM110/iOS+Server+Configurations#iOSServerConfigurations-step2
之后,您可以使用以下命令生成BKS文件:
keytool -noprompt -import -v -trustcacerts -alias' openssl x509 -inform PEM -subject_hash -noout -in ca_cert.pem' -file ca_cert.pem -keystore emm_truststore.bks -storetype BKS -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath bcprov-jdk16-146.jar -storepass' wso2carbon'
注意:您需要在文件夹中包含bcprov-jdk16-146.jar才能生成以上bks文件
生成后,将emm_truststore.bks复制到Android res / raw文件夹。在android源代码中,CommonUtilities.java将SERVER_PORT更改为9443,将SERVER_PROTOCOL更改为https://
答案 1 :(得分:0)
一个问题是用于读取私钥的密码是错误的。您是否为密钥库和密钥输入使用了相同的密码?
另一个问题可能是BouncyCastle库几年前改变了BKS文件格式。 Android使用旧格式,但Portecle等当前工具仅创建新版本。
AFAIR最后的Android兼容版本是1.46。您必须使用包含此版本的旧版portecle。
Portecle v1.7应该可以工作,因为它包含BouncyCastle 1.45。
答案 2 :(得分:0)
我认为使用Portecle直接将jks文件转换为bks格式是不可能的。但你可以使用密钥文件&为获取iOS的CA证书而生成的pem文件。为此,您需要使用Portecle& amp;创建一个新的BKS格式密钥库。然后导入密钥对&的pem文件然后是密钥文件。