一、上马HTTPS的原因:

①、苹果App Store强制其平台上的app均要使用HTTPS

②、网站经常被劫持,用户和领导希望使用HTTPS

③、跟随HTTPS的大趋势

二、应用上马HTTPS之部门工作:

①、运维:接入层部署支持HTTPS及后期上线配合

②、开发&QA:页面元素加载,要跟随访问协议(src=”//www.perofu.com/test.jpg”)等等及测试

三、接入层支持HTTPS时机之重要性:

①、有一定规模应用的企业(即大量未部署HTTPS的应用及将要新增的应用),无论是否要上HTTPS。新应用的,请先在接入层(Nginx、Tenginx)的服务上,配置上支持HTTPS

【吐血经历:就为了App Store上HTTPS,每个二级域名的接入层Nginx(电信联通各2台)都进行了升级,工作虽然不繁琐,但是量大,就很恶心了】

②、初创企业,一开始就配置支持HTTPS,并形成安装范本,这样大家都好过

【接入层服务支持HTTPS,应该从现在开始】

【运维和开发,最怕的就是历史遗留问题】

四、SSL证书:

①、购买主流厂商的SSL证书:

简单点的,查看下国内一些公司网站的证书厂商,根据价钱,进行选择

淘宝:GlobalSign nv-sa

360:WoSign

②、申请免费的SSL证书:阿里云

五、前期https准备:

①、Nginx和openssl的版本选择,并对https进行测试,nginx的https配置和优化的最佳配置【困难】

②、对比http和https的性能情况(基调任务监控)

六、接入层支持HTTPS:

①、安装命令:

Nginx安装参数,仅针对HTTPS的,依据情况添加

①、安装openssl:

tar -axf openssl-1.0.2e.tar.gz && cd openssl-1.0.2e

./config --prefix=/usr enable-shared

make

make install

②、安装nginx(Tengine/2.1.2):

./configure --prefix=/data/PRG/tengine_perofu-www --with-pcre=../pcre-8.32/ --add-module=../ngx_cache_purge-2.0 --with-http_concat_module --with-http_spdy_module --with-http_v2_module

make

make install

②、SSL配置:

listen       443 ssl http2 spdy;

#hsts enable

#add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

#ssl                         on;

ssl_certificate /data/config/cert/fu_all.crt;

ssl_certificate_key /data/config/cert/fu_all.key;

#ssl_dhparam    new_key/fu_dh2048.pem;

# self define

ssl_prefer_server_ciphers   on;

ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;

ssl_protocols            SSLv3 TLSv1 TLSv1.1 TLSv1.2;

ssl_session_cache           shared:SSL:20m;

ssl_session_timeout         10m;

ssl_session_tickets on;

ssl_session_ticket_key /data/config/cert/fu_ticket.key;

#oscp stapling

#ssl_stapling                on;

#ssl_stapling_verify         on;

#ssl_stapling_file /data/config/cert/fu_stapling.ocsp;

#ssl_trusted_certificate /data/config/cert/fu_trust.crt;

spdy_headers_comp           9;

③、开通443端口:

如做了NAT的,需要开放对应的端口,像阿里、腾讯云的都有这些配置

④、检查HTTPS问题:

使用下面的网站进行检查SSL配置:

https://www.ssllabs.com/ssltest/index.html

七、正式上线HTTPS:

这里一般会出现两种情况:

①、二级域名全站上线HTTPS:

1)、修改nginx配置(先备份文件),包括:

(1)、http全部跳转https(return效率高于rewrite):

return 301 https://www.perofu.com$request_uri;

(2)、对已有的rewrite规则,且是permanent的,将http修改为https:

sed -n '/permanent/ s#http:#https:#gp' nginx.conf

sed -i '/permanent/ s#http:#https:#g' nginx.conf

②、部分规则不使用HTTPS(性能有所降低,且规则越多,性能越低):

例如:

1)、后台没有完全正常HTTPS,强行跳转,会出现格式问题

2)、内网ip调用,不需要使用HTTPS

3)、只针对GET请求,进行跳转

set $flag 0;

if ($scheme !~ "https"){ set $flag "${flag}1";}

if ($request_method = "GET" ){ set $flag "${flag}2";}

if ($remote_addr !~ 192.168.*|8.8.8.8){ set $flag "${flag}3";}

if ($request_uri !~ ^(/admin/|/js/|/css/) ){ set $flag "${flag}4";}

if ($flag = "01234") {rewrite (.*) https://$host$1 permanent;}

八、https的CDN加速:

建议厂商:保持用户请求方式,否则会导致301跳转死循环。

https://my.oschina.net/fufangchun/blog/844495

最新文章

  1. GRANT/SELECT View时的遭遇ORA-01720和ORA-01031错误
  2. OC 单元测试学习笔记
  3. 好推二维码如何通过应用宝微下载支持微信自动打开APP下载?
  4. centos的网路配置文件的位置
  5. Oracle监听启动失败问题
  6. ViewPager撤消左右滑动切换功能
  7. linux btp 服务器 端及客户端配置
  8. windows系统port监听
  9. linux的date的几个例子
  10. SQL瓶颈分析,以及适应最佳执行计划的探讨
  11. day 06 字符串和列表的方法
  12. Mycat水平拆分之十种分片规则
  13. C# 监测每个方法的执行次数和占用时间(测试1)
  14. Git 本地操作
  15. Myeclipse快键键
  16. c# 进程调用exe
  17. JAVA发送http GET/POST请求的两种方式+JAVA http 请求手动配置代理
  18. Ubuntu 配置静态ip的方法
  19. jdk8新特性
  20. 十. 图形界面(GUI)设计3.标签、按钮和按钮事件

热门文章

  1. poj1995 Raising Modulo Numbers【高速幂】
  2. 【b302】侦探推理
  3. vue webpack添加jQuery
  4. Formview单文档或对话框项目接受不到按键消息的解决办法
  5. sklearn、theano、TensorFlow 以及 theras 的理解
  6. 转义及编码(\u, \x)
  7. python 教程 第六章、 模块
  8. 微信小程序之购物车
  9. 辛星与您彻底解决CSS浮子(下一个)
  10. Cocos2d-x 脚本语言Lua介绍