【问题标题】:javax.net.ssl.SSLHandshakeException: No enabled protocolsjavax.net.ssl.SSLHandshakeException:没有启用的协议
【发布时间】:2018-04-15 07:08:27
【问题描述】:

当我从我的 nativscript 应用程序调用 http post 到我的节点服务器时,我遇到了这个问题。我无法弄清楚此错误消息的含义。我正在我的 Android KitKat 设备 (API 19) 上运行该应用程序。

System.err: javax.net.ssl.SSLHandshakeException: No enabled protocols; SSLv3 is no longer supported and was filtered from the list
System.err:     at com.google.android.gms.org.conscrypt.SslWrapper.initialize(:com.google.android.gms@12521003@12.5.21 (000306-189987672):7)
System.err:     at com.google.android.gms.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(:com.google.android.gms@12521003@12.5.21 (000306-189987672):6)
System.err:     at com.google.android.gms.org.conscrypt.KitKatPlatformOpenSSLSocketImplAdapter.startHandshake(:com.google.android.gms@12521003@12.5.21 (000306-189987672))
System.err:     at com.android.okhttp.Connection.upgradeToTls(Connection.java:146)
System.err:     at com.android.okhttp.Connection.connect(Connection.java:107)
System.err:     at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294)
System.err:     at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
System.err:     at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
System.err:     at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:89)
System.err:     at com.android.okhttp.internal.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:161)
System.err:     at org.nativescript.widgets.Async$Http$HttpRequestTask.doInBackground(Async.java:543)
System.err:     at org.nativescript.widgets.Async$Http$1.run(Async.java:482)
System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
System.err:     at org.nativescript.widgets.Async$PriorityThreadFactory$1.run(Async.java:52)
System.err:     at java.lang.Thread.run(Thread.java:841)

到目前为止,这是我在 main.ts 中尝试过的:(Edit2)

import { platformNativeScriptDynamic } from "nativescript-angular/platform";

import { AppModule } from "./app.module";

import { android as androidApp, AndroidApplication, AndroidActivityBundleEventData } from "application";
import { ad } from "utils/utils";

declare let com: any;

if (androidApp) {
    const context = ad.getApplicationContext();

    androidApp.on(AndroidApplication.activityCreatedEvent, function (args: AndroidActivityBundleEventData) {
        let builder = new android.os.StrictMode.VmPolicy.Builder();
        android.os.StrictMode.setVmPolicy(builder.build());                

        // Needed for corner cases with HTTP request using TSL on Android API19
        com.google.android.gms.security.ProviderInstaller.installIfNeededAsync(
            context,
            new com.google.android.gms.security.ProviderInstaller.ProviderInstallListener({
                onProviderInstalled: () => {
                    console.log("Provider Installed!");
                    const sslContext = javax.net.ssl.SSLContext.getInstance("TLSv1.2");
                    sslContext.init(null, null, null);
                    const engine = sslContext.createSSLEngine();
                },
                onProviderInstallFailed: (errorCode, intent) => {
                    console.log("Error: " + errorCode);
                }
            }));
    });
}

【问题讨论】:

    标签: android ssl https angular2-nativescript


    【解决方案1】:

    该错误表明您需要启用 SSLv3 协议进行通信。

    转到您的 jdk/jre/lib/security/java.security 并从 jdk.tls.disabledAlgorithms 此列表中删除 SSLv3 协议。

    然后重启应用程序!!!

    【讨论】:

    • 我不同意。它只是说协议列表是空的。 KitKat 至少支持 TLSv1.0,因此不需要启用 SSLv3。此外,您的回答仅适用于 PC 上的 JRE/JDK,不适用于 Android。
    • 嗨@Abhijeet,我可以知道如何导航到该文件夹​​吗?我似乎找不到它。谢谢。
    猜你喜欢
    • 2017-04-27
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 2021-09-27
    • 2021-10-21
    • 1970-01-01
    • 2010-12-14
    相关资源
    最近更新 更多