跳转到主要内容

从letsencrypt.org请求SSL证书

项目描述

License: AGPL-3

从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,其中 N0 开始。可以添加的域名数量受限于 速率限制

请注意,所有这些域名都必须通过 HTTP 在端口 80 上公开可达,并且它们必须有一个指向您的 odoo 实例的 .well-known/acme-challenge 的条目。

用法

该模块设置了一个 cronjob,用于自动请求和续订证书。

首次运行后,您将在 $datadir/letsencrypt 中找到一个名为 domain.crt 的文件,配置您的 SSL 代理使用此文件作为证书。

Try me on Runbot

有关更多信息,请访问

深入配置

此模块使用 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 上跟踪。如果遇到问题,请检查是否已报告您的问题。如果您首先发现它,请通过提供详细和受欢迎的反馈来帮助我们消除它 在此

致谢

贡献者

ACME 实现

图标

维护者

Odoo Community Association

本模块由OCA维护。

OCA,即Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并推广其广泛应用。

要为此模块做出贡献,请访问 https://odoo-community.org

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分布

此版本没有可用的源代码分布文件。请参阅 生成分布存档 的教程。

构建分布

odoo8_addon_letsencrypt-8.0.1.0.0.99.dev26-py2-none-any.whl (75.6 kB 查看散列)

上传时间 Python 2

支持者