1.证书申请
免费证书:
国外免费:startssl.com
国内:https://www.wosign.com/ 有免费的也有收费的
收费:http://www.chinaitrust.com/ 等等
具体流程请自行google,如果域名多的话最好申请 全站下的证书,当域名就申请一个就可以了。
2.单机ecs配置
单机ecs和普通机器一样,直接在机器上配置就可以了,把秘钥文件上传到服务器,配置对应的server端就可以。
server {
listen 443;
server_name example.com;
ssl on;
ssl_certificate key_pub.crt; #(证书公钥)
ssl_certificate_key key_sec.key; #(证书私钥)
}
另外如果希望原来的http直接跳转到https需要增加一个配置
server {
listen 80;
server_name example.com;
rewrite ^(.*)$ https://$host$1 permanent;
}
也可以直接在php代码里面通过协议或者端口做跳转:
function inSecure()
{
if(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off'){
return true;
}else{
return false;
}
}
if(!inSecure())
{
header("location:https://example.com");
exit();
}
3.slb下配置证书和设置
a.在slb中新建端口监听,协议HTTPS 监听443端口
b.后端协议HTTP,可以设置监听端口81,需要在nginx中开启81接口
server
{
listen 81;
server_name www.example.com;
index index.html index.htm index.php;
root /data/web/example.com;
............
}
c.选择新建证书把证书加到里面去,这样配置就成功了
另外健康检查的检查路径最好设置别设置成首页 因为请求的频率还是比较高的,对首页会有一些压力
4.资源兼容(图片,样式等)
由于https网站加载http资源会有安全提示,所以最好统一成一致的资源调用。
页面调用的资源分为两种,一种是本站内的资源,另外一种是外站的资源,外站的资源一定要实现确定好是否支持 https
如果同时支持http和https两种协议的话调用资源可以写成 把对应的协议去掉。
例如: http(s)://www.xxx.com/aaa.jpg 可以写成 //www.xxx.com/aaa.jpg 这样就会随着网站的协议自动切换。
如果外站的资源是http可以通过iframe方式嵌入
可以参考地址:
https://segmentfault.com/a/1190000004200361?utm_source=Weibo
5.charles下监测https资源
问题来了,在测试的时候尤其在移动设备上
1. 电脑端先安装证书
2.配置域名设置charles 在 Proxy-->SSL Proxy Setting-->add
加入需要监测的域名和443端口
3.ios上在safari 下打开
https://www.charlesproxy.com/assets/legacy-ssl/charles.crt
直接安装即可,详细可以在
http://www.tuicool.com/articles/JfEZr23
查看