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证书从众多公司中选择。