簡體   English   中英

Java -> Flask Https Request: javax.net.ssl.SSLHandshakeException: PKIX path building failed

[英]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.

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