我正在使用 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]
让我详细说明我遵循的确切步骤:
服务器端变化:
- 从 server.xml 中删除 httpPort="10080" 以便服务器仅在端口 10443 上运行
- 为服务器创建自签名证书。我使用 openssl 生成自签名证书。首先,使用命令“openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt”创建证书和私钥文件
- 接下来,使用命令“openssl pkcs12 -export -in certificate.crt -inkey privateKey.key -out server.p12 -passout pass:passServerP12 -passin pass:passServer”创建一个密钥库文件,将证书和密钥压缩到一个文件中
- 配置 mfp 服务器以使用我在上面生成的新密钥库。本质上,将 server.p12 文件复制到工作空间目录下的“MobileFirstServerConfig\servers\worklight\resources\security”
<keyStore id="defaultKeyStore" password="worklight"/>
在 server.xml 中删除(或注释掉)- 确保
<feature>ssl-1.0</feature>
在<featureManager>
添加以下行下设置
<ssl id="mySSLSettings" keyStoreRef="myKeyStore"/> <keyStore id="myKeyStore" location="server.p12" password="passServerP12" type="PKCS12"/> <sslDefault sslRef="mySSLSettings"/>
- 使用设置为的构建设置构建移动应用程序并将其
https://<server>:10443
部署在 mfp 服务器中
移动设备端变化:
- 将证书(上面生成的certificate.crt)下载到移动设备上。在设备上安装文件并接受证书。
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。- 将应用程序下载到设备上,它应该开始与服务器联系
https://<server>:10443
。
虽然上面的第 2 步对我很有效,但第 3 步是行不通的。本质上,chrome 浏览器正在获取证书,而移动应用程序则没有。
在 Eclipse 中构建移动应用程序时我需要做些什么,以便它从 android 设备中获取受信任(和自签名)证书?