Let’s Encrypt免费 SSL 证书已经受到了包括 FireFox、Chrome 在内的众多主流浏览器的兼容和支持,目前国内的应用主要是提现在各大电商网站和门户网站上,可以提高访问和交易安全性。很多外贸公司网站也使用是因为 google 已经明确表示有提供 SSL 证书将会是一个加分因素。那么对于我们广大站长来说,也许将来某一天你的网站就需要添加这么一个 SSL 证书。

Let’s Encrypt 官方推荐Certbot 工具快速部署 SSL 证书

安装环境:CentOS6   军哥 lnmp1.3

一、安装 Let’s Encrypt 之前要准备的

把 CentOS 系统安装好,lnmp 环境配置好并添加域名和虚拟主机完毕。

以下两个步骤根据你自己的系统情况操作,根据老魏实测的结果如果是CentOS6/7 务必提前安装 epel 源,否则后面生成证书时可能会报错。

CentOS 5 升级 python 版本,点我查看python 版本从 2.4 升级到 2.7的操作流程。 CentOS 6/7 安装 epel,点我查看centos 安装 epel 源的操作流程。

二、Certbot 选择部署版本

根据你的实际情况来针对性的选择系统和发行版本,然后会跳转到 automated 安装向导。

三、CentOS6 中使用 Certbot 部署 SSL 证书

1、老魏选择了 CentOS6 系统和 lnmp 环境,输入以下命令开始自动安装:

cd /root/
wget https://dl.eff.org/certbot-autochmod a+x certbot-auto./certbot-auto

图示如下

“Installing Python packages”这个过程需要稍等几分钟,中间有遇到 Is this OK 时候输入 y,回车即可。

这里下载 python 源默认是在国外了,如果你用国外 VPS 自然是没问题,而老魏测试 VPS 是国内的需要耐心等待一下,如果你使用国内 VPS 卡在 Installing Python packages…这个地方长时间不动,可以执行下面命令来修改 pip 源为国内的: mkdir ~/.pip cat > ~/.pip/pip.conf <<EOF [global] index-url = https://pypi.doubanio.com/simple/

[install] trusted-host=pypi.doubanio.com EOF 执行完,再重新运行 certbot 的命令应该正常安装 python 的包了。

2、生成域名 SSL 证书

admin@域名代表你域名对应的邮箱,尽量填写国外邮箱,国内的不知道好不好用。

A – 单域名

./certbot-auto certonly –email admin@域名.com –agree-tos –webroot -w /home/wwwroot/网站文件夹 -d www.域名.com

B – 多域名单目录生成单证书:(即一个网站多个域名使用同一个证书)

./certbot-auto certonly –email admin@域名.com –agree-tos –webroot -w /home/wwwroot/www.域名.com -d www.域名.com -d www.域名.com

C – 多域名多目录生成多个证书:(即一次生成多个域名的多个证书)

./certbot-auto certonly –email admin@域名.com –agree-tos –webroot -w /home/wwwroot/网站文件夹 1 -d 域名 1.com -d www.域名 1.com -w /home/wwwroot/域名 2 -d 域名 2.com -d www.域名 2.com

现在会弹出窗口,大概意思是把你的邮箱提交给一个 Let’s Encrypt 的合作伙伴,老魏这里选择的 n,你随意吧。

下面是这里可能遇到的两个错误(老魏全碰上了)和解决办法:

如果出现了下面红字的错误是因为没有提前安装 EPEL 源。

如果出现提示:访问 https://域名/.well-known/acme-challenge/**** 这个链接返回 403 错误(截图不完整了),所以必须要将对应虚拟主机配置文件里的 location ~ /. { deny all; } 这段配置删掉或注释掉或在这段配置前面加上 location ~ /.well-known { allow all; }

最后出现以下提示说明安装证书成功了。

2、生成的证书被放到/etc/letsencrypt/live/你的域名/目录中,这个是根据自己网址目录来的。进入里面可以看到有 cert.pem 、chain.pem 、 fullchain.pem  、privkey.pem 四个文件。

3、知道证书的安装路径之后,就涉及到在网站 Nginx 配置文件或者 APACHE 文件中添加路径了。

Nginx 的虚拟主机配置文件在:/usr/local/nginx/conf/vhost/域名.conf

命令:vi /usr/local/nginx/conf/vhost/域名.conf

输入 a 进入编辑状态,然后把下面已经配置好的代码(老魏实测没问题)复制粘贴到你那里,注意把下面所有的 域名.com 换成你的域名,证书路径也换成你自己的。结果就是主域名和 www 域名都自动 301 跳转到 https://www 域名,你可以根据自己的情况调整最后跳转到 https://主域名还是 www 域名。

server
 { listen 80; #listen [::]:80;
 server_name www.域名.com 域名.com; return 301 https://$server_name$request_uri;
 }server
 { listen 443 ssl https2; ssl_certificate /etc/letsencrypt/live/www.域名.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.域名.com/privkey.pem; ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5"; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; # HSTS (ngx_https_headers_module is required) (15768000 seconds = 6 months)
 add_header Strict-Transport-Security max-age=15768000; # OCSP Stapling ---
 # fetch OCSP records from URL in ssl_certificate and cache them
 ssl_stapling on; ssl_stapling_verify on;index index.html index.htm index.php default.html default.htm default.php; server_name www.域名.com 域名.com; root /home/wwwroot/www.域名.com;include wordpress.conf; #error_page 404 /404.html;
 include enable-php.conf;location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
 { expires 30d;
 }location /wp-content/uploads/ {  
location ~ .*.(php)?$ {  
deny all;  
} 
} 

location ~ .*.(js|css)?$
 { expires 12h;
 }location ~ /.
 { deny all;
 } access_log off;
 }

然后按 ESC 退出编辑状态,输入:wq 保存。

4、重启 nginx 使以上操作生效,命令如下:

/etc/init.d/nginx reload

5、用浏览器打开主域名或者带 www 的域名,都会自动 301 跳转到如下图的结果,也就是域名前面出现了小绿锁,点击绿锁会出现 Let’s Encrypt 验证的证书信息,说明添加成功了。

提示:1、截图网页中显示的 it’s ok 是老魏自己建了一个 index.html 扔进虚拟主机目录里的,如果是新建网站没有任何内容,就会显示“403 Forbidden”,不过不影响主域名和 www 域名自动 301 重定向到 https 域名。

2、这里仅限于新装 wordpress 博客的情况,至于已经在运行的 wordpress 博客,限于本文篇幅过长,老魏留着后面再补充。

6、这个网站 https://www.ssllabs.com/ssltest/可以测试 SSL 证书是否正常工作,我这个测试结果是 A+,很完美的结果!

目前 Let’s Encrypt 免费 SSL 证书默认是 90 天有效期,可以提前用下面命令手动续约 90 天:

./certbot-auto renew –dry-run

怕忘记续约过期了可以用crontab 定时执行命令到期自动续约,这样就可以放心了。

为了写这篇文章,老魏实测了 3 天才搞定整个流程。开始我用的国内 VPS 在测试,每次总是卡在 Installing Python 这里,因为默认的 Python 源是国外的,下载速度实在太慢了。后来又换了国外 VPS 又出现各种错误提示,最后又回到了国内 VPS。而网上的教程很多都是复制粘贴的,并没有经过自己的实际测试,很容易误导你。总之从安装过程来看这个 Cerbot 工具并不像官方说的那么快捷,一个不小心就会报错,大家安装的时候务必按照老魏上面的流程去做,我这里是没问题的。


如何申请https证书?快速部署 SSL 证书的更多相关文章

  1. 董雨佳二建市政讲的怎么样

    相信很多准备考二级建造师的朋友或已经在考而没能一次通关的朋友都在考虑一个问题,那么在有限的时间内,如果正确地选择一个适合自己的老师去开始学习呢?本人是...

  2. 主题未授权此域名怎么解决

    现在网上博客程序当红的有ZBLOG和WordPress这两种程序,所以因此产生了很多主题创作者,其中不少优秀的主题都是要收费的,既然创作者付出了心血和精力又不想给网...

  3. 防御峰值是什么意思

    很多站长在购买高防服务器、高防IP、高防CDN的时候,服务商都会写相关配置,比如防御峰值。很多人不懂防御峰值是指什么,以为是攻击的总量,其实是不对的,防御峰...

  4. INIT_CSRF_ERR,宝塔bt面板出现错误提示如何解决?

    windows版本,前台无法登录面板,在服务器内部打开后弹出错误提示,显示INIT_CSRF_ERR 错误,究竟是什么回事该怎样解决呢?出现错误提示后,所有功能都是无法使用...

  5. 如何申请https证书?快速部署 SSL 证书

    申请HTTPS证书需要拥有一个域名后提交Gworg对域名认证后颁发HTTPS证书,整个流程一般几分钟就可以完成,非专业人员也可以完成申请HTTPS证书。HTTPS证书主要将网站...

  6. HTTPS是什么意思,有什么用?

    什么是HTTPSHTTPS和SSL(安全套接字层)一起工作以在浏览器和服务器之间提供安全连接,使它们能够通过三种方式安全地共享信息:HTTPS(全称:Hypertext Transfer...

随机推荐

  1. 董雨佳二建市政讲的怎么样

    相信很多准备考二级建造师的朋友或已经在考而没能一次通关的朋友都在考虑一个问题,那么在有限的时间内,如果正确地选择一个适合自己的老师去开始学习呢?本人是...

  2. HTTPS是什么意思,有什么用?

    什么是HTTPSHTTPS和SSL(安全套接字层)一起工作以在浏览器和服务器之间提供安全连接,使它们能够通过三种方式安全地共享信息:HTTPS(全称:Hypertext Transfer...

  3. 防御峰值是什么意思

    很多站长在购买高防服务器、高防IP、高防CDN的时候,服务商都会写相关配置,比如防御峰值。很多人不懂防御峰值是指什么,以为是攻击的总量,其实是不对的,防御峰...

  4. 如何申请https证书?快速部署 SSL 证书

    申请HTTPS证书需要拥有一个域名后提交Gworg对域名认证后颁发HTTPS证书,整个流程一般几分钟就可以完成,非专业人员也可以完成申请HTTPS证书。HTTPS证书主要将网站...

  5. 主题未授权此域名怎么解决

    现在网上博客程序当红的有ZBLOG和WordPress这两种程序,所以因此产生了很多主题创作者,其中不少优秀的主题都是要收费的,既然创作者付出了心血和精力又不想给网...

  6. 服务器的硬防和软防区别在哪里?

    谈到高防云主机,相信很多人是不陌生的,但是你知道高防的防御分为哪几种吗?很多人在这方面都不太了解,但是这些高防的防御也有区别,相信大家就更懵了吧。高防...

  7. 抖音私信功能被封禁后多久才能恢复

    抖音私信功能封禁按照违规行为的严重性分为不同的等级,分别为1天、7天、30天,如果同一个账号多次被举报则会面临被永久封禁,封禁后需要等待官方解禁;抖音私信...

  8. INIT_CSRF_ERR,宝塔bt面板出现错误提示如何解决?

    windows版本,前台无法登录面板,在服务器内部打开后弹出错误提示,显示INIT_CSRF_ERR 错误,究竟是什么回事该怎样解决呢?出现错误提示后,所有功能都是无法使用...