前言

一直想撸一下https,最近刚好有点空,就实现了一下。之前看过一篇教你快速撸一个免费HTTPS证书的文章,通过Certbot来管理Let's Encrypt的证书,使用前需要安装一堆库,觉得不太友好。所谓条条大路通罗马,肯定还有其他方法可以做这个事情。

经过一番研究,发现了 acme.sh 这个库,这个是用Shell脚本编写的,不需要安装其他东西,比较纯净,觉得比较适合自己,记录一下过程。

准备工作

  1. 一个已解析好的域名(可以用http来访问)。
  2. 开启服务器的443端口防火墙。

步骤

一、安装acme.sh

curl https://get.acme.sh | sh

这个命令后会将acme.sh安装到~/.acme.sh/目录下
重新载入~/.bashrc

source ~/.bashrc 

二、生成证书

acme.sh  --issue -d www.your-domin.com  --webroot  /srv/your-domin.com/

这个命令的意思是用http方式将www.your-domin.com生成一个证书,/srv/your-domin.com/是你的网站根目录。(这个过程中acme.sh 会全自动的生成验证文件, 并放到网站的根目录, 然后自动完成验证. 最后又自动删除验证文件.)

三、安装或copy证书到nginx目录

默认生成的证书都放在安装目录下: ~/.acme.sh/,这个目录一般来说不能让nginx或Apache直接使用。所以我们需要将证书放到一个指定的目录,习惯是放在/etc/nginx/ssl/目录下。acme提供了--installcert来安装证书,只需指定目标位置, 然后证书文件会被copy到相应的位置。
先确保存在/etc/nginx/ssl/目录

mkdir /etc/nginx/ssl

copy证书并指定nginx reload命令

acme.sh  --installcert  -d  www.your-domin.com   \--key-file   /etc/nginx/ssl/www.your-domin.com.key \--fullchain-file /etc/nginx/ssl/fullchain.cer \--reloadcmd  "service nginx force-reload"

service nginx force-reload是为了在让acme自动更新时候能够重启nginx使得证书生效。执行完命令可以在/etc/nginx/ssl/看到多了www.your-domin.com.keywww.your-domin.com.cer的文件。

四、生成 dhparam.pem 文件

openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

这一步不是必须,但最好加上,后面配置好后会通过ssllabs.com 来验证一下,如果这一步ssl_dhparam 未配置,将导致 ssllabs.com 的评分降到 B。A+是最好。

五、配置nginx

证书已安装完毕,接下来就是让nginx来使用这个证书了。由于我这个服务器有几个站点,而目前只是一个站点配置了证书,因此只修改当前站点的conf即可

server {listen       80;server_name www.your-domin.com;listen       443 ssl http2 default_server;listen       [::]:443 ssl http2 default_server;ssl_certificate /etc/nginx/ssl/www.your-domin.com.cer;ssl_certificate_key /etc/nginx/ssl/www.your-domin.com.key;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;ssl_dhparam /etc/nginx/ssl/dhparam.pem;...
}

ssl_prefer_server_ciphers on; 这个配置能提高证书的评分。
ssl_dhparam /etc/nginx/ssl/dhparam.pem; 能提高证书评分,这个文件是在第四步时生成的,若没有做则不需要写这句。
nginx -t验证一下nginx配置是否正确,然后systemctl restart nginx重启一下nginx,就可以用https://www.your-domin.com测...。

六、证书更新

Let's Encrypt 的证书有效期是 90 天的,需要定期重新申请,不过acme在安装的时候就已经设置了自动更新,所以这一步不用关心,很省心。
这里了解一下acme.sh的自动更新:安装acme时会自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书.
查看任务

# crontab -l
47 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

手动renew一下证书可以通过这个命令

acme.sh --cron -f

七、设置软件自动更新

目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.所以为了省心省力,最好还是设置一下软件的自动更新,执行下面的命令就可以了。

acme.sh  --upgrade  --auto-upgrade

其他

在这个网站可以验证一下你的证书级别,根据我上面的配置可以评级为A。
https://www.ssllabs.com/sslte...

参考文章

  • acme.sh说明
  • 使用 acme.sh 给 Nginx 安装 Let’ s Encrypt 提供的免费 SSL 证书
  • 让你的网站免费开启Https访问,绿色健康小清新

使用acme.sh撸一个免费且自动更新的HTTPS证书相关推荐

  1. ACME.SH 申请SSL证书(免费、自动更新)

    1. 获取DNS密钥 (1)获取域名服务商AccessKey ID及AccessKey Secret 我使用的域名是阿里云,故需要去阿里云RAM管理平台获取: 其他服务商,可以去指定的服务商控制台获取 ...

  2. Rocky(Centos)使用acme.sh申请安装Let‘s Encrypt泛域名ECC证书(阿里DNS)

    现代的浏览器开始有将 https 访问作为默认访问方式的倾向,因此需要将网站配置为https 访问. Let's Encrypt 组织提供免费的 TLS 加密证书,用于协助web服务器实现https协 ...

  3. 教你快速撸一个免费HTTPS证书

    摘要: 免费 HTTPS 证书,了解一下? HTTPS 已成为业界标准,这篇博客将教你申请Let's Encrypt的免费 HTTPS 证书. 本文的操作是在 Ubuntu 16.04 下进行,使用 ...

  4. acme.sh快速申请免费https证书

    1.下载acme.sh curl https://get.acme.sh | sh -s email=my@example.com alias acme.sh=~/.acme.sh/acme.sh 2 ...

  5. 手把手教您使用飞飞影视导航系统搭建一个24小时自动更新的影视网站

    怎样实现24小时自动更新,觉得有道理,您就继续往下看? 通常是两种方法(定时挂机采集更新.Javascript脚本触发更新脚本),我们这里就以定时挂机采集进行讲解! 怎样实现24小时自动更新,觉得有道 ...

  6. 腾讯云服务器免费证书验证,免费申请腾讯云https证书方法

    如今在网站使用https已经是非常普遍的事情,对于站长来说,https证书似乎已经成为了必备,今天我们为大家介绍申请腾讯云https证书的方法与过程 首先打开腾讯云的管理控制台,进入证书管理页面,我们 ...

  7. Acme.sh 自动生成、续期 ​Let‘s Encrypt 免费SSL证书

    ​​Let's Encrypt 提供了90天免费证书,而 acme.sh 实现了 acme 协议, 可以从 ​​Let's Encrypt 生成免费的证书.,通过计划任务可实现自动续期,自动部署,完全 ...

  8. acme.sh从 letsencrypt 生成SSL免费证书并自动更新证书

    acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书 ACME 协议: Automatic Certificate Management Environment 自 ...

  9. acme云服务器生成证书_使用 acme.sh 申请 SSL 证书并且定期自动更新

    在我们的实际项目生产过程中往往需要为部署的服务和域名配置 SSL 证书,可以采用的方法有很多种,例如可以申请阿里云的免费 SSL 证书,或者也可以使用 CloudFlare 的 SSL 服务.本文介绍 ...

最新文章

  1. SP-1CL3 陶瓷接收管 光电接收二极管 红外线接收管
  2. Python剑指offer:数组中数值和下标相等的元素
  3. ATT扩展随选网络至100城 SDN在美国落地开花
  4. Minimax Problem(二分+二进制状态压缩)
  5. 关于未捕获异常的处理(WPF)
  6. 计算机在材料科学中的应用上机二,计算机在材料科学中的应用-上机实验二.doc...
  7. 在delphi原有控件基础上画图
  8. JPA、Hibernate、Springdata JPA
  9. SAS 146GB*8 RAID5数据恢复过程(HP 双循环)
  10. SQL Serever学习14——存储过程和触发器
  11. javascript去除空格回车符
  12. 事实表 的指标 维度表_数据库-事实表和维度表之间的区别?
  13. Take Your Seat
  14. 【听说】比付费软件更好的94个免费软件
  15. Already included file name
  16. 转-快找个程序员做老公吧
  17. python打印等腰三角形_Python 打印各种三角形
  18. 古罗马数字的基本知识
  19. linux移植嵌入式系统,嵌入式系统学习——S3C2451之Linux移植步骤
  20. 一图读懂JVM架构解析

热门文章

  1. IO系统性能之一:衡量性能的几个指标
  2. Run time setting设置详解
  3. Linux 里有/lib和/usr/lib,这两个目录下的库文件有什么区别吗?如果没区别为什么又要分开放呢...
  4. 你可能已经知道或者不知道的ASP.NET 2.0技巧(转载)
  5. CentOS 7下启动、关闭、重启、查看MySQL服务
  6. Spring Cloud搭建微服务架构----使用Zipkin做服务链路追踪
  7. 判断android应用程序是否已安装
  8. C# 连接SQL数据库字符串
  9. 2009年教师节祝福语大全
  10. Jakarta EE:云原生Java的新平台