在localhost上使用SSL运行gunicorn? (与docker)

我正在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在哪里寻找这些certfiles? 他们怎样才能生成?

它在文件夹/ ssl /

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

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

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

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

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

如果你愿意为他们付钱,你可以从众多的公司中select使用SSL证书search。

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

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

例:

 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> 

为了开发目的,您可以创build一个自签名证书 。 在这种情况下,您将没有CA证书,并且可以将您的gunicorn命令减less到:

 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