65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Let's Encrypt 和 Ansible 为您的服务器自动化 SSL 加密

starIconstarIconstarIconstarIconstarIcon

5.00/5 (4投票s)

2017 年 1 月 2 日

MIT

2分钟阅读

viewsIcon

8291

如何将 Let's Encrypt 作为项目部署流程的一部分,使用 Ansible 工具引入

引言

Lets Encrypt (http://www.letsencrypt.org/‎) —— 可能是最知名的提供免费绿色安全证书的机构。 在本文中,我将与您分享如何在服务器配置过程中使用 letsencrypt。

我尝试过多种 letsencrypt 客户端:certbot-auto、letsencrypt-cli、simple_le,以及来自 https://letsencrypt.openssl.ac.cn/docs/client-options/ 的其他一些客户端。

然而,目前我首选的是 https://github.com/lukas2511/letsencrypt.sh。 如果我用几个词来描述这个客户端,那就是:“它就是能用”。

我使用 Ansible 进行自动化场景,因此我将 letsencrypt.sh 封装成一个角色,位于 https://github.com/softasap/sa-lets-encrypt

Using the Code

现有安装的示例用法:假设您已经有一个网站——您指定要使用的域名和 nginx 配置文件的路径。

	- hosts: dev

	  vars:
	    - root_dir: "{{playbook_dir}}"
	    - my_domains:
	      - {
		names: "voronenko.net www.voronenko.net",
		nginx_config: "/etc/nginx/sites-available/voronenko_net"
		}

	  pre_tasks:
	    - debug: msg="Pre tasks section"

	  roles:

	    - {
		role: "sa-lets-encrypt",
		le_domains: "{{my_domains}}",
		option_run_once: true,
		option_setup_cron: true
	      }

	  tasks:
	    - debug: msg="Tasks section"	

这是一个更长的全新安装示例:您安装 nginx,配置您的网站,并应用 letsencrypt 剧本。

	---
	- hosts: www
	  vars:
	    - root_dir: "{{playbook_dir}}"
	    - my_domains:
	      - {
		names: "voronenko.net www.voronenko.net",
		nginx_config: "/etc/nginx/sites-available/voronenko_net"
		}


	  pre_tasks:
	    - debug: msg="Pre tasks section"


	  roles:

	    - {
		role: "sa-nginx"
	      }
	    - {
		role: "sa-include",
		include_file: "{{root_dir}}/demosite.yml"
	      }
	    - {
		role: "sa-lets-encrypt",
		le_domains: "{{my_domains}}",
	#        le_ca: "https://acme-staging.api.letsencrypt.org/directory",
		option_run_once: true,
		option_setup_cron: true
	      }

	  tasks:
	    - debug: msg="Tasks section"	

请参阅 box-example 文件夹中的独立示例。

在 DigitalOcean 上的示例结果如下所示。

您将获得一个干净的操作系统

一旦 droplet 准备就绪,您为其配置 DNS。

以下是 GoDaddy 的示例

Ping 主机以确保 DNS 已成功传播

调整剧本以指定 box 地址

等待配置完成

看看 letsencrypt.sh 是如何工作的:它创建指向当前证书的链接,因此您可以安全地从 nginx 配置中引用它们。 角色安装 cron 作业,然后在证书到期之前确保更新证书。 但是:如果底层证书已更新,您需要重新加载您的 Web 服务器。

现在您可以安全地在您的 Web 配置中引用 ssl 证书了

最后一步——在浏览器中检查绿色安全证书

我们完成了!

关注点

您可以或多或少地轻松地将 Ansible 剧本调整到您的场景中。 如果您使用其他 Web 服务器,欢迎您的 PR 和评论。

历史

  • 2017 年 1 月 2 日:初始版本
© . All rights reserved.