![](/img/trans.png)
[英]Python pyopenssl signed certificate error (Firefox: SEC_ERROR_REUSED_ISSUER_AND_SERIAL, chrome: 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.