Nginx配置SSL证书,使用TLS
前言
申请SSL证书,保证域名能使用HTTPS访问
Acme 脚本申请证书
环境安装(Debian/Ubuntu或CentOS)
- Debian/Ubuntu命令
1
2
3apt update -y
apt install -y curl
apt install -y socat - CentOS命令
1
2
3yum update -y
yum install -y curl
yum install -y socat
安装 Acme 脚本
1 | curl https://get.acme.sh | sh |
xxx@xxx.com 填写自己的邮箱
1 | ~/.acme.sh/acme.sh --register-account -m xxx@xxx.com |
验证申请
下面代码中的 xxx.com 均为自己申请并解析过的域名
(复制的时候,别忘记改成自己的!!!!!!!!)
下面验证申请 我在这里使用的 方式1
方式1:监听80 端口验证(已测试)
执行下面这条命令前,保证80端口没有被占用(例如nginx),Acme.sh伪装成 WebServer,临时监听在 80 端口,进行验证。验证完后,80端口会自动再次空闲出来。注意:一定要把80端口空闲出来,有nginx的 先把nginx关了 (pkill -9 nginx)
1 | ~/.acme.sh/acme.sh --issue -d www.xxx.com --standalone |
方式2:Nginx方式验证
执行下面这条命令前,保证Nginx的配置文件已经配置好自己解析过的域名,并已启动Nginx
1 | ~/.acme.sh/acme.sh --issue -d www.xxx.com --nginx |
方式3:HTTP方式验证
执行下面这条命令前,保证解析过域名能正常访问
原理:Acme 自动在你的网站根目录下放置一个文件,这个文件被互联网访问,来验证你的域名所有权,完成验证,然后生成证书
1 | ~/.acme.sh/acme.sh --issue -d xxx.com -d www.xxx.com --webroot /home/cert/ |
安装证书到指定文件夹
生成的证书+秘钥 都默认在Acme的安装目录下的:~/.acme.sh/
不要直接使用证书+秘钥,先把证书+秘钥移动到其他位置
使用 --install-cert
命令,并指定目标位置, 然后证书文件会被copy到相应的位置
如下:将证书+秘钥,移动到 /root
目录下
注意!!!
这个存放这俩文件的路径(/home/cert/private.key
和/home/cert/cert.crt
),可以换其他路径,文件也可以换成其他名字,但必须和Nginx配置中的一致!!
1 | ~/.acme.sh/acme.sh --installcert -d www.xxx.com --key-file /home/cert/private.key --fullchain-file /home/cert/cert.crt |
更新 Acme 脚本
目前由于 acme 协议和 letsencrypt CA 都在频繁的更新,因此 Acme.sh 也经常更新以保持同步;
始终保持 Acme.sh 保持最新版本;
手动升级:1
~/.acme.sh/acme.sh --upgrade
自动升级1
~/.acme.sh/acme.sh --upgrade --auto-upgrade
关闭自动升级1
~/.acme.sh/acme.sh --upgrade --auto-upgrade 0
Nginx配置SSL
保证Nginx已安装。并且已经安装SSL(http_gzip_static_module)模块,并能正常使用
1 | server { |
自动更新SSL证书
证书目前会90天以后会自动更新,避免每次过期都需要手动去更新
为了节省效率,配置自动更新SSL证书有效期反正博主我设置自动更新,失败了~~~ 最后还是手动去更新~~
手动更新新SSL证书
命令依次如下,基本还是重复上面的步骤二、三、四
注意:
1.如果监听80端口的方式,记得先把80服务杀死,再执行下面命令
2.邮箱、域名、存放路径
1 | ~/.acme.sh/acme.sh --register-account -m xxx@xx.com |