在localhost上运行带有SSL的gunicorn? (与码头)

时间:2017-04-26 19:07:36

标签: docker flask gunicorn

我在Docker中本地开发一个应用程序,需要ssl才能使用API​​端点,而且我一直无法使这些参数正常工作:

gunicorn -c "python:config.gunicorn" --reload "dataexplorer.app:create_app()" --timeout 3600 
--workers=5 --certfile=/ssl/registry.crt 
--keyfile=/ssl/registry.key --ca-certs=/ssl/ca.cert --ssl-version=3

Docker无法找到这些证书。所以我的问题是:gunicorn在哪里寻找这些证书?它们如何生成?

2 个答案:

答案 0 :(得分:0)

它在文件夹/ ssl /

中查找

这意味着什么:/ssl/registry.crt

在/ ssl /中查找名为registry.crt的文件同样适用于registry.key和ca.cert

如果您确实拥有这些文件,请将它们放在您认为合适的位置,然后编辑开关以反映该位置,例如--ca-certs = / home / user / ca.cert或wherever。

如果您需要证书,可以按照以下指南创建自己的证书("自签名"):https://devcenter.heroku.com/articles/ssl-certificate-self

或者,您可以在此处获得免费的(需要定期续订):https://letsencrypt.org/

如果您愿意为此付费,您可以通过Google搜索证书来从众多公司中进行选择。

答案 1 :(得分:0)

Gunicorn正在寻找Docker容器中的文件。

您可以使用Docker卷使您的计算机上的SSL密钥/证书在Docker容器中可用。

示例:

docker run -v /path/to/registry.key:/ssl/registry.key:ro -v /path/to/registry.crt:/ssl/registry.crt:ro -v /path/to/ca.crt:/ssl/ca.cert:ro <your_image>

出于开发目的,您可以create a self-signed certificate。在这种情况下,您将没有CA证书,并且可以将gunicorn命令减少到:

gunicorn -c "python:config.gunicorn" --reload "dataexplorer.app:create_app()" --timeout 3600 
--workers=5 --certfile=/ssl/registry.crt 
--keyfile=/ssl/registry.key --ssl-version=3