从letsencrypt.org请求SSL证书
项目描述
从letsencrypt.org请求SSL证书
本模块旨在自动从https://letsencrypt.openssl.ac.cn请求SSL证书,以便于您的Odoo安装。
安装
安装后,此模块会自动在$data_dir/letsencrypt/account.key处为您在letsencrypt.org的账户生成一个私有密钥。如果您想或需要使用自己的账户密钥,请替换该文件。
为了使证书请求工作,您的网站需要通过纯HTTP访问,如果您强制客户端使用SSL版本,请参阅下面的配置示例。
安装后,触发“更新letsencrypt证书”定时任务,并查看您的日志以获取消息。
此插件依赖于openssl二进制文件以及acme_tiny和IPy python模块。如果您在nginx或apache配置中使用https,则openssl应该已经安装。
如果您仍然需要安装OpenSSL二进制文件,可以使用您的发行版包管理器。对于Debian和Ubuntu,可以这样做:
sudo apt-get install openssl
为了安装ACME-Tiny python模块,使用PIP包管理器
sudo pip install acme-tiny
为了安装IPy python模块,使用PIP包管理器
sudo pip install IPy
配置
此插件请求配置参数web.base.url中命名的域的证书 - 如果它返回localhost或类似内容,则模块不会请求任何内容。
如果您希望证书包含多个备用名称,只需将它们作为配置参数添加 letsencrypt.altname.N,其中 N 从 0 开始。可以添加的域名数量受限于 速率限制。
请注意,所有这些域名都必须通过 HTTP 在端口 80 上公开可达,并且它们必须有一个指向您的 odoo 实例的 .well-known/acme-challenge 的条目。
用法
该模块设置了一个 cronjob,用于自动请求和续订证书。
首次运行后,您将在 $datadir/letsencrypt 中找到一个名为 domain.crt 的文件,配置您的 SSL 代理使用此文件作为证书。
有关更多信息,请访问
深入配置
此模块使用 openssl 生成适合提交给 letsencrypt.org 的 CSR。为了做到这一点,它将 /etc/ssl/openssl.cnf 复制到一个临时文件,并根据其需求进行适配(目前,这只是在需要时添加一个 [SAN] 部分)。如果您想让模块使用另一个配置模板,设置配置参数 letsencrypt.openssl.cnf。
证书更新后,模块尝试运行 letsencrypt.reload_command 的内容,默认为 sudo service nginx reload。根据您的服务器配置更改此设置。
您还需要一个匹配的 sudo 配置,如下所示
your_odoo_user ALL = NOPASSWD: /usr/sbin/service nginx reload
上述行可以通过 visudo 命令添加到 /etc/sudoers。
如果您的发行版支持,例如 Debian,您可以通过 visudo -f /etc/sudoers.d/letsencrypt 创建和编辑一个自动包含的文件。这将也将正确的权限放在文件上 (-r–r—–)。
提供证书的服务器将尝试验证您是否真的控制了您请求证书的主机。它将通过通过 http 请求一个包含 /.well-known/acme-challenge/xxx 的 uri 的文件来完成此操作。letsencrypt 模块提供了一个控制器,可以从 Odoo 服务器提供此 uri,但我们必须配置前端 nginx 或 apache 服务器以接受这些 uri 的 http。
因此,如果您强制用户使用 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 实例的上游并执行如下操作
location /.well-known { proxy_pass http://yourodooupstream; }
如果您正在使用多数据库安装(带有或没有 dbfilter 选项),其中 /web/database/selector 返回一个包含多个数据库的列表,则您需要将 letsencrypt 扩展添加到服务器范围的加载插件列表(默认情况下,只有 web 扩展),设置 --load 选项。例如,--load=web,letsencrypt
错误跟踪器
错误在 GitHub Issues 上跟踪。如果遇到问题,请检查是否已报告您的问题。如果您首先发现它,请通过提供详细和受欢迎的反馈来帮助我们消除它 在此。
致谢
贡献者
Holger Brunn <hbrunn@therp.nl>
Antonio Espinosa <antonio.espinosa@tecnativa.com>
Ronald Portier <ronald@therp.nl>
ACME 实现
图标
维护者
本模块由OCA维护。
OCA,即Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并推广其广泛应用。
要为此模块做出贡献,请访问 https://odoo-community.org。
项目详情
散列 对于 odoo8_addon_letsencrypt-8.0.1.0.0.99.dev26-py2-none-any.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | 8a5d7d19a490570eb13fa1c9bb5bdfddc75f70763e63ca6920563b6af7e300f4 |
|
MD5 | 39947895cb8e85961ddc660f03ac9b3e |
|
BLAKE2b-256 | f418dd9e6288cf38d8be78e212998086afc9e6255c7f177f2284f0b448231003 |