申请免费SSL证书
1. 前言
SSL证书(SSL Certificates)可以说是现在一个网站的标配,如果没有用SSL证书,浏览器上会显示不安全,导致一部分用户以为网站有问题。另外在微信小程序和iOS APP上,提供的API必须要用HTTS协议,否则不允许上架,所以掌握好SSL证书的配置是一个后端开发必备的技能。
在阿里云上,提供了每年可以申请一次的免费SSL证书,对于一些个人站点或者小公司的网站来说,确实是一个不错的选择。
2. 免费的SSL证书和付费的有什么区别?
收费版的SSL证书和免费版的证书有什么区别?首先说下他们的相同点。
- 都是由信任的CA机构签发的。
- 都是有一定的加密算法,能保证数据安全传输的。
首先我们要知道,任何一个人,都可以给自己甚至别人签发SSL证书。但是这个世界上只有那么几家公司(比如Digicert(原Symantec,已更名)、Rapid、GlobalSign、Wosign、GeoTrust以及TrustAsia,甚至还有一些国产公司例如vTrus)被权威机构所认可,他们的CA根证书被集成到操作系统中了,只有CA根证书被集成到操作系统中,这个CA根证书下的子证书才能被浏览器认为是安全的。
收费版的SSL证书和免费版的证书有什么区别,主要体现在以下几点。
- 品牌不一样: 像DigiCert这样的公司,是全世界最被认可的公司,他们签发的证书,可激活互联网最受信任的诺顿安全签章,价格肯定会有所差别了。
- 身份审核不一样: 免费的CA证书只会验证域名信息,由系统自动签发完成,签发速度几乎是立即完成。付费的CA证书会对验证网站的真实性做严格的验证,可以这样说,有付费SSL证书签发的网站,几乎是不可能有问题的,因此可信度比较高,但是签发周期也比较长,一般要3-15个工作日。
- 安全保险不一样: 付费的CA证书大多都有保险,最高可享受175万美元的保额,也就是说你的网站在使用SSL证书通信期间,被黑客攻击了,那么是可以享受保险的。但是免费的CA证书是没有的。
- 签发的域名不一样: 付费的CA证书一般都可以签发好几个域名,但是免费的CA证书只能签发一个域名。
当然还有更多其他方面的不同,比如付费的CA证书加密算法方面会做得更加优秀等。但是如果只是一个个人站点,或者是小公司的网站,我们可以先用免费的CA证书来过渡。毕竟买一个付费的CA证书,最贵的一年也要1W多,少的也要1000多。
3. 颁发免费的SSL证书的机构
提供免费SSL证书的机构有如下一些, 比如Let’s Encrypt, Cloudflare, Bluehost, SiteGround这些机构都提供免费的SSL证书, 国内的有阿里云, sslforfree.cn等机构.
值得注意的是这些机构提供的免费SSL证书都有一些限制, 有的在适用时间上, 有的在适用的domain的数量, 每一家申请需要的资料, 批准时间上都有所不同, 还有就是被认可的范围不同, 有些证书能被90%的浏览器或操作系统认可, 有些认可度较低, 需要详细了解后再从最适合自己的机构中申请.
以下以阿里云为例, 讲解如何获取免费的SSL证书.
4. 如何获取阿里云免费SSL证书
4.1. 选择免费SSL证书
进入到阿里云官网后,点击点击左侧菜单栏 => 产品与服务 => => 数据安全 => 数字证书管理服务(SSL证书)
打开 数字证书管理服务(SSL证书) 页面后, 在左侧菜单栏选择 SSL证书 => 选择免费证书tab
- 产品栏: 选择免费证书
- 购买数量: 选择20, 这个20代表可以给20个不同的域名签发证书
- 其它服务: 选择不需要
- 阅读并勾选协议
- 然后右下角会显示价格为0元,点击立即购买即可。
购买完成后创建证书案例上会显示”创建证书20/20”表示可以创建20个单域名证书.
4.2. 申请证书
购买完证书后,还需要在控制台=>证书管理服务->SSL证书, 点击创建证书,系统会自动创建一条DigiCert 免费版 SSL, 初始处于待申请状态.
点击证书申请按钮进入证书申请页面.
证书绑定域名: 输入你的完整域名 (请输入完整的单个域名,域名格式例如: ‘www.xxx.com',IP证书仅Globalsign的OV单域名证书支持)
域名验证方式: 选择自动DNS方式
联系人: 创建并选择联系人
所在地: 输入所在地
密钥算法: RSA
CSR生成方式: 选择合适的CSR生成方式
信息填写无误后点击申请. 申请成功后联系人会通过电话或邮箱收到通知.
4.3. DNS验证
- 登录域名管理控制台
如果域名在阿里云,请登录阿里云DNS控制台操作。如果您使用其他厂商的域名,请登录对应的域名管理控制台
在域名控制台添加DNS解析记录
请按以下提示,在您的域名控制台添加DNS解析配置
添加
- 记录类型为txt
- 主机记录为_dnsauth的域名解析记录, 如果域名是在阿里云购买的域名, 并且管理用户一致, 系统会自动帮助添加解析记录. 如果是其它情形, 请按提示指引添加域名解析配置.
接着点击下一步,再点击一个DNS验证,
然后就进入审核阶段。
因为是免费证书,整个签发过程都是由系统自动完成,因此在证书列表页面重新刷新一下页面,就能看到已签发的提示了。签发后即可下载证书使用了. 针对不同类型的服务器可以产品SSL证书安装章节进行配置.
4.4. SSL证书安装
SSL证书申请下来后,还要配置到服务器上才能使用。不同的web服务器使用方法都有不同,详细的文档可以查看这篇文章在服务器安装SSL证书, 里面总结了现在市面上几乎所有web服务器安装SSL证书的教程。这里重点讲一下在nginx中如何安装证书
4.4.1 nginx中如何安装SSL证书
步骤一:下载SSL证书
登录数字证书管理服务控制台。
在左侧导航栏,单击SSL 证书。
在SSL 证书页面,定位到目标证书,在操作列,单击下载。
在服务器类型为Nginx的操作列,单击下载。
解压缩已下载的SSL证书压缩包。
根据您在提交证书申请时选择的CSR生成方式,解压缩获得的文件不同,具体如下表所示
CSR生成方式 证书压缩包包含的文件 系统生成或选择已有的CSR 证书文件(PEM格式):默认以证书ID_证书绑定域名命名。PEM格式的证书文件是采用Base64编码的文本文件。
私钥文件(KEY格式):证书文件的密钥,默认以证书绑定域名命名。手动填写 如果您填写的是通过数字证书管理服务控制台创建的CSR,下载后包含的证书文件与系统生成的一致。
如果您填写的不是通过数字证书管理服务控制台创建的CSR,下载后只包括证书文件(PEM格式),不包含证书密码或私钥文件。您可以通过证书工具,将证书文件和您持有的证书密码或私钥文件转换成所需格式。转换证书格式的具体操作,请参见证书格式转换。
步骤二:在Nginx服务器安装证书
执行以下命令,在Nginx的conf目录下创建一个用于存放证书的目录。
1
2cd /usr/local/nginx/conf #进入Nginx默认配置文件目录。该目录为手动编译安装Nginx时的默认目录,如果您修改过默认安装目录或使用其他方式安装,请根据实际配置调整。
mkdir cert #创建证书目录,命名为cert。将证书文件和私钥文件上传到Nginx服务器的证书目录(/usr/local/nginx/conf/cert)
编辑Nginx配置文件nginx.conf,修改与证书相关的配置。
1
vim /usr/local/nginx/conf/nginx.conf
参考如下示例进行配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30server {
#HTTPS的默认访问端口443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
listen 443 ssl;
#填写证书绑定的域名
server_name <yourdomain>;
#填写证书文件名称
ssl_certificate cert/<cert-file-name>.pem;
#填写证书私钥文件名称
ssl_certificate_key cert/<cert-file-name>.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
#自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
#TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
#表示优先使用服务端加密套件。默认开启
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}