gpt4 book ai didi

python - (Python) 添加证书到 Bottle 服务器

转载 作者:太空宇宙 更新时间:2023-11-03 13:22:59 25 4
gpt4 key购买 nike

我被一个问题困扰了一段时间,找不到合适的解决方案。

我有一个基于 Bottle (Python 3) 的 Python 服务器,使用 PyCharm 编写。我正在将带有“pyinstaller”的文件转换为一个“exe”,以便在固定 PC (win7) 上启动服务器。服务器可以很好地处理它需要的东西,但现在我想增加它的安全性。

我有一个签名证书(非自签名)和一个 key ,我想添加它们。我尝试用它们启动服务器,但我不确定,如果我必须用它们做其他事情,因为证书没有显示在信息的主页上,网站仍然显示为未保存。

我的普通服务器正在运行:

from bottle import run, ...
...
if __name__ == "__main__":
...
run(host=IP, port=PORT)

我已经尝试了一些 bottle 框架,最后我选择了 cherrypy,它以正确的方式启动了我的服务器。服务器正在运行:

run(host=IP, port=PORT, server='cherrypy', certfile='./static/MyCert.pem', keyfile='./static/key.pem')

它不适用于当前版本的 cherrypy,所以我将它降级(经过一些搜索)到“>=3.0.8,<9.0.0”。服务器正在运行,但网站仍未保存。而且我不知道它是否只是没有加载证书或者我错过了其他东西。我尝试了诸如在代码中保留“ key 文件”或将 key 添加到我的证书之类的操作,但它并没有改变任何东西。

我尝试的另一个框架是 gevent:

from gevent import monkey; monkey.patch_all()
...
if __name__ == "__main__":
run(host=IP, port=PORT, reloader=False, server='gevent', certfile='./static/MyCert.pem', keyfile='./static/key.pem')

但是这里我无法访问该网站。当我尝试时,终端要求我输入 PEM 短语,但我无法添加它(或者只是不知道如何添加)并收到一个我以前从未见过的错误: terminal_error

就像在我的 cherrypy-example 中一样,我尝试使用一些组合来保留部分代码或更改证书,但它总是在这里结束。

如果有人对我的问题有解决方案,或者可以提示我缺少或尚未想到的内容,那就太好了。我想继续使用 cherrypy 或 Bottle 的其他框架,因此我不必更改太多当前代码。

谢谢

P.

最佳答案

我觉得您好像在证书中添加了密码。在没有密码的情况下重新生成您的证书,然后重试。

另外,提个建议。我强烈建议以反向代理模式在 nginx 后面运行你的 bottle/cherrypy 服务器。这通过让 nginx 处理 SSL session 的终止来简化您的配置,然后您的 python web 服务器永远不需要知道任何关于证书的信息。

这是我们用来终止我们的(自签名)SSL 证书和反向代理我们运行在 9000 端口上的本地主机上的 cherrypy 站点的 nginx 配置的编辑副本:

server {
listen example.com:80;
server_name test.example.com;
access_log /var/log/nginx/test.example.com.access.log main;
return 301 https://test.example.com$request_uri;
}

server {
listen example.com:443;
access_log /var/log/nginx/test.example.com.access.log main;
server_name test.example.com;
root /usr/local/www/test.example.com/html;
ssl on;
ssl_certificate /etc/ssl/test.example.com.crt;
ssl_certificate_key /etc/ssl/test.example.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don't use SSLv3 ref: POODLE
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

client_max_body_size 16M;

# Block access to "hidden" files and directories whose names begin with a
# period. This includes directories used by version control systems such
# as Subversion or Git to store control files.
location ~ (^|/)\. {
return 403;
}

location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header X-REAL-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

关于python - (Python) 添加证书到 Bottle 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43479063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com