从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个。可以使用通配符证书来避免此限制。
请注意,所有这些域名必须在端口80上通过HTTP公开可达,并且它们必须有一个指向 .well-known/acme-challenge 的条目,该条目指向您的 Odoo 实例的 $datadir/letsencrypt/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_provider 选择字段。
无论如何,如果在设置页面中插入脚本路径,则将在您想更新多个 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 插件添加到 wide load 插件列表中(默认情况下,只有 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。
项目详情
哈希 for odoo13_addon_letsencrypt-13.0.1.1.0-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b72bc2ede0a3421f6caebc0fac6db87251f1d166f3d3fff587713792d02f7e23 |
|
MD5 | 515d7bc10c58c19a2cdec8bf37ce1b8d |
|
BLAKE2b-256 | 80bf96c90b8193315f03a951f8c11156270f42d28261c29fee26c8bda5d65953 |