0%

HTTPS配置

HTTPS配置文档

配置前需要了解的内容

名词解释

https
超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,也被称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种网络安全传输协议。在计算机网络上,HTTPS经由超文本传输协议进行通信,但利用SSL/TLS来对数据包进行加密。HTTPS开发的主要目的,是提供对网络服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在1994年首次提出,随后扩展到互联网上。(摘自维基百科)

SSL证书
SSL(安全套接层,Secure Sockets Layer)是一种安全协议,目的是为互联网通信,提供安全及数据完整性保障。SSL证书遵循SSL协议,可安装在服务器上,实现数据传输加密。SSL证书实际上就是CA机构对用户公钥的认证,内容包括电子签证机关的信息、公钥用户信息、公钥、权威机构的签字和有效期等。

CA机构:CA(数字证书认证,Certificate Authority)机构,是承担公钥合法性检验的第三方权威机构,负责指定政策、步骤来验证用户的身份,并对SSL证书进行签名,确保证书持有者的身份和公钥的所有权。CA机构为每个使用公开密钥的用户发放一个SSL证书,SSL证书的作用是证明证书中列出的个人/企业合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书。

https的优势

  • 防流量劫持 — 全站Https是根治运营商、中间人流量劫持的解决方案,不仅可以杜绝网页中被插入的小广告,更可以保护用户隐私安全。
  • 提升搜索排名—采用Https可以帮忙搜索排名的提升,提高站点的可信度和品牌形象。
  • 杜绝钓鱼网站Https地址栏绿色图标可以帮助用户识别出钓鱼网站,保障用户和企业的利益不受损害,增强用户信任。

申请证书

目前腾讯云、阿里云、七牛都可以申请一年免费的赛门铁克证书。
这里用腾讯云做例子。申请一年免费的ssl证书。在同一平台下去申请证书,可以自动添加DNS解析。这里是在腾讯云申请的免费证书,ECS在阿里云上,所以需要手动添加DNS解析。

申请证书官方文档

要注意的地方:

  • 域名身份认证是手动添加DNS解析。因为我的服务器实在阿里云,所以选择手动添加DNS解析。

手动添加DNS解析参考

DNS解析官方文档

进入阿里云后台,选择云解析DNS

选择你要解析的域名,点击解析

添加一条CNAME解析

记录类型为CNAME,主机记录和记录值查看官方文档。在生成ssl证书时会生成。

  • 如果绑定的域名是www.amai8.com(一级域名)
    填写CNAME解析的时候DNS记录如下 s8s1kflls83vbfgsoakakqnzq9bgy20c.amai8.com –CName–> s20161208165641.amai8.com
  • 如果绑定的域名是api.amai8.com(二级域名)
    填写的CNAME解析的DNS记录如下

s8s1kflls83vbfgsoakakqnz9bgy20ca.api.amai8.com –CName–> s20161208165641.api.amai8.com

添加CNAME解析时,主机记录值要去掉你的域名:主机记录值为上面加粗字体。注意api.amai8.com不要丢掉后面的.api。不然添加域名解析会不正确。证书不能颁发,只有DNS添加成功,才能颁发证书。

添加解析成功后,过一段时间,证书就可以申请通过。
如果长时间没有证书都没有颁发,去检查添加的CNAME是否正确。

阿里云添加解析时。首次添加解析,生效很快,如果修改解析的话生效时间会慢很多。解析生效后证书才会颁发。

证书申请成功后,可以在腾讯云后台查看证书详情,点击下载按钮下载证书。

下载后解压得到三个文件夹:分别是Apache、IIS、Nginx 服务器的证书文件

ECS配置证书(没有负载均衡情况下)

这里服务器是Nginx,所以以Nginx为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
server {
listen 80;
server_name www.domain.com; #证书绑定的域名
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443;
server_name www.domain.com; #填写绑定证书的域名
ssl on;
ssl_certificate 1_www.domain.com_bundle.crt; #证书地址 在当前目录直接写名字就可以也可以写全路径
ssl_certificate_key 2_www.domain.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
root html; #站点目录
index index.html index.htm;
}
}

注意:http默认访问的是80端口。https访问的是443端口。
对于用户不知道网站可以进行https访问的情况下,让服务器自动把http的请求重定向到https。
在服务器这边的话配置的话,可以在页面里加js脚本,也可以在后端程序里写重定向,当然也可以在web服务器来实现跳转。

Nginx是支持rewrite的(只要在编译的时候没有去掉pcre)
rewrite ^(.*) https://$server_name$1
这样就可以实现80进来的请求,重定向为https了。

证书安装官方文档

这里服务器是Nginx,所以以Nginx为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
server {
listen 80;
server_name www.domain.com; #证书绑定的域名
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443;
server_name www.domain.com; #填写绑定证书的域名
ssl on;
ssl_certificate 1_www.domain.com_bundle.crt; #证书地址 在当前目录直接写名字就可以也可以写全路径
ssl_certificate_key 2_www.domain.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
root html; #站点目录
index index.html index.htm;
}
}

注意:http默认访问的是80端口。https访问的是443端口。
对于用户不知道网站可以进行https访问的情况下,让服务器自动把http的请求重定向到https。
在服务器这边的话配置的话,可以在页面里加js脚本,也可以在后端程序里写重定向,当然也可以在web服务器来实现跳转。

Nginx是支持rewrite的(只要在编译的时候没有去掉pcre)
rewrite ^(.*) https://$server_name$1
这样就可以实现80进来的请求,重定向为https了。

证书安装官方文档

负载均衡配置https

  1. 登录到阿里云后台,选择负载均衡:
  2. 可以创建新的负载均衡,或者修改之前的负载均衡。选择负载均衡,点击服务器,添加相关ECS。

  3. 添加监听。点击添加监听,前端端口选择HTTPS:443,后端端口选择你要监听的ECS上的端口,这里是80端口。然后选择服务器证书,选择新建证书,填写证书名称,添加证书内容,私钥内容。然后再添加一个监听,监听80端口,前端端口选择TCP或者HTTP:80,后端端口:80。确认后添加监听。

这里的证书内容是你的申请的证书中的内容,格式一定为pem编码。下载下来的证书是.crt文件。用记事本打开,复制其中的内容,这里需要注意,文件中包含两个证书内容,前面是域名证书后面是中级CA证书,复制的时候要去掉中间的空行。
私钥内容也一定要为pem编码,用记事本打开.key文件,复制里面的内容到私钥一栏中。填好检查后,点击新建。回到上一步选择你刚新建的证书。点击下一步,点击确认。

添加监听

新建证书

添加好80端口(http)、443端口(https)的监听。会显示如下,如果显示异常检查监听是否正确。

苹果ATS测试命令

1
nscurl --ats-diagnostics --verbose  https://domin.com