微信小程序已经全面要求使用HTTPS服务了,还有苹果商店也是,所以,实现网站HTTPS已经很有必要。要实现HTTPS就需要一个SSL证书,证书大部分都很贵,不过也有一些免费的证书服务供个人开发者使用。
#SSL证书#
HTTPS连接基于SSL证书,SSL证书一般可以分成以下三大类:
- DV SSL(域名型);
- OV SSL(企业型);
- EV SSL(增强型);
一般每种类型下面又分成不同版本(价格不同),比如企业型证书一般又分成:
- 普通版企业型证书;
- 专业版企业型证书;
- 普通版企业型通配符证书;
- 专业版企业型通配符证书;
一、域名型SSL证书
即证书颁布机构只对域名的所有者进行在线检查,通常是验证域名下某个指定文件的内容,或者验证与域名相关的某条TXT记录。
浏览器普通加锁标记。
二、企业型SSL证书
需要购买者提交组织机构资料和单位授权信等在官方注册的凭证,证书颁发机构在签发SSL证书前不仅仅要检验域名所有权,还必须对这些资料的真实合法性进行多方查验,只有通过验证的才能颁发SSL证书。
浏览器普通加锁标记。
三、增强型SSL证书
验证流程更加具体详细,验证步骤更多,这样一来证书所绑定的网站就更加的可靠、可信。它跟普通SSL证书的区别也是明显的,安全浏览器的地址栏变绿,如果是不受信的SSL证书则拒绝显示,如果是钓鱼网站,地址栏则会变成红色,以警示用户。
#常见CA厂商#
目前常见的证书颁发机构主要有:
Symantec
|
GeoTust
|
TrustAsia
|
Let's Encrypt
| |
品牌定位 | 全球第一 | 全球第二 | 亚太区专业品牌 | 全球新兴品牌 |
价格 | 高级品牌,价位高 | 价格稍低 | 价格稍低,含免费 | 免费 |
证书类型 | 企业型/增强型,单域名、多域名、泛域名证书 | 企业型/增强型,单域名、多域名、泛域名证书 | 域名型,单域名、多域名、泛域名证书 | 域名型,单域名证书 |
客户群体 | 银行、金融、保险、医疗、电子商务等 | 传统行业、企业、教育、公共部门等 | 公共部门、非盈利项目、开源项目等 | 个人网站/博客,非盈利项目、开源项目等 |
而当前国内提供SSL证书服务的云厂商主要有(加粗为免费域名型证书):
支持品牌
|
支持证书种类
|
免费种类
| |
阿里 | Symantec、GeoTrust、CFCA(国内CA) | 21 | 1 |
腾讯 | Symantec、GeoTrust、TrustAsia | 17 | 1 |
百度 | TrustAsia | 1 | 1 |
又拍 | Symantec、GeoTrust、TrustAsia、Let's Encrypt | 22 | 2 |
七牛 | Symantec、GeoTrust、TrustAsia | 15 | 1 |
金山 | Symantec、GeoTrust | 14 | 1 |
#申请免费证书#
下面以申请阿里云免费证书为例,不得不说,阿里云的免费证书申请简直是跟客户在玩捉迷藏。
1)首先,进入默认证书购买页面,产品-安全-CA证书。
2)点击选择“Symantec”。
3)回到第一行,选择增强型OV SSL。
这个时候才看到“免费型DV SSL”的标签,点击进去申请即可。
顺带一提,由于免费DV SSL证书只能对应一个域名一个,所以可以一次性申请多几个。(笔者就一次性申请了10个)
#安装证书#
申请证书通过后,需要把证书安装到服务器端。申请的过程中需要域名映射验证,根据阿里云提示做即可,这里不再赘述。
证书申请通过后,下载证书,以Nginx为例,有两个文件,分别是.pem证书文件和.key证书私钥文件。
1)在nginx下创建cert目录,并且把证书文件和私钥文件上传到该目录下。
# cd /usr/local/nginx # mkdir cert # chown www:www cert # ls -l cert/ total 8 -rw------- 1 www www 1678 Mar 31 16:08 abc.com.key -rw------- 1 www www 3678 Mar 31 16:08 abc.com.pem
2)配置nginx.conf文件。
# vim /usr/local/nginx/conf/nginx.conf server { listen 80; server_name abc.com www.abc.com; rewrite ^/(.*)$ https://abc.com/$1 permanent; } server { listen 443; server_name abc.com www.abc.com; index index.html; root /data/www/www.abc.com; ssl on; ssl_certificate ../cert/abc.pem; ssl_certificate_key ../cert/abc.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; }
3)最后重启nginx即可。