![](/img/trans.png)
[英]javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed Flutter
[英]Java -> Flask Https Request: javax.net.ssl.SSLHandshakeException: PKIX path building failed
所以我試圖向我的Flask應用程序發送一個HTTPS請求。 之前,它僅使用 HTTP 就可以成功運行。 現在,我想將其更改為 HTTPS。
但不幸的是,它不起作用。 在我的 Java IDE 和我的 Python Z581D6381F3F3F35E4F9D4F7720 中得到這些錯誤:
javax.net.ssl.SSLException:不支持或無法識別的 SSL 消息(Java 客戶端)
代碼 400,消息錯誤請求版本 ("\x1bè\x13\x16)...和"‚ ~ˆòÎ×ý›tYê >ôeïõ?2ŸÏËðÚü$ü^d ‰ô$NªO5~EN4ë=Y8õûb~ïÁ¢˜ è) bÀ,À+Ì©À0̨À/ ŸÌª £ ž ¢À$À(À#À' kjg @À.À2À-À1À&À À%À)À" HTTPStatus.BAD_REQUEST *(Flask 服務器端)
我發送請求的代碼是:
URL myURL = new URL(requestUrl);
HttpsURLConnection connection = (HttpsURLConnection) myURL.openConnection();
connection.setRequestMethod("GET");
System.out.println(connection.getResponseCode());
...
基本上,我只是將連接 object 更改為 Https,並將 URL 字符串修改為使用“https”。 它與 HTTP 完美配合,而現在,HTTPS 沒有任何效果。
我該怎么做才能讓它與 HTTPS 一起工作?
編輯:在我的 Flask 應用程序中,我將app.run
更改為還包含參數ssl_context='adhoc'
。 現在我得到一個不同的例外:
javax.net.ssl.SSLHandshakeException:PKIX 路徑構建失敗:sun.security.provider.certpath.SunCertPathBuilderException:無法找到請求目標的有效證書路徑
ssl_context='adhoc'
是正確的方法。
這會生成一個自定義 SSL 證書,您可以通過 https 訪問您的 Flask 應用程序。
但...
由於此證書是自簽名的,因此您的客戶端(瀏覽器、curl 或 Java 應用程序)不信任該證書。
這就是您收到錯誤消息的原因。
請查看以下博客文章以了解更多您可以做些什么:
https://blog.miguelgrinberg.com/post/running-your-flask-application-over-https
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.