我在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在哪里寻找这些证书?它们如何生成?
答案 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