[千金软文] 使用LETSENCRYPT可节省4000元/年的HTTPS认证费,申请教程

一、前言

随着全民互联网安全意识的增强,由于HTTPS具有比HTTP更高网络安全等级,HTTPS开始迅速普及。但是HTTPS的证书每年的认证费需要近千元,除非是由于不可抗拒的原因,必须升级到HTTPS,否则一般选择继续使用HTTP。高额的认证费阻碍HTTPS快速推广应用,于是let's encrypt一个开源的HTTPS证书授权应运而生,给大家提供了优质的免费的自动化认证服务。

我在配置let's encrypt的路上遇到了不少的困难,走了很多的弯路,浪费了不少时间。所以将其总结下来进行分享。根据我分享的经验进行多部署几次的话,平均获取一个HTTPS证书只需要10分钟左右。

使用的官网推荐自动部署工具certbot,支持自动部署的软件,系统环境分别如下:

支持的软件

apache
nginx
haproxy
plesk
等等(详情请查看certbot官网)

支持的系统

Web Hosting Service
Debian
Ubuntu
Gentoo
Arch Linux
Fedora 26+
CentOS
RHEL
FreeBSD
OpenBSD
macOS
Devuan
等等(详情请查看certbot官网)

官网链接

  1. let'sEncrypt官网
  2. Certbot官网

下面是我在CENTOS6NGINX部署Certbot的经验分享。如果系统和软件不同,也可以作为一个解决问题的思路,以供参考。

二、环境

  1. Centos6
  2. Centos6 已经安装了OpenSSL library
  3. Nginx 已集成 ssl模块
  4. 你已经有了一点远程操作Linux的入门知识和实操经验

三、步骤

注意:重要,请阅读完(三、步骤)和(四、难点)后再进行操作

步骤一: ssh以root用户登陆centos6服务器

// 打开终端输入
# ssh root@服务器IP

步骤二: 分别执行如下命令

// 进入root目录(可定义)
# cd ~

// 下载certbot脚本
# wget https://dl.eff.org/certbot-auto

// 给certbot添加可执行权限
# chmod a+x certbot-auto

// 运行certbot脚本
# sudo ~/certbot-auto --nginx

步骤三: 运行certbot后,正常的情况一路会出现如下的选项

是否需要安装python34?输入`Y`回车

输入一个邮箱用于接受证书到期更新通知:填写自己可用的邮箱,例如:`[email protected]`

是否同意lets encrypt的协议?输入`A`回车

是否接收他们的新闻,通过这种方式支持他们?输入`Y`回车

输入要支持HTTPS的域名,空格分开:填写已指向并可用的域名,
多个域名用`半角空格`分开,例如:`www.bbwhm.com kunshan.bbwhm.com`

是否HTTP自动跳转到HTTPS?选择`n`的场合,该网站同时支持`http`和`https`,
选择`Y`的场合,该网站只支持`https`网站,所有`http`请求自动跳转为`https`,
我的选择是`Y`回车

步骤四:结果确认

生成成功,建议备份`/etc/letsencrypt`,直接访问`https://你的域名`,
查看结果,网站前多了一个锁,表示成功。

四、难点

难点1:python镜像配置错误

描述:一台阿里云服务器,centos6系统已经默认安装了python2.6,是否需要自动安装python34?就算选择自动安装了python34,运行仍然失败,为什么?

解答:certbot需要安装python34,并自动安装,只要选择Yes即可。运行仍然失败的原因是,阿里云服务器的系统,有个配置文件默认指向阿里云镜像导致的,只要修为清华镜像即可。

vi ~/.pip/pip.config

修改前

[global]
index-url=http://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host=mirrors.aliyun.com

修改后

[global]
index-url=https://pypi.tuna.tsinghua.edu.cn/simple

难点2:nginx的配置路径不满足certbot要求

描述:nginx不是通过yum install nginx安装,是自己编译安装的,有些配置不满足certbot的要求

解答:certbot要求必须存在如下的文件和目录

/usr/bin/nginx
/etc/nginx

操作方法,假设你的nginx位于/usr/local/nginx,你需要执行下面的两个命令,创建快捷方式软连接过去即可。

# ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
# ln -s /usr/local/nginx/conf /etc/nginx

难点3:nginx缺少ssl模块

描述:提示nginx没有添加ssl模块

解答:可以通过nginx -V,查看是否有ssl模块。由于nginx是自己从官网下载的源码手动编译的,当时没有添加ssl参数。只需要nginx重新编译添加ssl模块即可。

// 从nginx官网下载和已安装的同版本的源文件(我的是1.12.2)
# cd ~

// 下载
# wget http://nginx.org/download/nginx-1.12.2.tar.gz

// 解压
# tar -xzvf nginx-1.12.2.tar.gz

// 进入
# cd nginx-1.12.2

// 配置(请根据实际情况、添加或减少模块。--with-http_ssl_module 必须)
# ./configure --prefix=/usr/local/nginx --with-http_ssl_module

// 编译
# make

// 备份之前的文件
# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

// 覆盖替换
# cp objs/nginx /usr/local/nginx/sbin/nginx

// 关闭nginx服务
# /usr/local/nginx/sbin/nginx -s stop

// 启动nginx服务
# /usr/local/nginx/sbin/nginx

// 确认结果(是否包含ssl)
# /usr/local/nginx/sbin/nginx -V

难点4:443端口未开放

描述:certbot提示已经成功部署,但是通过https//域名,仍然无法访问

解答:由于使用了阿里云服务器,开放端口的控制需要在阿里云控制台里面进行设置,启用443端口即可。

难点5:域名未绑定

描述:certbot配置https域名的时候提示域名指向检测失败,例如:kunshan.bbwhm.com 没有找到

解答:在域名服务商管理后台中,将 kunshan.bbwhm.com 指向这台服务器的IP,然后在Centos6中,重新运行sudo ~/certbot-auto --nginx 这样就直接进入最后一步了,跳过了前面很多的步骤。(最好提前就将所有的域名都指向好,测试没有问题的时候,再继续操作)

难点6:续期

描述:证书有效期只有3个月,到期了怎么办?

解答:方案一、可以在到期前1个月,手动执行如下命令即可刷新证书,再次获取3个月的有效期;

# sudo ~/certbot-auto renew --dry-run

方案二、也可以通过定时任务,命令如下:

0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && ~/certbot-auto renew

或者

0 0 * * * /root/certbot-auto renew

最近cerbot-auto升级到了letsencrypt-auto.sh,当前我的服务器定时任务配置为

0 0 * * * /root/letsencrypt-auto.sh renew

附录

certbot在centos6的上配置整个顺利的配置流程输出如下,仅供参考。大体流程如下

[root@CENTOS6 ~]# cd ~
[root@CENTOS6 ~]# wget https://dl.eff.org/certbot-auto
[root@CENTOS6 ~]# sudo ./certbot-auto --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx

Which names would you like to activate HTTPS for?
----------------------------
1: www.bbwhm.com
2: kunshan.bbwhm.com
----------------------------
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): www.bbwhm.com kunshan.bbwhm.com

----------------------------
requested (ref: /etc/letsencrypt/renewal/www.bbwhm.com.conf)

It contains these names: www.bbwhm.com, kunshan.bbwhm.com

You requested these names for the new certificate: www.bbwhm.com,
kunshan.bbwhm.com

Do you want to expand and replace this existing certificate with the new
certificate?
----------------------------
(E)xpand/(C)ancel: E
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for www.bbwhm.com
http-01 challenge for kunshan.bbwhm.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/vhost/www.bbwhm.com.conf
Deploying Certificate to VirtualHost /etc/nginx/vhost/kunshan.bbwhm.com.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
----------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
----------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

----------------------------
Your existing certificate has been successfully renewed, and the new certificate
has been installed.

The new certificate covers the following domains: https://www.bbwhm.com,
https://kunshan.bbwhm.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=www.bbwhm.com
https://www.ssllabs.com/ssltest/analyze.html?d=kunshan.bbwhm.com
----------------------------

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/www.bbwhm.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/www.bbwhm.com/privkey.pem
   Your cert will expire on 2018-08-27. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again with the "certonly" option. To non-interactively renew *all*
   of your certificates, run "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

[root@CENTOS6 ~]#

若本文帮您节省了时间和金钱,请不吝赞赏。若本文有不足之处,请不吝赐教。谢谢。

你可能感兴趣的:([千金软文] 使用LETSENCRYPT可节省4000元/年的HTTPS认证费,申请教程)