簡體   English   中英

Xamarin.Forms PCL javax.net.ssl.SSLHandshakeException

[英]Xamarin.Forms PCL javax.net.ssl.SSLHandshakeException

我正在研究Xamarin.Forms PCL項目,並且正在嘗試向位於Intranet SSL服務器上的REST API發送請求。 Intranet服務器正在使用自簽名證書。 我已經在Android項目上對此進行了測試,但出現以下錯誤:

11-30 19:59:10.645 E / mono-rt(4180):[錯誤]致命異常:Javax.Net.Ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:找不到證書路徑的信任錨。 ---> Java.Security.Cert.CertificateException:java.security.cert.CertPathValidatorException:找不到證書路徑的信任錨。 ---> Java.Security.Cert.CertPathValidatorException:找不到證書路徑的信任錨。 11-30 19:59:10.645 E / mono-rt(4180):-內部異常堆棧跟蹤的結尾--11-30 19:59:10.645 E / mono-rt(4180):--- End內部異常堆棧跟蹤--11-30 19:59:10.645 E / mono-rt(4180):-托管Javax.Net.Ssl.SSLHandshakeException堆棧跟蹤結束-11-30 19:59: 10.645 E / mono-rt(4180):javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:找不到證書路徑的信任錨。 11-30 19:59:10.645 E / mono-rt(4180):在com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:361)11-30 19:59:10.645 E / mono-rt( 4180):在com.squareup.okhttp.Connection.upgradeToTls(Connection.java:242)11-30 19:59:10.645 E / mono-rt(4180):在com.squareup.okhttp.Connection.connect(Connection。 java:159)11-30 19:59:10.645 E / mono-rt(4180):在com.squareup.okhttp.Connection.connectAndSetOwner(Connection.java:175)11-30 19:59:10.645 E / mono- rt(4180):at com.squareup.okhttp.OkHttpClient $ 1.connectAndSetOwner(OkHttpClient.java:120)11-30 19:59:10.645 E / mono-rt(4180):at com.squareup.okhttp.internal.http .HttpEngine.nextConnection(HttpEngine.java:330)11-30 19:59:10.645 E / mono-rt(4180):在com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:319)11 -30 19:59:10.645 E / mono-rt(4180):在com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:241)11-30 19:59:10.645 E / mono-rt (4180):位於com.squareup.okhttp.Call.getResponse(C all.java:271)11-30 19:59:10.645 E / mono-rt(4180):在com.squareup.okhttp.Call $ ApplicationInterceptorChain.proceed(Call.java:228)11-30 19:59:10.645 E / mono-rt(4180):在com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:199)11-30 19:59:10.645 E / mono-rt(4180):在com.squareup.okhttp Call.access $ 100(Call.java:34)11-30 19:59:10.645 E / mono-rt(4180):在com.squareup.okhttp.Call $ AsyncCall.execute(Call.java:162)11-30 19:59:10.645 E / mono-rt(4180):at com.squareup.okhttp.internal.NamedRunnable.run(NamedRunnable.java:33)11-30 19:59:10.645 E / mono-rt(4180):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)11-30 19:59:10.645 E / mono-rt(4180):在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java :607)11-30 19:59:10.645 E / mono-rt(4180):位於java.lang.Thread.run(Thread.java:761)11-30 19:59:10.645 E / mono-rt(4180 ):由以下原因引起:java.security.cert.CertificateException:java.security.cert.CertPathValidatorExceptio n:找不到證書路徑的信任錨。 11-30 19:59:10.645 E / mono-rt(4180):在com.android.org.conscrypt.TrustManagerImpl.verifyChain(TrustManagerImpl.java:563)11-30 19:59:10.645 E / mono-rt( 4180):位於com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:444)11-30 19:59:10.645 E / mono-rt(4180):位於com.android.org.conscrypt.TrustManagerImpl。 checkTrusted(TrustManagerImpl.java:401)11-30 19:59:10.645 E / mono-rt(4180):在com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:375)11-30 19:59 :10.645 E / mono-rt(4180):在com.android.org.conscrypt.TrustManagerImpl.getTrustedChainForServer(TrustManagerImpl.java:304)11-30 19:59:10.645 E / mono-rt(4180):在android。 security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:94)11-30 19:59:10.645 E / mono-rt(4180):在android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java: 88)11-30 19:59:10.645 E / mono-rt(4180):位於com.android.org.conscrypt.Platform。 checkServerTrusted(Platform.java:178)11-30 19:59:10.645 E / mono-rt(4180):在com.android.org.conscrypt.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:596)11-30 19:59 :10.645 E / mono-rt(4180):在com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(本機方法)11-30 19:59:10.645 E / mono-rt(4180):在com.android.org .conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:357)11-30 19:59:10.645 E / mono-rt(4180):...還有16個11-30 19:59:10.645 E / mono-rt(4180 ):由以下原因引起:java.security.cert.CertPathValidatorException:找不到證書路徑的信任錨。 11-30 19:59:10.645 E / mono-rt(4180):...還有27個

我該如何解決?

試試這個,它將覆蓋自簽名的ssl證書。 在您的android OnCreate()方法中彈出它。

System.Net.ServicePointManager.ServerCertificateValidationCallback +=
(sender, cert, chain, sslPolicyErrors) =>
{
    if (cert != null) System.Diagnostics.Debug.WriteLine(cert);
    return true;
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM