Let’s Encrypt免费SSL证书已经受到了包括FireFox、Chrome在内的众多主流浏览器的兼容和支持,目前国内的应用主要是提现在各大电商网站和门户网站上,可以提高访问和交易安全性。很多外贸公司网站也使用是因为google已经明确表示有提供SSL证书将会是一个加分因素。那么对于我们广大站长来说,也许将来某一天你的网站就需要添加这么一个SSL证书。
给网站添加SSL证书的方式有很多,老魏以后会分别写教程。今天魏艾斯博客(www.vpsss.net)说一下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-auto chmod 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 http2; 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_http_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工具并不像官方说的那么快捷,一个不小心就会报错,大家安装的时候务必按照老魏上面的流程去做,我这里是没问题的。
转载请注明:魏艾斯博客» Let’s Encrypt官方推荐Certbot工具快速部署SSL证书
发表评论
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。