关于flask:在本地主机上使用SSL运行gunicorn吗? (与docker)

Running gunicorn with SSL on localhost? (with docker)

我正在docker中本地开发一个需要ssl才能与API终结点一起使用的应用程序,但我一直无法使这些参数正常工作:

1
2
3
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在哪里寻找这些certfile? 如何生成它们?


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

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

例:

1
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>

出于开发目的,您可以创建自签名证书。在这种情况下,您将没有CA证书,并且可以将gunicorn命令减少为:

1
2
3
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


它在文件夹/ ssl /中查找

这就是这个意思:/ssl/registry.crt

它在/ ssl /中查找名为registry.crt的文件,registry.key和ca.cert也是如此

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

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

或者,您可以在这里免费获得(需要定期更新):https://letsencrypt.org/

如果您愿意为它们付费,则可以通过搜索ssl证书从众多公司中选择。