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
选择你要解析的域名,点击解析
添加一条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为例:
获取证书 Nginx文件夹内获得SSL证书文件 1_www.domain.com_bundle.crt 和私钥文件 2_www.domain.com.key,
1_www.domain.com_bundle.crt 文件包括两段证书代码 “—–BEGIN CERTIFICATE—–”和“—–END CERTIFICATE—–”,
2_www.domain.com.key 文件包括一段私钥代码“—–BEGIN RSA PRIVATE KEY—–”和“—–END RSA PRIVATE KEY—–”。证书安装 将域名 www.domain.com 的证书文件1_www.domain.com_bundle.crt 、私钥文件2_www.domain.com.key保存到同一个目录,例如/usr/local/nginx/conf目录下。
更新Nginx根目录下 conf/nginx.conf 文件如下:
1 | server { |
注意:http默认访问的是80端口。https访问的是443端口。
对于用户不知道网站可以进行https访问的情况下,让服务器自动把http的请求重定向到https。
在服务器这边的话配置的话,可以在页面里加js脚本,也可以在后端程序里写重定向,当然也可以在web服务器来实现跳转。
Nginx是支持rewrite的(只要在编译的时候没有去掉pcre)
在rewrite ^(.*) https://$server_name$1
这样就可以实现80进来的请求,重定向为https了。
这里服务器是Nginx,所以以Nginx为例:
获取证书 Nginx文件夹内获得SSL证书文件 1_www.domain.com_bundle.crt 和私钥文件 2_www.domain.com.key,
1_www.domain.com_bundle.crt 文件包括两段证书代码 “—–BEGIN CERTIFICATE—–”和“—–END CERTIFICATE—–”,
2_www.domain.com.key 文件包括一段私钥代码“—–BEGIN RSA PRIVATE KEY—–”和“—–END RSA PRIVATE KEY—–”。证书安装 将域名 www.domain.com 的证书文件1_www.domain.com_bundle.crt 、私钥文件2_www.domain.com.key保存到同一个目录,例如/usr/local/nginx/conf目录下。
更新Nginx根目录下 conf/nginx.conf 文件如下:
1 | server { |
注意:http默认访问的是80端口。https访问的是443端口。
对于用户不知道网站可以进行https访问的情况下,让服务器自动把http的请求重定向到https。
在服务器这边的话配置的话,可以在页面里加js脚本,也可以在后端程序里写重定向,当然也可以在web服务器来实现跳转。
Nginx是支持rewrite的(只要在编译的时候没有去掉pcre)
在rewrite ^(.*) https://$server_name$1
这样就可以实现80进来的请求,重定向为https了。
负载均衡配置https
- 登录到阿里云后台,选择负载均衡:
- 可以创建新的负载均衡,或者修改之前的负载均衡。选择负载均衡,点击服务器,添加相关ECS。
- 添加监听。点击添加监听,前端端口选择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 |