簡體   English   中英

使用 Gunicorn/Flask 服務超過 HTTPS:ERR_CERT_AUTHORITY_INVALID

[英]Serving over HTTPS with Gunicorn/Flask: ERR_CERT_AUTHORITY_INVALID

尋找一種快速的方法來為 API 服務 HTTPS 用於測試目的。 API 應用程序是使用flask創建的,並使用 gunicorn 在端口 443 上提供gunicorn

gunicorn --certfile=server.crt --keyfile=server.key --bind 0.0.0.0:443 wsgi:app

當我的 React 應用程序(通過 HTTPS 服務)通過 HTTPS 向其中一條路由發送POST請求時,瀏覽器控制台顯示

POST https://1.2.3.4/foo net::ERR_CERT_AUTHORITY_INVALID

我的密鑰和證書是使用創建的

openssl genrsa -aes128 -out server.key 2048
openssl rsa -in server.key -out server.key
openssl req -new -days 365 -key server.key -out server.csr
openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365

是否有解決瀏覽器引發的ERR_CERT_AUTHORITY_INVALID的解決方案,而不使用像 nginx/caddy 這樣的反向代理? 並且無需每個用戶都必須手動信任自簽名證書?

您的瀏覽器/計算機/設備需要信任 gunicorn 提供的證書...您應該在證書中添加您的 PC 的主機名(通用名稱或主題備用名稱)並將證書添加到您的受信任證書列表

我最近在 firefox 使用 open ssl 創建證書時遇到了類似的問題。我選擇了使用mkcert的替代解決方案

sudo apt install libnss3-tools
sudo apt install mkcert
wget https://github.com/FiloSottile/mkcert/releases/download/v1.4.4/mkcert-v1.4.4-linux-amd64
sudo cp mkcert-v1.4.4-linux-amd64 /usr/local/bin/mkcert
sudo chmod +x /usr/local/bin/mkcert
mkcert -install
mkcert test.example.com '*.test.example.com' localhost 127.0.0.1 ::1

您需要修改/etc/hosts以包含 test.example.com

127.0.0.1       localhost test.example.com

不要忘記注銷並重新登錄以更新hosts中的更改

如果 firefox 仍然向settings -> privacy/security投訴 go 並打開View Certificates server選項卡下,為https://test.example.com:(port #)和 select Get Certificate添加例外。 然后Confirm Security Exception

現在使用 mkcert 生成的 pem 格式文件啟動 gunicorn。 在我的情況下,它就像......

gunicorn --certfile test.example.com+4.pem --keyfile test.example.com+4-key.pem

您的證書現在應該被接受。

我們團隊的每個成員都必須在本地進行設置。 對我們來說,這對回報來說是一個小小的不便。

如果這不符合您的需求,那么不幸的是,您可能不得不選擇替代方案,例如 caddy 或 nginx 來反向代理您的請求。 但您仍然必須使用上述示例的某個版本或通過certbot等工具提供證書

暫無
暫無

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

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