概述
简介
Let's Encrypt —— 是一个由非营利性组织 互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构(CA),简单的说,就是为网站提供免费的 SSL/TLS 证书。
签发工具
Let's Encrypt 生成证书的工具很多,certbot 是官方推荐的签发工具,也可以通过在线服务申请。
在线一站式服务管理方便,但可能需要绑定业务,个人用户还是推荐通过工具生成证书。
这里推荐 acme.sh,它不仅有详细的中文文档,操作更为方便,还支持 Docker。
安装
curl https://get.acme.sh | sh
这个操作会做3三件事:
1. 生成一个acme.sh的拷贝在home路径下 ~/.acme.sh/,所有的证书信息也都在这里了
2. 生成一个alias别名 acme.sh=~/.acme.sh/acme.sh
.
3. 生成一个每日作务去检查并更新证书(证收的有效期是60天),这一步在新的版本里可以跳过,应该是帮你做好了(可以通过'crontab -l'命令查看)
0 0 * * * "/home/user/.acme.sh"/acme.sh --cron --home "/home/user/.acme.sh" > /dev/null
CentOS7 实测alias不生效,要执行一下source ~/.bashrc
测试安装成功可以用这个命令
acme.sh --list
申请证书
acme.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端口可用,也可以指定别的端口,命令在上面的地址里都有。
acme.sh --issue -d example.com -d www.example.com --standalone --httpport 88
安装证书
acme.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配置
server {
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 Encrypt 证书申请及配置所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复