从letsencrypt.org请求SSL证书
项目描述
本模块编写用于自动让Odoo安装请求来自 https://letsencrypt.openssl.ac.cn 的SSL证书。
目录
安装
安装后,此模块会自动在 $data_dir/letsencrypt/account.key 为您的letsencrypt.org账户生成一个私有密钥。如果您想要或需要使用自己的账户密钥,请替换该文件。
为了使证书请求正常工作,您的网站需要通过纯HTTP可访问,如果您强制客户端使用SSL版本,请参阅下面的配置示例。
安装后,触发计划任务“更新letsencrypt证书”并查看日志中的消息。
配置
此插件会为配置参数 web.base.url 中命名的域名请求证书 - 如果它返回为 localhost 或类似的内容,则该模块不会请求任何内容。
更详细的设置在“设置”->“常规设置”中。在那里,您可以向CSR添加更多域名,添加更新DNS的自定义脚本,以及添加用于重新加载您的Web服务器(如果需要)的脚本。可以添加到证书中的域名数量限制为100个。可以使用通配符证书来避免此限制。
请注意,所有这些域名都必须通过HTTP在端口80上公开可达,并且它们必须有指向您的Odoo实例的$datadir/letsencrypt/acme-challenge的.well-known/acme-challenge条目。
由于DNS更改可能需要一些时间才能传播,当我们响应DNS挑战并且服务器尝试检查我们的响应时,可能会失败(并且可能确实会失败)。解决方法在https://tools.ietf.org/html/rfc8555#section-8.2中有所记录,基本上是一个Retry-After头,我们可以通过它指示服务器重试挑战。在编写这些内容时,Boulder尚未实现此功能。这促使我们使用letsencrypt.backoff配置参数,这是此模块将尝试轮询服务器以重试验证我们挑战答案的分钟数,具体来说,它是poll_and_finalize的deadline参数。
使用
该模块设置了一个cronjob,用于自动请求和续订证书。
证书在到期前一个月进行续订。然后每天尝试续订,直到成功。
第一次运行后,您将在$datadir/letsencrypt中找到一个名为domain.crt的文件,配置您的SSL代理使用此文件作为证书。
深入配置
如果您想在CSR上使用多个域名,则必须从“设置”->“常规设置”中进行配置。如果您在其中的任何域名中使用通配符,letsencrypt将返回一个DNS挑战。为了回答该挑战,您需要提供脚本(如“常规设置”中所示)或安装提供您DNS提供商支持的模块。在此模块中,您需要在letsencrypt模型中创建一个名为_respond_challenge_dns_$DNS_PROVIDER的函数,其中$DNS_PROVIDER是您提供商的名称,可以是任何长度大于零的字符串,并在设置中添加DNS提供商选择字段中的您的DNS提供商名称。
在任何情况下,如果设置页面中插入脚本路径,它将在您想要更新多个DNS服务器时运行。
同样,您也可以在设置中设置重新加载命令,以防您需要重新加载您的Web服务器。默认情况下是sudo /usr/sbin/service nginx reload
您还需要一个相应的sudo配置,例如
your_odoo_user ALL = NOPASSWD: /usr/sbin/service nginx reload
此外,如果您强制用户使用https,您将需要类似于nginx的以下设置
if ($scheme = "http") { set $redirect_https 1; } if ($request_uri ~ ^/.well-known/acme-challenge/) { set $redirect_https 0; } if ($redirect_https) { rewrite ^ https://$server_name$request_uri? permanent; }
和以下为apache的设置
RewriteEngine On RewriteCond %{HTTPS} !=on RewriteCond %{REQUEST_URI} "!^/.well-known/" RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
如果需要将其他nginx站点重定向到您的Odoo实例,为您的Odoo实例声明一个upstream并执行类似操作
location /.well-known { proxy_pass http://yourodooupstream; }
如果您使用的是多数据库安装(带有或不带dbfilter选项),其中/web/database/selector返回一个包含多个数据库的列表,那么您需要将letsencrypt插件添加到宽加载插件列表中(默认情况下,只有web插件),设置--load选项。例如,--load=web,letsencrypt
错误追踪器
错误在GitHub Issues上跟踪。如果在那里报告了您的问题,请检查。如果您是第一个发现它的人,请通过提供详细且受欢迎的反馈来帮助我们解决问题。
请不要直接联系贡献者以获取支持或技术问题的帮助。
鸣谢
贡献者
Holger Brunn <mail@hunki-enterprises.nl>
Antonio Espinosa <antonio.espinosa@tecnativa.com>
Dave Lasley <dave@laslabs.com>
Ronald Portier <ronald@therp.nl>
Ignacio Ibeas <ignacio@acysos.com>
George Daramouskas <gdaramouskas@therp.nl>
Jan Verbeek <jverbeek@therp.nl>
其他鸣谢
ACME实现
图标
维护者
本模块由OCA维护。
OCA,即Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并推广其广泛使用。
本模块是GitHub上OCA/server-tools项目的一部分。
欢迎您贡献力量。有关如何贡献的信息,请访问https://odoo-community.org/page/Contribute。
项目详情
odoo14_addon_letsencrypt-14.0.1.0.2-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2a9ce19964b53bbad4aca747ba144dce9cd339bca108acaa23f93f8a24b38f5f |
|
MD5 | 7c75a8254ea14c11be71a9bcd8135910 |
|
BLAKE2b-256 | fea17367c92c679c7878c743e67c5573f46dc86c8d94ed52f88e6db13752df09 |