1

我正在使用 MobileFirst 6.3.0 版,并且正在尝试将 MobileFirst 服务器设置为仅在 https 模式下运行。从本质上讲,这意味着我需要在服务器端生成一个自签名证书,并且还要在我的 Android 设备上安装该证书才能使应用程序正常工作。

我已将 MobileFirst 服务器设置为仅在端口 10443 上运行,并且能够看到 chrome 浏览器(来自我的 android 设备)能够访问https://<server>:10443/worklightconsole,而不会警告我访问不受信任的网站 [我将此视为证书已正确安装的确认在移动设备上]。但是,我看到我从 MobileFirst 生成的 android 应用程序无法连接到服务器(我认为这不是连接问题,因为当我构建要使用http://<server>:10080的应用程序时,应用程序运行良好。它只会在我失败时失败重建应用程序以使用https://<server>:10443.

我按照 MFP 文档中提到的说明创建了一个自签名证书 [ http://www-01.ibm.com/support/knowledgecenter/SSHS8R_6.3.0/com.ibm.worklight.installconfig.doc/admin/ t_updating_keystore_liberty.html?lang=en]

让我详细说明我遵循的确切步骤:

服务器端变化:

  1. 从 server.xml 中删除 httpPort="10080" 以便服务器仅在端口 10443 上运行
  2. 为服务器创建自签名证书。我使用 openssl 生成自签名证书。首先,使用命令“openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt”创建证书和私钥文件
  3. 接下来,使用命令“openssl pkcs12 -export -in certificate.crt -inkey privateKey.key -out server.p12 -passout pass:passServerP12 -passin pass:passServer”创建一个密钥库文件,将证书和密钥压缩到一个文件中
  4. 配置 mfp 服务器以使用我在上面生成的新密钥库。本质上,将 server.p12 文件复制到工作空间目录下的“MobileFirstServerConfig\servers\worklight\resources\security”
  5. <keyStore id="defaultKeyStore" password="worklight"/>在 server.xml 中删除(或注释掉)
  6. 确保<feature>ssl-1.0</feature><featureManager> 添加以下行下设置
    <ssl id="mySSLSettings" keyStoreRef="myKeyStore"/> <keyStore id="myKeyStore" location="server.p12" password="passServerP12" type="PKCS12"/> <sslDefault sslRef="mySSLSettings"/>
  7. 使用设置为的构建设置构建移动应用程序并将其https://<server>:10443部署在 mfp 服务器中

移动设备端变化:

  1. 将证书(上面生成的certificate.crt)下载到移动设备上。在设备上安装文件并接受证书。
  2. https://<server>:10443/worklightconsole通过在 chrome 浏览器上访问,确保该证书现在受到移动设备和浏览器的信任。根据此处显示的屏幕截图,此步骤继续进行:http ://www-01.ibm.com/support/knowledgecenter/?lang=en#!/SSHS8R_6.3.0/com.ibm.worklight.installconfig.doc/admin /t_installing_root_CA_android.html
  3. 将应用程序下载到设备上,它应该开始与服务器联系https://<server>:10443

虽然上面的第 2 步对我很有效,但第 3 步是行不通的。本质上,chrome 浏览器正在获取证书,而移动应用程序则没有。

在 Eclipse 中构建移动应用程序时我需要做些什么,以便它从 android 设备中获取受信任(和自签名)证书?

4

1 回答 1

2

上面的步骤 2 验证浏览器是否信任您的服务器,但它不验证设备是否信任您的服务器。设备和浏览器使用两种不同的信任存储和 ssl 逻辑(在某些情况下)。

Idan 的问题和我一样,你是如何“安装”根 CA 的?通过浏览器或通过电子邮件或下载链接通过设备?如果是通过浏览器导入,则不会将其放在您需要它的设备信任库中。

于 2015-03-18T14:57:06.833 回答