JBoss和Cordova应用程序

时间:2016-07-26 14:34:52

标签: javascript android cordova ssl jboss

这是我的第一个问题,请耐心等待。我目前正在为Android平台开发Cordova应用程序,最近我被要求通过https测试与服务器的连接。我找到了Secure-HTTP cordova插件(http://plugins.telerik.com/cordova/plugin/secure-http)并决定在JBoss eap服务器上安装一个简单的Hello-world应用程序(JBoss Developer Studio中的最新版本)(实际上我使用了helloworld-ws quickstart)。首先,我尝试使用插件方法通过标准HTTP进行连接:

var result = window.cordovaHTTP.get(
  "http://my_adress:port",
  {}, // optional params
  {}, // optional headers
  function(msg) {alert("OK: " + msg)},
  function(msg) {alert("ERROR: " + msg)});

我还将我的地址列入白名单,以便可以从我的设备访问。结果对象包含状态信息200和html代码作为其值(因此它是成功的)。我不知道为什么功能与'OK'警报没有被解雇。要启用与Jboss的https连接,我在standalone.xml中添加了这些行:

<security-realm name="UndertowRealm">
    <server-identities>
        <ssl>
            <keystore path="myKey.keystore" relative-to="jboss.domain.config.dir" keystore-password="myPass" alias="alias" key-password="myPass"/>
        </ssl>
    </server-identities>
</security-realm>

<security-realms>中添加了上面的安全领域。我也在下载服务中创建了新的监听器<https-listener name="https" socket-binding="https" security-realm="UndertowRealm"/>我没有触摸默认的https监听端口(8443)。

myKey.keystore由java keytool生成。还使用keytool从我的密钥库创建了myCert.crt。然后我将myCert.crt放在我的Cordova项目的/ platforms/android/assets位置,并将myKey.keystore放在JBoss的可访问位置。我在我的虚拟设备上安装了myCert.crt证书(没有错误)。 第一个问题:https:/ myAdress:8443仅在浏览JBoss Developer Studio时有效,在Chrome浏览器中我得到了ERR_CONNECTION_CLOSED。 当我尝试使用Secure-HTTP插件时使用:

var isPinned = window.cordovaHTTP.enableSSLPinning(
  true, 
  function (msg) {alert("Success: " + msg)},
  function (msg) {alert("Error: "   + msg)}
);
var result = window.cordovaHTTP.get(
  "https://myAdress:8443",
  {}, 
  {}, 
  function(msg) {alert("OK: " + msg)},
  function(msg) {alert("ERROR: " + msg)}
);

我收到了一个嵌套的结果对象,状态= 500,值=&#39;内部错误&#39;。没有警报功能被触发,尝试将其记录到控制台,但仍未使用这些功能。当我仅使用get方法时,没有enableSSLPinning我收到&#34; SSL握手失败&#34;错误。 我尝试在get成功函数中嵌套enableSSLPinning,但它从未被触发(即使isPinned具有&#39; OK&#39;值)。 现在我完全不知道在哪里搜索问题,也是我第一次通过JavaScript和JBoss实现这种连接。也许我错过了JBoss配置中的一些东西?或者myKey.keystore和myCert.crt文件有问题吗?也许JBoss对我的任务有点复杂,你是否建议在部署服务器上更容易测试https?我将不胜感激任何建议!

编辑:问题解决了,这是证书问题。要在我的模拟AVD上安装我自己签名的证书,我根据以下网站创建了证书:https://aboutssl.org/how-to-create-and-import-self-signed-certificate-to-android-device。我想连接cordova android应用程序与托管在我的PC的localhost上的JBoss服务器。为此,我使用CN =&#34; myDomain&#34;创建了证书,然后通过adb cli在我的AVD上修改了/ etc / hosts文件。

adb root
adb remount
adb echo '10.0.2.2 myDomain' >> /etc/hosts 

警告:adb remount不适用于Android SDK Tools ver。 25.1.7。

0 个答案:

没有答案