gpt4 book ai didi

javascript - 如何在 Android 混合应用程序中打开 HTTPS 页面(带有自签名证书)

转载 作者:行者123 更新时间:2023-11-29 01:41:45 24 4
gpt4 key购买 nike

我在 Android 中使用 Cordova 3.1 开发混合应用。

在我的应用程序中,我必须打开一个 HTTPS 页面,这是我的开发服务器配置了一个自签名证书。

如果我直接从浏览器打开 URL,则会出现异常,但我可以接受。如果我从 native 应用程序打开 URL,我可以打开实现 WebViewClient 的 onReceivedSslError 方法的页面。

但是在使用 javascript 的混合应用程序中,使用 window.open() 我无法处理 ssl 异常。

我尝试在 Android 2.3.3 中安装证书,将证书导出到 .cer 文件并使用“设置”>“安全”>“从存储安装”并在浏览器中接受异常进行安装,但仍然失败。

有什么帮助吗?谢谢。

这是 AndroidManifest.XML

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ApiManager" android:versionCode="1" android:versionName="1.0">  
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="18"/>
<supports-screens android:smallScreens="false" android:normalScreens="true" android:largeScreens="false"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<!-- Push permissions -->
<permission android:name="com.ApiManager.permission.C2D_MESSAGE" android:protectionLevel="signature"/>
<uses-permission android:name="com.ApiManager.permission.C2D_MESSAGE"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application android:label="@string/app_name" android:debuggable="true" android:icon="@drawable/icon">
<activity android:name=".ApiManager" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden|screenSize" android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="com.ApiManager.ApiManager.NOTIFICATION"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<!-- Preference Activity -->
<activity android:name="com.worklight.common.WLPreferences" android:label="Worklight Settings"></activity>
<!-- Push service -->
<!-- In order to use the c2dm library, an application must declare a class with the name C2DMReceiver, in its own package, extending com.google.android.c2dm.C2DMBaseReceiver
It must also include this section in the manifest, replacing "com.google.android.apps.chrometophone" with its package name. -->
<service android:name=".GCMIntentService"/>
<service android:name=".ForegroundService"/>
<!-- Only google service can send data messages for the app. If permission is not set - any other app can generate it -->
<receiver android:name="com.google.android.gcm.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND">
<!-- Receive the actual message -->
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
<category android:name="com.ApiManager"/>
</intent-filter>
<!-- Receive the registration id -->
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
<category android:name="com.ApiManager"/>
</intent-filter>
</receiver>
</application>
</manifest>

最佳答案

我发现的其他方法是生成 CA 并使用该 CA 创建证书,然后您必须在移动设备中复制 .cer 并在 Android“设置 > 安全 > 从存储安装”中导入为 CA 生成的 .cer .

openssl genrsa -out myownca.key 1024
openssl req -x509 -new -key myownca.key -out myownca.cer -days 365

这是要安装到手机中的.cer。

然后使用该 CA 生成证书以供服务器使用

openssl genrsa -out mycert.key 1024 
openssl req -new -out mycert.req -key mycert.key
openssl x509 -req -in mycert.req -out mycert.cer -CAkey myownca.key -CA myownca.cer -days 365 -CAcreateserial -CAserial serial
openssl pkcs12 -export -out mykeystore.p12 -inkey mycert.key -in mycert.cer -certfile myownca.cer

这个 .p12 是用于在服务器中导入新证书的文件。

对于最后一个证书,您必须使用 CN 服务器计算机的主机名。

关于javascript - 如何在 Android 混合应用程序中打开 HTTPS 页面(带有自签名证书),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24150763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com