WSO2 Android代理证书



我正在使用WSO2的企业移动管理器尝试将设备连接到它。

我遵循了WSO2文档中的所有说明。下面是我所做的:

  • 我遵循客户的指示:

这包括从我在iOS服务器配置中创建的证书创建一个。bks文件。我完成了步骤2、3、4、5、6、7和11。

然后我按照git的指示使用ca_cert。以创建一个.bks文件,我将其重命名为emm_truststore。BKS和添加到我的项目按照指示。

客户端仍然有159个警告和0个错误…这些问题需要解决吗?因为我已经按原样导出了项目。大多数警告指示的方法没有使用或不赞成使用。

    我按照指示设置了数据库,一切正常。在启动服务器时,它抛出:

ERROR - LifeCycleException当启动tomcat连接器org.apcahe.catalina.LifeCycleException: Service.getName(): "Catalina";协议处理程序启动失败初始化节俭传输时出错错误-初始化授权服务失败

并且MDM不工作。

但是,当我返回并撤销客户端设置中的步骤7时,并放置原始的client-truststore。jks, wso2carbon。JKS和wso2mobilemdm。安全文件夹中的JKS文件,服务器启动时不会出现任何故障。-I可以访问MDM界面,创建角色和策略,并向我的设备发送电子邮件。-在我的设备上,我可以访问服务器,下载并安装apk。-然后问题就出现了,应用程序和服务器无法通信。"连接失败导致身份验证失败,您想再试一次吗?"

所以我做了一些调查,可能的问题是由于以下之一:

    连接有问题
  1. 证书不匹配。

1)关于连接,这是我的设置:我正在运行我的笔记本电脑(localhost)的服务器,它通过wifi连接到我们公司的网络。然后我把我的设备连接到同一个网络上。为了访问笔记本电脑上运行的"服务器",我使用了笔记本电脑的IP。(因此我能够下载apk)。该设备也已通过我们的代理清除。这些可能是导致问题的原因吗?

关于证书,我认真地按照说明去做。然而,有一件事仍然困扰着我;当我导出我的项目时,Eclipse要求一个"密钥存储库",然后我重新创建它。这是否会影响应用程序,或者是其他地方的问题?

原来我的问题出在证书上。下面是我解决这个问题的方法:

    我复制了客户端信任库。JKS和wso2carbon。
  1. 在文件夹中,我用下面的代码创建了一个批处理文件并执行它。*为了使这段代码工作,你需要将BouncyCastel.jar - bcprov-ext-jdk15on-1.46.jar文件放在你的C:root目录下,并将其复制到程序文件下的jre/ext文件夹中。还要确保在环境变量中安装并设置了SSL,以及java的keytool。
  2. 当执行批处理文件时,确保你设置正确的密码;CA设置为"cacert",RA设置为"racert",IA设置为"iacert"。当您到达KEYSTORE.p12时,ca。P12和ra。设置密码为"wso2carbon"、"cacert"、"racert"。*在设置证书的通用名称时,请记住使用您的服务器IP。当提示在客户端信任存储库中重载wso2carbon别名时也是如此。JKS和wso2carbon。jks,说是的。
  3. 下一步复制客户端信任库。jks, wso2carbon。JKS和wso2mobilemdm。jks到/repository/resources/security,替换旧的。
  4. 复制生成的emm_truststore。bks到应用程序中的res/raw文件夹,并更新CommonUtilities.java以反映信任存储密码(在本例中为'wso2carbon',如果您喜欢,可以在批处理文件中更改它)。
  5. 更新你的/repository/conf/mdm-conf.xml文件,就像第11点iOS服务器的例子一样。
  6. 最后,当您导出应用程序时,您可以使用wso2mobilemdm。

所有这些密码和别名都是为了简单起见而使用的,一旦理解了潜在的概念和工作原理,只要所有的更改都能适当地反映出来,就可以更改它们。

 openssl genrsa -out ca_private.key 4096
openssl req -new -key ca_private.key -out ca.csr
openssl x509 -req -days 365 -in ca.csr -signkey ca_private.key -out ca.crt -extensions v3_ca
openssl rsa -in ca_private.key -text > ca_private.pem
openssl x509 -in ca.crt -out ca_cert.pem
openssl genrsa -out ra_private.key 4096
openssl req -new -key ra_private.key -out ra.csr
openssl x509 -req -days 365 -in ra.csr -CA ca.crt -CAkey ca_private.key -set_serial 02 -out ra.crt -extensions v3_req
openssl rsa -in ra_private.key -text > ra_private.pem
openssl x509 -in ra.crt -out ra_cert.pem
openssl genrsa -out ia.key 4096
openssl req -new -key ia.key -out ia.csr
openssl x509 -req -days 730 -in ia.csr -CA ca_cert.pem -CAkey ca_private.pem -set_serial 044324343 -out ia.crt

openssl pkcs12 -export -out KEYSTORE.p12 -inkey ia.key -in ia.crt -CAfile ca_cert.pem -name "wso2carbon"
openssl pkcs12 -export -out ca.p12 -inkey ca_private.pem -in ca_cert.pem -name "cacert"
openssl pkcs12 -export -out ra.p12 -inkey ra_private.pem -in ra_cert.pem -chain -CAfile ca_cert.pem -name "racert" 

keytool -importkeystore -srckeystore KEYSTORE.p12 -srcstoretype PKCS12 -destkeystore wso2carbon.jks 
keytool -importkeystore -srckeystore KEYSTORE.p12 -srcstoretype PKCS12 -destkeystore client-truststore.jks
keytool -importkeystore -srckeystore ca.p12 -srcstoretype PKCS12 -destkeystore wso2mobilemdm.jks
keytool -importkeystore -srckeystore ra.p12 -srcstoretype PKCS12 -destkeystore wso2mobilemdm.jks
set CLASSPATH=%CLASSPATH%;c:bcprov-ext-jdk15on-1.46.jar
keytool -importcert -trustcacerts -keystore emm_truststore.bks -storetype bks -storepass wso2carbon -file ca_cert.pem -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath ./

好的,我认为从你的描述中,你在第一部分设置jks文件时似乎有问题。在文档中,您必须创建SSL证书。还有CA证书。然后,您需要确保SSL证书需要由CA签名。这样,当您将CA嵌入到bks文件中时,它将识别通信,因为下划线SSL通道与CA签名的SSL证书一起运行。我认为您在第一阶段搞砸的是wso2carbon.jks的关键导入。确保使用现有别名正确导入它。如果更改别名,则需要更改更多文件。确保它与我们在repository/conf文件夹中的mdm-config.xml中提供的别名相同。同样,也需要将相同的内容导入到客户机信任库中。如果正确地遵循这一点,它将工作。授权问题与无法识别有效SSL证书的证书问题相关。

从编译的角度来看,我不认为这是一个问题,但最好安装最新的Android SDK。

关于您的第二次尝试,它与证书有关。wso2mobilemdm。jks带有预生成的CA。服务器将与此一起工作。但是为了使它与客户机一起工作,您需要从密钥存储库文件中取出该CA。为此,您可以使用OpenSSL获取CA并将其嵌入到生成的bks文件中。另一件事是,您可以使用相同的jks文件并使用portlet转换它。这样,您就可以简单地使用现有的。

尝试设置的最简单方法是使用HTTP而不是HTTPS与Android代理应用程序通信。这种方式可以工作,但不推荐使用。这只是为了测试背包是否能正常工作。为此,你可以更改Android代理应用程序中的配置条目,即使你在bks中没有任何条目,它也会正常工作。

希望这对你有帮助。让我知道这是否适合你。

最新更新