Let's Encrypt免费SSL证书申请过程与Nginx部署教程

https作为http的安全替代品,正在受到越来越多的重视,很多网站包括大型互联网网站都纷纷启用https,同时搜索引擎也开始向着https倾斜,因此,部署https是一个与时俱进的话题。

HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。目前SSL有很多服务商,收费的高端品牌如Symantec、GeoTrust等,免费的Wosign、StartSSL、Let's Encrypt等。而本文的主角正是:Let's Encrypt。

Let's-Encrypt.jpg

Let's Encrypt作为一个全球新兴品牌,主要面向个人网站/博客、非盈利项目和开源项目等提供公共免费的SSL服务逐渐被人所知,该项目由Mozilla、Cisco、Akamai、IdenTrust、EFF等组织人员发起,主要的目的是为了推进网站从HTTP向HTTPS过度的进程,到目前为止,Let's Encrypt获得了IdenTrust交叉签名,可以应用且支持包括FireFox、Chrome在内的主流浏览器的兼容和支持。

一、环境准备

系统版本:centos_6.7_64BITS

Python版本:Python 2.6.6

Nginx环境:军哥LNMP1.4一键安装包

根据官方的要求,部署Let's Encrypt免费SSL证书之前,需要系统支持Python2.7以上版本以及支持GIT工具。不过因为每个商家的系统发行版和系统环境都可能不同,并不一定要求必须完全达标,遇到具体问题具体分析。

二、获取Let's Encrypt免费SSL证书

以主机大巴为例,执行以下指令,将邮箱和域名更换为自己的域名即可

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto certonly --standalone --email [email protected] -d zhujidaba.com -d www.zhujidaba.com

01agree.png

A同意、C取消;同意之后还会询问是否同意将邮箱地址分享给EFF以获取更多信息,Y同意、N不同意。

【注】:网站使用CDN加速,或者使用部分国内DNS包括第三方DNS等,都可能获取不到域名解析信息导致获取SSL失败的情况。

02failure.png

如图是使用CDN加速无法获取正确A记录解析的错误。

解决办法:如果使用CDN,请将加速关闭直接访问源站;如果使用某些国内DNS无法获取可以考虑尝试更换其他DNS服务商。

目前:百度云加速关闭加速后直接源站访问测试通过;腾讯域名DNSPOD测试通过。

三、Let's Encrypt免费SSL证书的部署应用

03success.png

获取完成Let's Encrypt证书后,程序会在"/etc/letsencrypt/live/yourdomain.com/"目录下生成5个文件,其中4个文件为生成的密钥证书文件:

cert.pem - Apache服务器端证书
chain.pem - Apache根证书和中继证书
fullchain.pem - Nginx需要的ssl_certificate文件
privkey.pem - 安全证书KEY文件

Nginx环境下,将会用到fullchain.pem和privkey.pem两个证书文件。可将其直接上传到LNMP一键包的Nginx的vhost文件夹下,或保存到特定文件夹,或保持原文件位置不动,只需在配置网站的.conf文件时修改相应路径即可。

建议:最好保持原位置不动,因为有效期原因续期的时候直接续期生成的目录文件就可以,不需要再手工复制。

在server段部署SSL:

server
{
listen 80;
#listen [::]:80;
listen 443 ssl;
ssl on;
        ssl_certificate     /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
server_name yourdomain.com yourdomain.com;

强制 http 301重定向到 https 代码:

if ($scheme = http ) {
return 301 https://www.zhujidaba.com$request_uri;
}

部署完成,执行重启命令即可:

lnmp reload
lnmp restart

四、解决Let's Encrypt免费SSL证书的有效期问题

Let's Encrypt证书是有效期90天的,需要手工更新续期。

./letsencrypt/certbot-auto renew --force-renew
猜您喜欢

发表评论

icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif