申请免费ssl证书
目前网站和业务系统要求使用https协议的场景越来越多了,因此对ssl证书的申请变成了常见的运维工作。本文介绍三种免费申请ssl证书的办法:
一、阿里云服务器申请诺顿免费ssl证书
1、购买CA证书
https://common-buy.aliyun.com/?commodityCode=cas#/buy 或者从阿里云首页安全(云盾)找到CA证书服务,选择证书类型为免费型DV SSL,其他参数默认,界面右侧显示¥0.00,点击立即购买
去支付
确认支付
界面显示“恭喜,支付成功”
点击证书控制台,进入云盾控制台,可看到刚刚付款成功(0元)的Symantec 免费版 SSL
点击申请按钮,页面右侧会显示证书申请界面
填写证书绑定域名(该域名必须是当前登录的阿里云账号所属主体所持有)、申请人姓名、手机号、邮箱,点击下一步,显示验证信息,此时阿里云会将页面显示的域名自动解析到所填域名下,点击验证按钮,会提示验证成功,再点击右下角的提交审核按钮,提示“已经成功提交到CA公司,请您保持电话畅通,并及时查阅邮箱中来自CA公司的电子邮件。”,证书状态会变为审核中,耐心等待审核通过,审核通过后的状态为已签发,然后将证书下载下来,上传到服务器,修改nginx的配置ssl即可。
如果因为申请证书数量超过阿里云给的限制数则会审核失败,然后只能尝试用本文介绍的其他方法申请。
4、nginx配置ssl
证书申请通过后,将证书下载下来,配置到nginx中
-
server {
-
listen 443;
-
server_name localhost;
-
ssl on;
-
ssl_certificate cert/214013388060521.pem;
-
ssl_certificate_key cert/214013388060521.key;
-
location / {
-
root html;
-
index index.html index.htm;
-
}
-
}
重启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证书
输入邮箱,点击“点击创建”按钮
页面会弹出一个提示框(注意:请提前打开KeyManager工具)
此时会跳转到KeyManager界面,输入KeyManager的主密码,然后KeyManager会提示“CSR生成成功,请返回浏览器继续操作”
回到https://freessl.cn 页面
点击继续按钮,页面显示DNS验证的内容
这时需要添加域名解析,记录类型为TXT,主机记录为上面显示的内容如_dnsauth.user,记录值为上面显示的内容,按实际内容填写。等待域名解析成功后点击上面的“点击验证”按钮。(如果验证失败了不用继续点击,需要十分钟后再点击验证)。验证通过后会显示证书信息
点击保存到KeyManager按钮,打开KeyManager,输入KeyManager的主密码,可看到证书的详情
点击导出证书可下载证书,然后上传到服务器,再配置nginx后重启即可。
总结
本文介绍了三个渠道可以免费申请域名,那么问题来了,是不是可以随意申请不属于我们的域名对应的ssl证书?答案是不可以的,那三个渠道都有控制域名和证书不匹配乱申请的措施:
1、阿里云申请诺顿ssl证书
在显示验证信息页,阿里云会将页面显示的域名及TXT记录和记录值自动解析到所填域名下,如果阿里自动解析失败,点击验证按钮,会验证失败。当然也可以手动解析后再点击验证。
2、申请Let's Encrypt证书
Let's Encrypt证书是通过命令自动申请,申请过程包含了域名的验证,即验证申请的域名是否指向的是当前正在执行申请命令的服务器,如果不是则会申请失败
3、https://freessl.cn 结合KeyManager申请TrustAsia证书
与阿里云申请诺顿ssl证书类似,也包含了验证该域名下是否添加了要求的TXT记录和记录值,如果没有正确添加要求的域名解析,则证书申请不会通过。