申请免费ssl证书

目前网站和业务系统要求使用https协议的场景越来越多了,因此对ssl证书的申请变成了常见的运维工作。本文介绍三种免费申请ssl证书的办法:

一、阿里云服务器申请诺顿免费ssl证书

1、购买CA证书
https://common-buy.aliyun.com/?commodityCode=cas#/buy   或者从阿里云首页安全(云盾)找到CA证书服务,选择证书类型为免费型DV SSL,其他参数默认,界面右侧显示¥0.00,点击立即购买

申请免费ssl证书

去支付

申请免费ssl证书

确认支付

申请免费ssl证书

界面显示“恭喜,支付成功”

申请免费ssl证书

点击证书控制台,进入云盾控制台,可看到刚刚付款成功(0元)的Symantec 免费版 SSL

申请免费ssl证书

点击申请按钮,页面右侧会显示证书申请界面

申请免费ssl证书

填写证书绑定域名(该域名必须是当前登录的阿里云账号所属主体所持有)、申请人姓名、手机号、邮箱,点击下一步,显示验证信息,此时阿里云会将页面显示的域名自动解析到所填域名下,点击验证按钮,会提示验证成功,再点击右下角的提交审核按钮,提示“已经成功提交到CA公司,请您保持电话畅通,并及时查阅邮箱中来自CA公司的电子邮件。”,证书状态会变为审核中,耐心等待审核通过,审核通过后的状态为已签发,然后将证书下载下来,上传到服务器,修改nginx的配置ssl即可。

如果因为申请证书数量超过阿里云给的限制数则会审核失败,然后只能尝试用本文介绍的其他方法申请。
4、nginx配置ssl

证书申请通过后,将证书下载下来,配置到nginx中

 
  1. server {

  2.     listen 443;

  3.     server_name localhost;

  4.     ssl on;

  5.     ssl_certificate cert/214013388060521.pem;

  6.     ssl_certificate_key cert/214013388060521.key;

  7.     location / {

  8.         root html;

  9.         index index.html index.htm;

  10.     }

  11. }

重启nginx,ssl证书即可生效

二、申请Let's Encrypt免费ssl证书

打开网 https://certbot.eff.org/ ,按照命令指示安装即可,操作步骤如下:

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
杀死nginx:nginx -s stop  或者用kill命令
申请证书的语法:  ./certbot-auto certonly --standalone --email [email protected] -d www.test.com
编辑nginx的配置文件,修改下面两行内容即可:

ssl_certificate          /etc/letsencrypt/live/www.test.com/fullchain.pem
ssl_certificate_key  /etc/letsencrypt/live/www.test.com/privkey.pem

重启nginx,ssl证书即可生效。

可能遇到的问题:

1、Couldn't download https://raw.githubusercontent.com/certbot/certbot/v1.3.0/letsencrypt-auto-source/letsencrypt-auto. <urlopen error [Errno 111] Connection refused>

解决办法:加上参数  --no-self-upgrade  ,不自动更新

2、certbot-auto是通过python脚本去申请证书的,如果服务器上python的版本默认是2.6.6的,那么需要先将python2.6.6 升级到python2.7.14,可以参考文章 https://blog.csdn.net/see_you_see_me/article/details/78550977
安装virtualenv No module named virtualenv
原因:
升级过系统的python2.6到2.7版本
yum install -y python-virtualenv
导致安装到2.6版本库中引起使用时报找不到库文件
解决:
拷贝python2.6目录lib下的virtualenv* 到2.7版本的lib下
cp -rf /usr/lib/python2.6/site-packages/virtualenv* /usr/local/python2.7/lib/python2.7/site-packages/

三、https://freessl.cn结合KeyManager申请TrustAsia证书

访问https://keymanager.org/下载KeyManager并安装,然后启动KeyManager,首次使用会要求输入密码、确认密码和密码提示。需要记住密码,后续使用KeyManager会让输入主密码即是这里输入的密码。

访问https://freessl.cn/ ,填写申请证书的域名,然后点击创建免费的SSL证书

申请免费ssl证书

输入邮箱,点击“点击创建”按钮

申请免费ssl证书

页面会弹出一个提示框(注意:请提前打开KeyManager工具)

申请免费ssl证书

此时会跳转到KeyManager界面,输入KeyManager的主密码,然后KeyManager会提示“CSR生成成功,请返回浏览器继续操作”

 

申请免费ssl证书

回到https://freessl.cn 页面

申请免费ssl证书

点击继续按钮,页面显示DNS验证的内容

申请免费ssl证书

这时需要添加域名解析,记录类型为TXT,主机记录为上面显示的内容如_dnsauth.user,记录值为上面显示的内容,按实际内容填写。等待域名解析成功后点击上面的“点击验证”按钮。(如果验证失败了不用继续点击,需要十分钟后再点击验证)。验证通过后会显示证书信息

申请免费ssl证书

点击保存到KeyManager按钮,打开KeyManager,输入KeyManager的主密码,可看到证书的详情

申请免费ssl证书

点击导出证书可下载证书,然后上传到服务器,再配置nginx后重启即可。

总结

本文介绍了三个渠道可以免费申请域名,那么问题来了,是不是可以随意申请不属于我们的域名对应的ssl证书?答案是不可以的,那三个渠道都有控制域名和证书不匹配乱申请的措施:

1、阿里云申请诺顿ssl证书

在显示验证信息页,阿里云会将页面显示的域名及TXT记录和记录值自动解析到所填域名下,如果阿里自动解析失败,点击验证按钮,会验证失败。当然也可以手动解析后再点击验证。

2、申请Let's Encrypt证书

Let's Encrypt证书是通过命令自动申请,申请过程包含了域名的验证,即验证申请的域名是否指向的是当前正在执行申请命令的服务器,如果不是则会申请失败

3、https://freessl.cn 结合KeyManager申请TrustAsia证书

与阿里云申请诺顿ssl证书类似,也包含了验证该域名下是否添加了要求的TXT记录和记录值,如果没有正确添加要求的域名解析,则证书申请不会通过。