前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Let’s Encrypt 官方推荐 Certbot 工具快速部署 SSL 证书

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

作者头像
魏艾斯博客www.vpsss.net
发布2018-06-01 12:09:05
1.9K0
发布2018-06-01 12:09:05
举报

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 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 工具并不像官方说的那么快捷,一个不小心就会报错,大家安装的时候务必按照老魏上面的流程去做,我这里是没问题的。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-04-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档