1、Let's Encrypt简介
Let's Encrypt —— 是一个由非营利性组织互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构(CA),简单的说,就是为网站提供免费的 SSL/TLS 证书。互联网安全研究小组(ISRG):ISRG是美国加利福尼亚州的一家公益公司,成立于2013年5月,第一个项目是Let's Encrypt证书颁发机构。
Let’s Encrypt 使用 ACME 协议来验证您对给定域名的控制权并向您颁发证书。要获得 Let’s Encrypt 证书,您需要选择一个要使用的 ACME 客户端软件。Let’s Encrypt 不控制或审查第三方客户端,也不能保证其安全性或可靠性。官方推荐使用 Certbot 客户端来签发证书,官网:https://certbot.eff.org/
ACME协议:
- Automatic Certificate Management Environment=ACME,自动认证管理环境协议
- ACME协议的基本思路是:
- 在你服务器上生成一次性的随机特征数据(nonce)
- 然后通过Let’s Encrypt的服务器核对这个数据
- 核对成功发放证书
使用前提:
- 域名,它会生成指定域名的证书
- 在域名指向的服务器上能访问https
- Linux环境
2、环境准备
Certbot的两种工作方式:
Standalone 方式:
certbot 会自己运行一个 web server 来进行验证。如果我们自己的服务器上已经有 web server 正在运行 (比如 Nginx 或 Apache ),用 standalone 方式的话需要先关掉它,以免冲突。
Web root 方式:
certbot 会利用既有的 web server,在其 web root目录下创建隐藏文件,Let’s Encrypt 服务端会通过域名来访问这些隐藏文件,以确认你的确拥有对应域名的控制权。
安装Nginx,Nginx位于第三方的yum源里面,而不在Centos官方yum源里面
#安装RHEL
sudo yum install epel-release
#yum更新
yum update
yum install -y nginx
安装wget
yum -y install wget
下载Certbot客户端
#下载
wget https://dl.eff.org/certbot-auto
#添加执行权限
chmod a+x ./certbot-auto
编辑nginx的配置文件
server {
listen 80 default_server;
listen [::]:80 default_server;
#1.配置合法域名
server_name yuanjing.com;
#2.配置应用根目录
root /usr/share/nginx/html;
}
3、生成并配置证书
使用certbot-auto命令,生成证书
#域名必须真实有效
./certbot-auto certonly --webroot --email yuanjing@lagou.com -w /usr/share/nginx/html/ -d [填写合法域名的地址]
生成的证书放在/etc/letsencrypt/live/[网站域名]下
例如:/etc/letsencrypt/live/yuanjing.com
文件名 | 内容 |
cert.pem | 服务端证书 |
chain.pem | 浏览器需要的所有证书但不包括服务端证书,比如根证书和中间证书 |
fullchain.pem | 包括了cert.pem和chain.pem的内容 |
privkey.pem | 证书的私钥 |
一般情况下fullchain.pem和privkey.pem就够用了
[centos@yuanjing ~]$ tree /etc/letsencrypt/
......
├── live
│ └── yuanjing.com (别名,最终,看自己域名)
│ ├── cert.pem -> ../../archive/yuanjing.com/cert1.pem
│ ├── chain.pem -> ../../archive/yuanjing.com/chain1.pem
│ ├── fullchain.pem ->
../../archive/yuanjing.com/fullchain1.pem
│ ├── privkey.pem ->
../../archive/yuanjing.com/privkey1.pem
│ └── README
......
配置nginx支持https访问
server {
listen 443 ssl http2;
server_name yuanjing.com; # 设置域名
ssl_certificate "/etc/letsencrypt/live/yuanjing.com/fullchain.pem"; # 证书
ssl_certificate_key "/etc/letsencrypt/live/yuanjing.com/privkey.pem"; # 私钥
http 跳转到 https
在网站在访问http时都会将http请求重定向到https,只需在nginx中配置下。配置如下
server {
listen 80 default_server;
server_name yuanjing.com www.yuanjing.com;
return 301 https://$server_name$request_uri; # 这个是固定的
}
重启Nginx后生效
nginx -s reload
4、更新证书
默认证书有效期是3个月,所以需要续期。文章来源:https://www.toymoban.com/news/detail-493460.html
设置每月1日的凌晨3点就会执行一次所有域名的续期操作文章来源地址https://www.toymoban.com/news/detail-493460.html
#创建定时任务
sudo crontab -e
#设置定时策略
#/home/ubuntu/soft/certbot-auto:certbot所在的目录
0 3 1 * * /home/ubuntu/soft/certbot-auto renew --renew-hook "sudo nginx -s reload"
#查看一下是否存在刚才添加的定时命令
sudo crontab -l
到了这里,关于Let‘s Encrypt的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!