使用acme.sh来生成SSL证书,给网站配置https,附nginx配置

安装acme.sh

acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书.

  • 安装acme.sh
curl  https://get.acme.sh | sh
  • 创建 一个 bash 的 alias, 方便你的使用
alias acme.sh=~/.acme.sh/acme.sh

安装完成可以通过查看版本来验证是否安装成功

# 查询版本号
acme.sh --version

使用acme.sh来生成SSL证书,给网站配置https,附nginx配置_第1张图片

acme.sh会自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书.
安装过程不会污染已有的系统任何功能和文件, 所有的修改都限制在安装目录中: ~/.acme.sh/

生成证书

acme.sh 实现了 acme 协议支持的所有验证协议. 一般有两种方式验证: http 和 dns
验证,这里使用dns来验证,http的使用请查看官网。
dns 方式的真正强大之处在于可以使用域名解析商提供的 api 自动添加 txt 记录完成验证.
acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商的自动集成.

阿里云为例,其它平台参考实现,修改生成证书–dns即可

  • 将Ali_Key和Ali_Secret添加到环境变量,这里给出的 api id 和 api key 会被自动记录下来, 将来你在使用命令生成证书的时候, 就不需要再次指定了. 直接生成就好了
export Ali_Key="********"
export Ali_Secret="********"
  • 注册账号
acme.sh --register-account -m my@example.com
  • 执行证书生成命令
# 生成证书,*.it996.vip为网站
acme.sh --issue --dns dns_ali -d *.it996.vip

接下来你将看到一个倒计时,证书生成成功后会员SUCCESS提示

安装证书,nginx为例

# nginx -s reload   service nginx force-reload   提前运行一下,看哪个可用
# --key-file  key的存放路径,自定义即可,文件名称可以自定义,最后的后缀记得和生成的一样即可
# --fullchain-file  证书存放路径,自定义即可,文件名称可以自定义,最后的后缀记得和生成的一样即可
# --reloadcmd 证书更新后执行的命令,(一个小提醒, 这里用的是 service nginx force-reload, 不是 service nginx reload, 据测试, reload 并不会重新加载证书, 所以用的 force-reload)
acme.sh --install-cert -d *.it996.vip \
--key-file       /data/https/*.it996.vip.key.pem  \
--fullchain-file /data/https/*.it996.vip.cert.pem \
#--reloadcmd     "service nginx force-reload"
--reloadcmd     "nginx -s reload"
  • nginx配置
server {
   	listen  443 ssl;
   	server_name  *.it996.vip; 
	# 证书配置,路径和上面一样即可
	ssl_certificate /data/https/*.it996.vip.cert.pem;  
    ssl_certificate_key /data/https/*.it996.vip.key.pem; 
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_prefer_server_ciphers on;

   	location / {
     	
   	}
}

更新证书

目前证书在 60 天以后会自动更新, 你无需任何操作. 今后有可能会缩短这个时间, 不过都是自动的, 你不用关心.

常用命令

# 安装acme
curl https://get.acme.sh | sh
# 查看acme版本
acme.sh --version
# 添加环境变量
export Ali_Key="**********"
export Ali_Secret="**********"
# 申请证书
acme.sh --issue --dns dns_ali -d *.it996.vip
# 更新证书
acme.sh --renew -d '*.it996.vip' --force
# 查看证书列表
acme.sh --list 
# 删除证书
acme.sh remove *.it996.vip
# 升级 acme.sh 到最新版:
acme.sh --upgrade
# 开启自动升级:
acme.sh  --upgrade  --auto-upgrade
# 关闭自动更新:
acme.sh --upgrade  --auto-upgrade  0

你可能感兴趣的:(https,web服务器,ssl,https,证书,https证书)