TypistTech.trellis-cloudflare-origin-ca

Trellis Cloudflare Origin CA

Ansible 角色 GitHub 标签(最新版本) Ansible 角色下载 Ansible 质量评分 CircleCI 许可 关注 Twitter @TangRufus 雇佣 Typist Tech

将 Cloudflare Origin CA 添加到 Trellis 作为 SSL 提供者。

用 ♥ 创建 by Typist Tech


Trellis Cloudflare Origin CA 是一个开源项目,完全可以免费使用。

然而,维护和开发新功能所需的努力在没有适当经济支持的情况下是不可持续的。如果你有能力,请考虑通过下面的链接捐赠:

通过 GitHub 支持 通过 PayPal 支持 更多赞助信息


Cloudflare Origin CA 添加到 Trellis 作为 SSL 提供者

为什么?

简短回答:为了保持 Cloudflare 与您的服务器之间的连接私密且安全,防止篡改。

详细回答:

Cloudflare 的灵活 SSL 模式是免费计划下 Cloudflare 网站的默认设置。灵活 SSL 模式意味着从浏览器到 Cloudflare 的流量将被加密,但从 Cloudflare 到网站源服务器的流量不会被加密。为了利用我们的 完全和严格 SSL 模式——它加密了 Cloudflare 和原始服务器之间的连接——必须在原始服务器上安装一个证书。

Cloudflare 博客 - 使用通用 SSL 保护源服务器连接安全

Cloudflare Origin CA 相比 Let's Encrypt 有什么好处?

Let's Encrypt 获取证书时,您必须首先禁用 Cloudflare,因为 Cloudflare 会隐藏实际的服务器 IP,导致 Let's Encrypt 挑战失败。使用 Cloudflare Origin CA 可以简化这一麻烦。

Cloudflare Origin CA 与其他公共证书相比有什么好处?

请看 Cloudflare 博客上的 介绍 Cloudflare Origin CA

角色变量

# group_vars/<environment>/vault.yml
# 此文件应被加密。请参阅:https://roots.io/trellis/docs/vault/
##########################################################################

# Cloudflare Origin CA 密钥
# 不要与 Cloudflare 全球 API 密钥混淆
# 请参阅:https://blog.cloudflare.com/cloudflare-ca-encryption-origin/#iiobtainyourcertificateapitoken
vault_cloudflare_origin_ca_key: v1.0-xxxxxxxxxxx

# group_vars/<environment>/main.yml
###################################

# 指示所需的软件包状态。
# `latest` 确保安装最新版本。
# `present` 在已经安装时不更新。
# 选项:present|latest
# 默认:latest
cfca_package_state: present

# 是否隐藏敏感任务的结果,这些结果可能以明文显示 Cloudflare Origin CA 密钥。
# 选项:true|false
# 默认:false
cloudflare_origin_ca_no_log: true

# group_vars/<environment>/wordpress_sites.yml
##############################################

wordpress_sites:
  example.com:
    # 您的 Cloudflare 账户必须拥有所有这些域
    site_hosts:
      - canonical: example.com
        redirects:
          - hi.example.com
          - hello.another-example.com
    ssl:
      # 必须启用 SSL
      enabled: true
      # 必须禁用 OCSP stapling
      stapling_enabled: false
      # 使用此角色生成 Cloudflare Origin CA 证书
      provider: cloudflare-origin-ca
    # 以下为可选项
    cloudflare_origin_ca:
      # 颁发证书的有效天数。可接受的选项有:7、30、90、365(1年)、730(2年)、1095(3年)、5475(15年)。
      # 默认:5475
      days: 7
      # 包含在证书中的完全合格的域名列表作为主题备用名称。
      # 默认:所有规范和重定向域
      # 在上面的例子中:example.com、hi.example.com、hello.another-example.com
      hostnames:
        - example.com
        - '*.example.com'
        - '*.another-example.com'

Typist Tech 准备好为您构建下一个精彩的 WordPress 网站。雇佣我们!


要求

安装

将此角色添加到 galaxy.yml

- src: TypistTech.trellis-cloudflare-origin-ca # 区分大小写!
  version: 0.8.0 # 检查最新版本!

运行 $ trellis galaxy install

修改 Trellis 的 Playbook

将此角色立即添加到 server.ymlrole: wordpress-setup 之后:

    roles:
      # ...
-     - { role: wordpress-setup, tags: [wordpress, wordpress-setup, letsencrypt] }
+     - { role: wordpress-setup, tags: [wordpress, wordpress-setup, letsencrypt, cloudflare-origin-ca] }
+     - { role: TypistTech.trellis-cloudflare-origin-ca, tags: [cloudflare-origin-ca, wordpress-setup], when: sites_using_cloudflare_origin_ca | count }
      # ...

注意:role: wordpress-setup 被标记为 cloudflare-origin-ca

Nginx 包含

此角色将 Nginx SSL 指令模板输出到 {{ nginx_path }}/includes.d/{{ item.key }}/cloudflare-origin-ca.conf。Trellis 默认将此文件包含在 这里这里,无需其他操作。

如果使用 Nginx 子模板,则将此行添加到您的服务器块中:

include includes.d/{{ item.key }}/cloudflare-origin-ca.conf;

常见错误

没有站点在使用 Cloudflare Origin CA

显然,当您不使用 Cloudflare Origin CA 时,不应运行此角色。

vault_cloudflare_origin_ca_key 未定义

group_vars/<environment>/vault.yml 中加密您的 Cloudflare Origin CA 密钥。请参阅 角色变量

example.com 在使用 Cloudflare Origin CA,但 OCSP stapling 被启用了

... 您正试图使用源 CA 进行 OCSP stapling。当前,Origin CA 不支持 OCSP,因此您应该为使用 Origin CA 证书的主机删除 ssl_staping 指令...

--- Cloudflare 支持

Cloudflare Origin CA 不支持 OCSP stapling。对所有使用 Cloudflare Origin CA 的站点禁用 OCSP stapling。请参阅 角色变量

key_type 已弃用。请从 example.com 删除它

为避免配置错误,key_type(ECDSA 或 RSA)和 key_size(位数)选项已弃用。自 v0.8 起,此角色仅生成 521 位的 ECDSA 密钥。

如果您之前使用其他配置生成了 CA 证书:

  1. 从服务器上移除 CA 证书
  2. 通过 Cloudflare 仪表板撤销 CA 证书
  3. 重新配置服务器

key_size 已弃用。请从 example.com 删除它

为避免配置错误,key_type(ECDSA 或 RSA)和 key_size(位数)选项已弃用。自 v0.8 起,此角色仅生成 521 位的 ECDSA 密钥。

如果您之前使用其他配置生成了 CA 证书:

  1. 从服务器上移除 CA 证书
  2. 通过 Cloudflare 仪表板撤销 CA 证书
  3. 重新配置服务器

Nginx 目录未包含

确保您具有 roots/trellis@f2b8107 或更高版本。

400 错误请求 - 未发送所需的 SSL 证书

症状:

  • 服务器返回 "400 错误请求 - 未发送所需的 SSL 证书" 的所有请求
  • Nginx 日志记录 "客户端未发送所需的 SSL 证书,同时读取客户端请求头,客户端:[隐藏],服务器:[隐藏],请求:"GET / HTTP/1.1",主机:"[隐藏]""
  • Nginx 配置文件中的某处存在 ssl_verify_client on;
  • wordpress_sites.yml 中使用 client_cert_url,例如:roots/trellis#869

罪魁祸首:

您的 已认证的源提取 配置不正确。

事实:

此角色与已认证的源提取或 ssl_verify_client 无关。

解决方案:

  1. 阅读 介绍 Cloudflare Origin CA
  2. 阅读 已认证的源提取
  3. 理解此角色是 Cloudflare Origin CA
  4. 理解 Cloudflare Origin CA 和已认证的源提取是两个不同的概念
  5. 阅读 #34
  6. 如果您还有疑问,请联系 Cloudflare 支持团队

常见问题

为什么只允许 521 位 ECDSA 密钥?

我假设您想要设置 已认证的源提取 与 Cloudflare。我建议使用 ECDSA,因为椭圆曲线提供相同的安全性,且计算开销较小。

了解更多关于 ECDSA:更好的互联网的数字签名算法 上述文章还提到:根据 ECRYPT II 推荐的密钥长度,256 位椭圆曲线密钥提供与 3248 位的非对称密钥相同的保护。网站证书中的典型 RSA 密钥为 2048 位。因此,我认为选择256位的 ECDSA 是一个不错的选择。

--- Cloudflare 支持, 2017 年 9 月

为避免配置错误,key_type(ECDSA 或 RSA)和 key_size(位数)选项已弃用。自 v0.8 起,此角色仅生成 521 位的 ECDSA 密钥。

如果您之前使用其他配置生成了 CA 证书:

  1. 从服务器上移除 CA 证书
  2. 通过 Cloudflare 仪表板撤销 CA 证书
  3. 重新配置服务器

为什么即使 cloudflare_origin_ca_no_logtrue,Cloudflare Origin CA 密钥仍会被记录?

请注意,使用 no_log 属性并不能阻止在通过 ANSIBLE_DEBUG 环境变量调试 Ansible 本身时显示数据。

--- Ansible 文档

Cloudflare Origin CA 完美吗?

这看起来很棒。我在哪里可以找到更多类似的资源?

我在哪里可以给予五颗星的评价?

谢谢!很高兴您喜欢它。请让我知道有人在使用此项目,这对我很重要。请考虑:

另见

运行测试

运行测试:

ansible-playbook -vvv -i 'localhost,' --syntax-check tests/test.yml
ansible-lint -vv .

反馈

请提供反馈! 我们希望这个项目尽可能有用。 请 提交一个问题,指出您喜欢和不喜欢的地方,或者 Fork 项目并 发送拉取请求没有问题太小。

安全漏洞

如果您发现该项目中存在安全漏洞,请通过电子邮件与我们联系 [email protected]。 所有安全漏洞将会被及时处理。

感谢

Trellis Cloudflare Origin CA 是一个 Typist Tech 项目,由 Tang Rufus 维护,为 雇佣 的自由开发者。

特别感谢 Roots 团队,是他们的 Trellis 使该项目成为可能。

完整的贡献者列表可以在 这里 找到。

许可

Trellis Cloudflare Origin CA 根据 MIT 许可证 发布。

关于项目

Add Cloudflare Origin CA to Trellis as a SSL provider

安装
ansible-galaxy install TypistTech.trellis-cloudflare-origin-ca
许可证
mit
下载
4.2k