最近,在网上火透半边天的,非 Let’s Encrypt 的免费SSL证书莫属了。Let’s Encrypt 是一个将于2015年末推出的数字证书认证机构,将通过旨在消除当前手动创建和安装证书的复杂过程的自动化流程,为安全网站提供免费的SSL/TLS证书,同时,它还是免费、自动化、开放的证书签发服务。Let’s Encrypt的证书申请和续期都非常方便,默认的证书有效期是90天,通过cron的定时任务可以实现自动化的续期,所以,能通过自动的方式解决的问题都不是问题,这也是这次折腾起https支持的原因。此篇blog主要记录一下申请证书,配置证书到nginx,以及自动续期的实现步骤,供有兴趣的同学参考。

第一步 获取Certbot

Certbot 是一个简单易用的 SSL 证书部署工具,由 EFF 开发,前身即 Let’s Encrypt 官方(Python)客户端。简单来说,certbot 就是一个简化 Let’s Encrypt 部署,和管理 Let’s Encrypt 证书的工具。certbot的开源项目在GitHub上,所以,我们的第一步,是clone certbot项目到本地:

1
git clone https://github.com/certbot/certbot

第二步 申请证书

现在,可以通过脚本来申请证书了,以我的域名为例:

1
2
cd certbot
./letsencrypt-auto certonly -d www.xiaozhou.net -d xiaozhou.net

出现如下的证书申请与安装界面:

选择第二个选项,OK并继续。界面会提示证书申请成功的信息,表示证书已经成功生成。

需要注意的是,在申请证书之前,如果本机有运行Nginx,需要先停掉。并确认本机的443端口能被公网所访问

第三步 配置证书

申请好的证书,包含四个文件,默认会放在这里:

1
2
3
4
/etc/letsencrypt/live/www.xiaozhou.net/fullchain.pem
/etc/letsencrypt/live/www.xiaozhou.net/privkey.pem
/etc/letsencrypt/live/www.xiaozhou.net/cert.pem
/etc/letsencrypt/live/www.xiaozhou.net/chain.pem

有了这些证书文件,我们就可以去配置我们的Nginx了,实际上,我们用两个证书文件就行了,一个是带私钥的文件,一个是带公钥的文件。拿我的Nginx配置文件举个栗子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {listen 80 default; #默认监听80的HTTP端口; listen 443 ssl; #确保Nginx监听HTTPS的443端口# SSL证书配置ssl_certificate /etc/letsencrypt/live/www.xiaozhou.net/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/www.xiaozhou.net/privkey.pem;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;root /home/xiaozhou;index index.html index.htm;server_name xiaozhou.net www.xiaozhou.net;
}

配置好之后,直接用Nginx reload配置即可。

第五步 证书的验证

证书配置好了,我们就可以直接用浏览器通过https地址来访问和验证证书了,比如:https://www.xiaozhou.net

我们会看到地址栏的前面有一把小锁,嗯,咱是有证书的人了!

点击查看证书,还可以看到申请到的证书的详细信息,Let’s Encrypt签发的,货真价实:

第六步 证书的自动续期

最后一步,就是证书的自动续期了。Let’s Encrypt的证书,默认的有效期是90天,不过官方推荐每60天续期。到期之后,我们需要用命令来为证书续期,不过我们是懒人,这种体力活还是交给机器来完成比较合适。所以,我们可以用Linux的cron job来完成这类的任务,配置cron job,每两个月的第一天,执行下面的命令:

1
2
3
#minute hour day month day_of_week    command0     0    1   */2      *          /letsencrypt/certbot-auto renew --post-hook "systemctl reload nginx"

注意在cron job里面需要用绝对路径

完结

简单的六步,我们轻轻松松的就申请了证书,并给blog开启了https访问,还给证书设置了自动续期,嗯,多亏了certbot这个工具,相比起当初申请StarSSL的各种繁琐,一切实在是来得太方便了。

另一种解决方案:

1,git clone https://github.com/letsencrypt/letsencrypt
此命令会在目录下生成一些信息/etc/letsencrypt/

2,关闭apache /nginx

sudo /etc/init.d/apache2 stop

3,再次检查是否占用了80和443端口

netstat -ap | grep 80
netstat -ap | grep 443
如果占用了会输出内容,如果没有就不会输出内容

4,开始执行获取SSL证书和私钥

cd letsencrypt
./letsencrypt-auto

执行以上代码会出现以下步骤:

选择第2个  secure

选OK

看到这步已经申请成功了

SSL证书和私钥就在目录中/etc/letsencrypt/live/xgllseo.com,同时在目录/etc/apache2/sites-available/

也帮我们创建了一个ssl文件xgllseo-le-ssl.conf,如果没有请参考avalon123-le-ssl-conf并自己创建,还要创建一个软连接

sudo ln -s /etc/apache2/sites-available/xgllseo-le-ssl.conf /etc/apache2/sites-enabled/xgllseo-le-ssl.conf

(如果自动帮我们生成好了xxx-le-ssl.conf,也会自动帮我们创建软连接的,也会帮我们自动获取证书和私钥路径)

5,编辑apache2.conf

//直接在最底部加上这代码Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProxyCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLHonorCipherOrder on
SSLProtocol all -SSLv2 -SSLv3
SSLProxyProtocol all -SSLv2 -SSLv3
SSLPassPhraseDialog builtin
#SSLSessionCache "shmcb:/usr/local/apache/logs/ssl_scache(512000)"
#SSLSessionCacheTimeout 300
#SSLMutex "file:/usr/local/apache/logs/ssl_mutex"将其中的:AllowOverride None修改为:AllowOverride All6,检查是否开启了Mod_rewrite 模块,一般情况下都是默认开启了的,不过检查下也好。
在终端中执行sudo a2enmod rewrite指令后,即启用了 Mod_rewrite 模块。另外,也可以通过将 /etc/apache2/mods-available/rewrite.load 连接到 /etc/apache2/mods-enabled/rewrite.load
来打开 Mod_rewrite 模块。用指令操作就是:sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load

7,重启apache

sudo /etc/init.d/apache2 restart

输入地址https://www.xgllseo.com  看能否访问,如果可以那就成功了。

不过直接输入域名时候是会直接跳转到http的而不是https,其实我们要把80端口自动跳转到443端口,也就是要做301跳转。

8,编辑/etc/apache2/sites-available/xgllseo.conf,加入以下这3句话,(注意要看位置)

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://www.xgllseo.com/$1 [L,R=301]</VirtualHost># vim: syntax=apache ts=4 sw=4 sts=4 sr noet

9,重启apache

sudo /etc/init.d/apache2 restart

10,Let's Encrypt免费SSL证书续期

Let's Encrypt免费SSL证书有效期是90天,也就是每三个月你就得续期一次。采用官方的方法获取到的免费SSL证书,你不需要更改Apache和Nginx配置代码,执行以下代码即可自动替换证书为新的(注意修改域名和邮箱):

./letsencrypt-auto certonly --renew-by-default --email freehao123@gmail.com -d freehao123.org -d www.freehao123.org
//没有邮箱就把--email freehao123@gmail.com删除

要更新之前要停止mysql、apache2 、nginx

sudo /etc/init.d/mysql stop
sudo /etc/init.d/apache2 stop
sudo /etc/init.d/nginx stop

(到目录/etc/letsencrypt/找./letsencrypt-auto在执行一次)步骤是:

1,选择要续期的域名

2,选择第二个选择,相当于重装

3,选择第一个

更新完成重新开启mysql、apache2 、nginx

sudo /etc/init.d/mysql restart
sudo /etc/init.d/apache2 restart
sudo /etc/init.d/nginx restart

查看续期是否成功:

如何查看过期时间:

谷歌浏览器查看

点击“锁头”----点击“详细信息”

点击“view certificate”

就会自动弹出证书信息。

也可以按F12---切换到“Security”选项卡---点击“View certificate”

------------------------------------------------------------------------------------

注意一些细节:

如果之前你网站是http://xxxx,使用了https://xxx了之后,发现能访问但是锁头并不是绿色的,或者有些页面是绿色锁头有些不是,并且在控制台还有报错,如:

那么有可能就是你首页或者其他页面加载的时候使用了之前的http://的地址。统一修改就好了

批量修改图片地址:

UPDATE wp_posts SET post_content = replace(post_content, 'https://www.xgllseo.com', 'https://www.xgllseo.com');
//注意表前缀

对于wordpress还有3处地方要改

UPDATE wp_posts SET pinged = replace(pinged, 'https://www.xgllseo.com', 'https://www.xgllseo.com')
UPDATE wp_posts SET guid = replace(guid, 'https://www.xgllseo.com', 'https://www.xgllseo.com')

注:Wordpress数据库里面几个重点替换的表和字段:
表wp_posts里面的post_content (文章内容)
表wp_posts里面的pinged (ping内容)
表wp_posts里面的guid (WordPress默认链接结构)
表wp_comments里面的comment_author_url (留言作者URL地址 )

----------------------------------------------------------------------------------------

多域名申请

多域名申请如果重复执行不能成功,如:

git clone https://github.com/letsencrypt/letsencrypt
//再次执行,不能成功。

这时候在/etc/letsencrypt/目录下在创建一个letsencrypt/目录,切换到/etc/letsencrypt/letsencrypt/目录下,在执行以下命令

git clone https://github.com/letsencrypt/letsencrypt

就会发现出现了2个以上的域名让你选择,选择要为申请证书的域名即可,一切按照以前步骤来即可。

wordpress个人博客申请Let’s Encrypt免费SSL证书相关推荐

  1. 手把手教你云服务器如何搭建typecho博客网站(包括配置免费SSL证书)

    Typecho是一款轻量级开源博客程序.基于PHP5开发,支持多种数据库,优点是内核强健.扩展方便.体验友好.运行流畅. 轻量应用服务器可以用来构建网站.小程序/小游戏.电商.云盘/图床以及各类开发测 ...

  2. 申请Let‘s Encrypt免费SSL证书、自动化续签证书

    一.环境 安装证书的环境为Centos + Nginx,如果没有安装Nginx则需要先安装. 二.申请流程 1.开放80和443端口 firewall-cmd --permanent --add-po ...

  3. Let‘s Encrypt免费SSL证书申请

    摘要: Let's Encrypt作为一个公共且免费SSL,目前Let's Encrypt免费SSL证书默认是90天有效期,但是我们也可以到期自动续约. 参考搬砖内容: GitHub - acmesh ...

  4. 利用Certbot工具快速给网站部署Let's Encrypt免费SSL证书

    使用https证书的话,强制使用域名 很多商家也都提供免费证书,比如腾讯云提供免费一年GeoTrust DV SSL证书.Let's Encrypt永久免费但需要90天激活一次续约,当然如果要购买证书 ...

  5. Django服务器安装ssl证书,Django网站(Apache部署)安装Let's Encrypt免费SSL证书

    为什么要HTTPS 2018年2月8日,谷歌浏览器发布官方博客称,2018年7月发布的新版谷歌浏览器Chrome将把所有的HTTP网站标记为不安全.这项举措是为了促进网络安全,倡导更多网站使用HTTP ...

  6. 如何申请腾讯云免费ssl证书并部署

    本文简单介绍下如何申请腾讯云免费ssl证书以及服务器部署相关内容. 一.ssl证书申请 申请腾讯云免费SSL证书的前提: 1.注册腾讯云帐号 2.做帐号实名认证 过前面两步,就可以开始申请腾讯云免费S ...

  7. 手把手教你申请腾讯云免费SSL证书

    SSL证书和我们日常用的身份证类似,是一个支持HTTPS网站的身份证明,SSL证书里面包含了网站的域名,证书有效期,证书的颁发机构以及用于加密传输密码的公钥等信息,由于公钥加密的密码只能被在申请证书时 ...

  8. windows server使用 LetsEncrypt-Win-Simple来安装和使用用Let's Encrypt免费SSL证书

    一.网站部署 LetsEncrypt-Win-Simple可以自动发现已经部署的网站供我们选择要生成证书的网站,而且还需要进行验证.所以在生成证书之前,确保网站已经部署好并可以正常访问. 二.生成证书 ...

  9. 申请阿里云的免费SSL证书,实现小程序HTTPS请求

    新手申请,阿里云控制台太多东西了,恕我找不到菜单,或者说找不到在哪里可以免费申请,反正一个字 懵,写这篇文章纯属给我自己作个笔记吧. 1.在阿里云控制台申请免费SSL证书 https://help.a ...

最新文章

  1. 记录在Spring-Boot中使用Fegin调用RESTfull的PATCH方法设置
  2. NEC中标里斯本智慧城市项目 助力城市整体数字化变革
  3. logicaldoc 6.5 结合postgresql 9.x安装部署—基于windows平台
  4. buffer sort Oracle,[转]BUFFER SORT是BUFFER却不是SORT
  5. CUDA编程指南阅读笔记
  6. html 手写字效果,canvas画布实现手写签名效果的示例代码
  7. 从无头单链表中删除节点
  8. kettle同步数据到hive 巨慢_超详细教程,kettle ETL mysql到hadoop hive数据抽取,值得收藏...
  9. 手机影音第十三天,xutils3、Glide的使用获取网络图片;下拉、上滑刷新;缓存网络资源...
  10. python 内存溢出能捕获吗_python之记录一次内存溢出
  11. smooth_l1_loss(y_true, y_pred)
  12. html图片透明度变化,css,_CSS3动画实现图片透明度变化在微信上无效的解决方案,css - phpStudy...
  13. 手机怎么用java9_java9_java9官方版 32位64位 最新版_天天下载手机版
  14. GitHub上整理的一些工具
  15. sir模型初始值_SIR模型
  16. 小新pro13 archlinux 显卡 声卡 驱动安装
  17. FlashFXP,flashfxp使用方法
  18. 服务器dns劫持修复,电脑DNS被劫持怎么修复 电脑dns被劫持解决方法
  19. 基本逻辑门电路 - 异或
  20. 开源机器学习模型管理工具DVC介绍

热门文章

  1. lastb 命令的输出结果中的 ssh:notty 的意思
  2. 用 CaptureScreenshot捕捉游戏画面(截图,截屏)
  3. C语言程序设计第五版谭浩强课后答案 第九章习题答案
  4. 计算机化工应用答案,计算机化工应用习题与解答.pdf
  5. [Tool]系统截图工具
  6. Linux ar命令(更改静态库相关属性信息)
  7. 凤凰新闻 android,凤凰新闻app正式版
  8. dataType和contentType的区别
  9. PK61键盘使用说明
  10. cv2.imread