网站申请方式
这个也可以使用其他网站提供的免费证书。先要注册一个账号。
- 下载KeyManager:KeyManager - 一站式证书申请和证书密钥管理
- 启动运行KeyManager并登陆
- 点击左边栏的证书申请
- 输入要制作证书的域名:
品牌选择:Let’s Encrypt
TrusAsia可以免费使用1年,1年换一次,
Let‘s Encrypt的只有3个月,但支持通配符,通配符可以用于子域名
- 复制txt值
- 到域名解析服务提供商(https://www.dnspod.cn),修改或者增加相应域名的txt值
- 点击验证:https://myssl.com/dns_check.html?brand=1&type=2&domain=junenchain.com&txt=2019091002200717ycbuiu05vlbski2b2silvx1euhmibbzwmwmzzz11garmowmc#ssl_verify,自动会跳转到dns验证是不是正确的
- 验证通过后,就可以下载证书进行安装了:
- 在keyManager的证书申请界面,点击证书信息,选择导出证书,选择Nginx,导出:
- 上传证书压缩包到nginx服务器上
- 解压压缩包
- 替换根据nginx配置,替换原来老的证书文件
- 重启nginx
- 去网站上验证证书是否有效,如果不在提示证书就替换成功
使用Certbot生成方式
获取certbot的docker镜像,或者去https://certbot.eff.org/下载certbot程序也可以,以下以下是已docker方式来制作
1.docker pull certbot/certbot
2.本地创建www/.well-known/acme-challenge/文件
mkdir www/.well-known/acme-challenge/
3.在需要的生成域名的网站的nginx中加上/.well-known/的转发:
location /.well-known/ {
add_header Content-Type 'text/plain;'; root /tmp/www; }
如果有多个域名,每个域名下nginx的配置中的server都需要加
4.重启nginx
如果nginx是在docker中运行,需要修改nginx docker的加上目录的映射www/:/tmp/www
5.本地创建letsencrypt目录,后面证书会放到此目录的子文件夹中
6.执行docker命令,生成证书:
docker run -v /home/ubuntu/www:/tmp/www -v /home/ubuntu/letsencrypt:/etc/letsencrypt certbot/certbot certonly --webroot -w /tmp/www -d client.junenchain.com
-d后面接的是参数是你要生成的域名
-w 是你站点的位置,就是前面映射的/tmp/www目录
注意:这个命令不要针对同一域名生成太多次,次数多了就不让生成(多久在可以继续生成这个时间还不太清楚)
7.将letsencrypt/live/域名文件夹下所有的文件拷贝到nginx指定证书的位置
8.修改nginx.conf配置中证书的路径:
9.重启nginx,nginx启动成功后,打开浏览器,验证域名ssl证书是否可用
10.将生成证书的脚本加入到系统定时任务中,2个月自动重新生成一次:
sudo crontab -u root -e
11.重启计划任务服务:
sudo service cron restart
Note:
Certbot生成的证书的续签,也可以使用下面命令:
docker run -v /home/ubuntu/www:/tmp/www -v /home/ubuntu/letsencrypt:/etc/letsencrypt certbot/certbot renew --force-renew
这样可以将所有证书进行续签