简介
Let's Encrypt —— 是一个由非营利性组织 互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构(CA),简单的说,就是为网站提供免费的 SSL/TLS 证书。
签发工具
Let's Encrypt 生成证书的工具很多,certbot 是官方推荐的签发工具,也可以通过在线服务申请。
在线一站式服务管理方便,但可能需要绑定业务,个人用户还是推荐通过工具生成证书。
这里推荐 acme.sh,它不仅有详细的中文文档,操作更为方便,还支持 Docker。
安装
1curl https://get.acme.sh | sh
这个操作会做3三件事:
1. 生成一个acme.sh的拷贝在home路径下 ~/.acme.sh/,所有的证书信息也都在这里了
2. 生成一个alias别名 acme.sh=~/.acme.sh/acme.sh
.
3. 生成一个每日作务去检查并更新证书(证收的有效期是60天),这一步在新的版本里可以跳过,应该是帮你做好了(可以通过'crontab -l'命令查看)
10 0 * * * "/home/user/.acme.sh"/acme.sh --cron --home "/home/user/.acme.sh" > /dev/null
CentOS7 实测alias不生效,要执行一下source ~/.bashrc
测试安装成功可以用这个命令
1acme.sh --list
申请证书
1acme.sh --issue -d example.com -d www.example.com -w /home/wwwroot/example.com
简单说一下,acme.sh 有很多种申请证书的方式,上面写得如果你已经有一个在运行的server,-w 后跟的就是这个
server的根目录,前面-d 后面跟的是要申请证书的域名,可以是多个,第一个是主域名。
还有很多方式,可以在github上看到,地址在这里
https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert
我用的是standalone方式,这个方式要求服务器的80端口可用,也可以指定别的端口,命令在上面的地址里都有。
1acme.sh --issue -d example.com -d www.example.com --standalone --httpport 88
安装证书
1
2
3acme.sh --install-cert -d example.com --key-file /path/to/keyfile/in/nginx/mydomain.key --fullchain-file /path/to/fullchain/in/nginx/fullchain.cer
我用的nginx,要安装两个证书,nginx路在docker容器里,可以直接安装到你mount的文件夹里,之后在nginx的配置文件里指定一下证书的位置就可以了。
nginx配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25server { listen 80; server_name example.com; # 重定向到 https rewrite ^(.*)$ https://$server_name$1 permanent; } server { listen 443; server_name example.com www.example.com; root /yout/server/root/; index index.html index.htm; access_log /dev/null; error_log /websvr/log/nginx/mydomain.com.error.log warn; # SSL 配置 ssl on; ssl_certificate /websvr/ssl/fullchain.cer; # 证书文件 ssl_certificate_key /websvr/ssl/mydomain.key; # 私钥文件 ssl_session_timeout 5m; # 会话缓存过期时间 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 开启 SSL 支持 ssl_prefer_server_ciphers on; # 设置协商加密算法时,优先使用服务端的加密套件 }
之后重启nginx的docker容器证书才被加载,'service nginx reload'不好使
最后
以上就是勤恳黑猫最近收集整理的关于Let‘s Encrypt 证书申请及配置的全部内容,更多相关Let‘s内容请搜索靠谱客的其他文章。
发表评论 取消回复