WSO2 Android代理证书

时间:2014-03-19 15:04:38

标签: android certificate wso2 mdm

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

我已按照WSO2文档中的所有说明进行操作。这就是我所做的:

  • 我按照客户的指示行事:

其中包括根据我在iOS Server Configurations中创建的证书创建.bks文件。我完成了第2,3,4,5,6,7和11步。

然后我按照git的说明使用ca_cert.pem和ca.p12来创建一个.bks文件,我将其重命名为emm_truststore.bks并按照说明添加到我的项目中。

客户端仍然有159个警告和0个错误......这些是否需要解决?因为我按原样导出了项目。大多数警告表示不使用或弃用的方法。

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

错误 - 启动tomcat连接器时出现LifeCycleException   引起:org.apcahe.catalina.LifeCycleException:Service.getName():" Catalina&#34 ;;协议处理程序启动失败   错误 - 初始化节俭运输时出错   错误 - 无法初始化权利服务

MDM不起作用。

然而,当我回去并撤消客户端设置中的步骤7,并将原始client-truststore.jks,wso2carbon.jks和wso2mobilemdm.jks文件放在安全文件夹中时,服务器启动时没有任何hickup。 - 我可以访问MDM界面,创建角色和策略,并向我的设备发送电子邮件。 - 在我的设备上,我可以访问服务器,下载并安装apk。    - 问题在于应用程序和服务器无法通信。 "由于连接失败而导致身份验证失败您想再试一次吗?"

所以我做了一些挖掘,可能出现的问题是由于以下原因之一:

  1. 存在连接问题。
  2. 证书不匹配。
  3. 1)关于连接这是我的设置:我正在运行我的笔记本电脑(localhost)的服务器,它通过wifi连接到我们公司的网络。然后我在同一个网络上连接我的设备。为了到达服务器'在我的笔记本电脑上运行,我利用笔记本电脑的IP。 (因此我能够下载apk)。该设备也已通过我们的代理清除。这是否可能导致问题?

    2)关于证书,我热心地遵循了指示。然而有一件事仍困扰着我;就是当我导出我的项目时,Eclipse要求一个' keystore'然后我重新创建。这会影响应用程序还是其他地方的问题?

2 个答案:

答案 0 :(得分:2)

结果证明我的问题与我的证书有关。以下是我解决问题的方法:

  1. 我将client-truststore.jks和wso2carbon.jks复制到一个文件夹中。
  2. 在文件夹中,我使用下面的代码创建了一个批处理文件并执行了它。 *为了使此代码有效,您需要将BouncyCastel.jar - bcprov-ext-jdk15on-1.46.jar文件放在C:root中并将其复制到程序文件下的jre / ext文件夹中。 还要确保已安装SSL并在环境变量中设置,以及java的keytool。
  3. 执行批处理文件时,请确保正确设置密码; CA设置为' cacert',RA设置为' racert'和IA设置为' iacert'。 当您到达KEYSTORE.p12,ca.p12和ra.p12导出时,将其密码设置为' wso2carbon' cacert'和'赛道'分别。 *在设置证书的通用名称时,请记住使用您的服务器IP。 *当提示在client-truststore.jks和wso2carbon.jks中过度使用wso2carbon别名时,请说“是”。
  4. 接下来将client-truststore.jks,wso2carbon.jks和wso2mobilemdm.jks复制到您的/ repository / resources / security,替换旧的。
  5. 将生成的emm_truststore.bks复制到应用程序中的res / raw文件夹,并更新CommonUtilities.java以反映信任库密码(在这种情况下,请在批处理文件中更改它)如果你愿意的话。
  6. 更新/repository/conf/mdm-conf.xml文件,就像第11点的iOS server example一样。
  7. 最后,当您导出应用程序时,您可以使用wso2mobilemdm.jks对您的应用程序进行签名。
  8. 所有这些密码和别名都是为了简化而使用的,一旦理解了基本概念和工作原理,只要所有更改都得到适当反映,您就可以更改它们。

     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 ./
    

答案 1 :(得分:0)

好的,我认为从你的描述看,你在第一部分设置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文件并使用portecle进行转换。这样您就可以简单地使用现有的。

尝试设置的最简单方法是使用HTTP而不是HTTPS来传达您的Android代理应用。这样它可以工作但不推荐。这只是为了测试包装是否完美。为此,您可以更改Android代理应用程序中的配置条目,即使您没有任何条目,它也可以正常工作。

希望这会有所帮助。让我知道这是否适合您。