说在前面

本文仅记录给自己的网站添加“小绿锁”的动手操作过程,不涉及 HTTPS 工作原理等内容的讲解,感兴趣的同学可以参考篇尾的文章自行了解。

简单了解下我的实验环境:

  • 云服务器:CentOS 7.4
  • 网站宿主:Nginx 1.12.2
  • 备案域名:www.esofar.cn

这里以www.esofar.cn作为演示域名,届时一定要修改为自己的域名。

什么是 Let's Encrypt

Let's Encrypt 是一个由非营利性组织 互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构(CA)。

简单的说,借助 Let's Encrypt 颁发的证书可以为我们的网站免费启用 HTTPS(SSL/TLS) 。

Let's Encrypt免费证书的签发/续签都是脚本自动化的,官方提供了几种证书的申请方式方法,点击此处 快速浏览。

官方推荐使用 Certbot 客户端来签发证书,这种方式可参考文档自行尝试,不做评价。

我这里直接使用第三方客户端 acme.sh 申请,据了解这种方式可能是目前 Let's Encrypt 免费证书客户端最简单、最智能的 shell 脚本,可以自动发布和续订 Let's Encrypt 中的免费证书。

安装 acme.sh

安装很简单,一条命令:

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

整个安装过程进行了以下几步,了解一下即可:

  1. 把 acme.sh 安装到当前用户的主目录$HOME下的.acme.sh文件夹中,即~/.acme.sh/,之后所有生成的证书也会放在这个目录下;
  2. 创建了一个指令别名alias acme.sh=~/.acme.sh/acme.sh,这样我们可以通过acme.sh命令方便快速地使用 acme.sh 脚本;
  3. 自动创建cronjob定时任务, 每天 0:00 点自动检测所有的证书,如果快过期了,则会自动更新证书。

安装命令执行完毕后,执行acme.sh --version确认是否能正常使用acme.sh命令。

https://github.com/Neilpang/acme.sh
v2.7.9

如有版本信息输出则表示环境正常;如果提示命令未找到,执行source ~/.bashrc命令重载一下环境配置文件。

整个安装过程不会污染已有的系统任何功能和文件,所有的修改都限制在安装目录~/.acme.sh/中。

生成证书

据 acme.sh 官方文档介绍,其实现了 acme 协议支持的所有验证协议,一般有两种方式验证:http 和 dns 验证。

也就是我们有两种选择签发证书,这里我直接选择 http 验证方式,另外一种方式本篇不做介绍,可参考文档自行尝试。

签发证书也很简单,一条命令:

acme.sh --issue -d esofar.cn -d www.esofar.cn -w /home/wwwroot/esofar.cn

简单解释下这条命令涉及的几个参数:

  • --issue是 acme.sh 脚本用来颁发证书的指令;
  • -d--domain的简称,其后面须填写已备案的域名;
  • -w--webroot的简称,其后面须填写网站的根目录。

证书签发成功会有如下输出:



从截图看出,生成的证书放在了/root/.acme.sh/esofar.cn目录。

另外,可以通过下面两个常用acme.sh命令查看和删除证书:

# 查看证书列表
acme.sh --list # 删除证书
acme.sh remove <SAN_Domains>

至此,证书就下载成功。

安装证书

我的站点是由 Nginx 承载的,所以本节内容重点记录如何将证书安装到 Nginx,其他 webserver 请参考 acme.sh 文档自行实践。废话不多说,进入本节正题。

上一小节,生成的证书放在了/root/.acme.sh/esofar.cn目录,因为这是 acme.sh 脚本的内部使用目录,而且目录结构可能会变化,所以我们不能让 Nginx 的配置文件直接读取该目录下的证书文件。

正确的做法就是使用--installcert命令,指定目标位置,然后证书文件会被 copy 到相应的位置。

一条命令即可解决:

acme.sh  --installcert -d esofar.cn \
--key-file /etc/nginx/ssl/esofar.cn.key \
--fullchain-file /etc/nginx/ssl/fullchain.cer \
--reloadcmd "service nginx force-reload"

这里我将证书放到了/etc/nginx/ssl/目录下。

输出如下信息,则操作成功:

最后一步就是,修改 Nginx 配置文件启用 ssl,修改完成后需要重启下 Nginx,这一块不再详述。Nginx 配置请参考:

	server {
listen 443 ssl;
server_name esofar.cn; ssl on;
ssl_certificate /etc/nginx/ssl/fullchain.cer;
ssl_certificate_key /etc/nginx/ssl/esofar.cn.key; root /home/wwwroot/esofar.cn;
index index.html; location / {
try_files $uri $uri/ @router;
index index.html;
} location @router {
rewrite ^.*$ /index.html last;
}
} server {
listen 80;
server_name esofar.cn;
return 301 https://$server_name$request_uri;
}

完成证书部署后可以通过如下站点检测网站的安全级别:

更新证书

目前 Let's Encrypt 的证书有效期是90天,时间到了会自动更新,您无需任何操作。 今后有可能会缩短这个时间, 不过都是自动的,不需要您关心。

但是,您也可以强制续签证书:

acme.sh --renew -d example.com --force

更新 acme.sh

目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步。

升级 acme.sh 到最新版:

acme.sh --upgrade

如果您不想手动升级,,可以开启自动升级:

acme.sh  --upgrade  --auto-upgrade

您也可以随时关闭自动更新:

acme.sh --upgrade  --auto-upgrade  0

相关阅读

快速签发 Let's Encrypt 证书指南的更多相关文章

  1. LNMP V1.4一键快速部署Let's Encrypt免费SSL证书

    老左年前在"军哥LNMP V1.4测试版一键脚本安装以及功能上的升级体验"已经简单的体验到目前还没有正式版本的V1.4版本,理论上会在今年儿童节正式上线.从体验和实际的版本变动文档 ...

  2. Linux下使用acme.sh申请和管理Let’s Encrypt证书

    关于Let's Encrypt 免费SSL证书 Let's Encrypt 作为一个公共且免费 SSL 的项目逐渐被广大用户传播和使用,是由 Mozilla.Cisco.Akamai.IdenTrus ...

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

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

  4. 最简单的,在win,linux中,用powershell,自动获取Let's Encrypt证书方法

    powershell传教士原创 2020-04-12 Let's Encrypt证书有效期3个月,支持泛域名[*.你的网站.net].支持n天内(一般10天内就够用了),用脚本自动续期. 简介: 这个 ...

  5. 使用acme.sh签发Let's Encrypt的免费数字证书

    --------------安装----------------curl https://get.acme.sh | sh#让alias生效source ~/.bashrc ------------- ...

  6. 使用 acme.sh 签发续签 Let‘s Encrypt 证书 泛域名证书

    1. 安装 acme.sh 安装很简单, 一个命令: curl https://get.acme.sh | sh 并创建 一个 bash 的 alias, 方便你的使用 alias acme.sh=~ ...

  7. Let's Encrypt 证书 wget 报错

    最近发现一个奇怪的问题,网站使用 let's encrypt 的免费证书,浏览器访问时正常,但是wget的时候报错.报错信息如下: wget https://www.example.com --202 ...

  8. 使用Go和Let's Encrypt证书部署HTTPS

    为什么要使用HTTPS?使用HTTPS的途径有哪些?如何用Go来部署HTTPS?拿出你的小本本,你要的干货都在这儿! HTTPS的好处我们已在之前的文章中提高好多.它加密浏览器和服务器之间的流量,保障 ...

  9. 获取Let`s Encrypt证书的三种方式

    1,acme.sh 方式 1)获取acme脚本 curl https://get.acme.sh | sh 2)开始获取证书 acme.sh强大之处在于,可以自动配置DNS,不用去域名后台操作解析记录 ...

随机推荐

  1. 当离开浏览器窗口,提示语title更改

    head里面插入一下代码 <script> document.addEventListener('visibilitychange',function(){if(document.visi ...

  2. VUE-006-通过路由 router.push 传递 params 参数(路由 name 识别,请求链接不显示)

    在前端页面表单列表修改时,经常需要在页面切换的时候,传递需要修改的表单内容,通常可通过路由进行表单参数的传递. 首先,配置页面跳转路由.在 router/index.js 中配置相应的页面跳转路由,如 ...

  3. SQL行转列与列转行(转)

    原文: http://blog.csdn.net/jx_870915876/article/details/52403472 add by zhj: 本文是以MySQL为例说明的,但其实它适用于所有关 ...

  4. CST2017 安装问题

    1.需要修改破解文件license 中的电脑名称 2.若lincense 中有时间限制  需要把时间都修改   比如  到期为  1-jan-2018   则修改为1-jan-2019   所有的都需 ...

  5. mysql--实现oracle的row_number() over功能

    有时候我们想要得到每个分组的前几条记录,这个时候oracle中row_number函数使用非常方便,但可惜mysql没有.网上搜了些实现方法. 表flow_task有phaseno(序列号),obje ...

  6. zabbix基础服务搭建

    监控系统的介绍 性能优化和监控点 1.cpu           调度器          有效的分配cpu的时间片           上下文切换           运行队列            ...

  7. [js]练习绘制拓扑图

  8. adobe air for ios 应用完成appstore评论

    1,跳转到App Store:NSString *str = [NSString stringWithFormat:@"http://itunes.apple.com/us/app/id%d ...

  9. 《linux就该这么学》第十一节课: 第九章,网卡绑定与sshd服务

    8.4.服务的访问控制列表 TCPwrappers是RHEL7中默认启用的流量监控程序,能够对服务做出允许或拒绝. TCPwrappers服务由两个文件控制:  /etc/hosts.allow    ...

  10. phpstorm----------phpstorm如何安装和使用laravel plugin

    1.安装 2.安装成功以后,删除项目里面的.idea文件.然后关闭phpstrom,重新打开该项目,就会提示你 然后.idea里面就会生成 laravel-plugin.xml 文件.就可以使用直接C ...