我的任务是将证书添加到我的 Flask 服务器。服务器响应 HTTP 请求。
有人有如何设置 Flask HTTPS 服务器的经验吗? 我使用 certbot 工具生成了私钥和公钥。有关此工具的信息如下:https://certbot.eff.org/instructions?ws=webproduct&os=snap
总之,
certbot
允许您创建编码为 .pem
文件的私钥和公钥。然后用于加密和解密客户端和服务器之间交换的流量。
我使用女服务员库向客户提供内容。 这是完成这项工作的线路:
serve(app, host='0.0.0.0', port=80)
有人知道如何从这里过渡到有人可以使用 HTTPS 协议访问我的页面的状态吗?换句话说,HTTPS是否握手并交换数据?
我尝试过这条线:
serve(app, host='0.0.0.0', port=5000, url_scheme='https',
certfile='path/to/certfile.pem', keyfile='path/to/keyfile.pem')
我困惑地发现了这一行: https://www.perplexity.ai/search/run-flask-https-server-jPPLZHcERamQ5YBqFlVIBQ
尝试配置Nginx
在 http://localhost:5000 运行 Flask
创建配置文件
/etc/nginx/sites-available/yourdomain
对于HTTP
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}
对于 HTTPS
server {
yourdomain.com;
client_max_body_size 10M;
location / {
proxy_pass http://localhost:5000;
}
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
创建符号链接
sudo ln -s /etc/nginx/sites-available/yourdomain /etc/nginx/sites-enabled/
重新加载 Nginx
sudo systemctl restart nginx.service