zoukankan      html  css  js  c++  java
  • https填坑之旅

    Boss说,我们买了个权威证书,不如做全站式的https吧,让用户打开主页就能看到受信任的绿标。于是我们就开始了填坑之旅。

    【只上主域好不好?】

    不好。。。console会报出一大堆warning因为图片域没有https~浏览器证书符号也不是绿色的~

    【在哪里解密SSL?】

    大网站都是架构复杂的啦~各层负载均衡和动静分离~其中最经典的就是图片和应用分离,这也导致了我们要给两个域配证书。

    想过在NginX配,好处是在一台机上只配一个证书,坏处是多个机器的配置难以管理,所以只好在前面HA层配~

    具体怎么配网上很多教程啦~大概就是配置指向一个文本文件,里面是域名和证书的列表。

    【测试环境怎么办?】

    凉拌呗~用openssl生成几个自签证书就结了~然后自己手动导入到浏览器就可以愉快玩耍了~

    大概会是这样
    http://www.centoscn.com/CentOS/config/2014/0220/2423.html

    有几个要点:

    1.刚开始的私钥是有密码保护的,但是放在服务器中一般是直接使用的,所以要把该私钥转换成无密码保护的。

    2.pem文件等于:crt证书+私钥,密码体系pem、X509之类的各种国际标准就不展开了,总之就是些机构信息、密钥、摘要等。

    3.想偷懒的可以签给*.主域.com,但这样就没法提前在测试环境踩坑填坑了,多证书的情况终归是不同的。

    4.密钥和证书的400权限设置,非生产环境可随意~

    【HSTS好不好?】

    当然好,全站式https就该开启HSTS严格传输安全,直接在浏览器就帮你把http转为https请求,而不用301回来跳转。

    然而如果有个别页面确实还没上https,那就没办法了~

    【烂鬼证书商,在手机浏览器打不开?】

    怎么可能啊,证书供应商是权威机构,怎么会在安卓里没根证书啊?一般排查之后发现,安卓里确实是有证书商的根证书的。再几番查资料之后才发现,要配置ca-bundle证书链,也就是受信任的根证书层层签下来的这个依赖关系~手机浏览器也能愉快玩耍了~

    【你的https安全性如何?】

    举个百度的栗子(也不知道ip对不对,不是a.shifen.com那个~)

    https://www.ssllabs.com/ssltest/analyze.html?d=baidu.com&s=103.235.46.39

    我们网站就类似这样。。。神马贵宾犬漏洞啊心脏流血漏洞啊全都露出来了~读完一大堆英文警告,说什么会被中间人攻击利用之类之类的,最后其实就一句话。。。要升级openssl版本,要提高TSL版本。。。

    可以看看这篇文章 http://www.oschina.net/news/56159/ssl-v3-poodle

    【要不要用SNI?】

    买CDN服务的时候云服务商问要不要非SNI支持啊?SNI是什么呢?Server Name Indication是TSL协议的扩展,用于支持一个IP绑定多个证书。所以非SNI,就是IE7等旧版本浏览器的兼容问题。。。请用现代浏览器。。。

    【客户端报错peer not authenticated】

    浏览器、手机和一般客户端访问似乎是没问题的,然而天杀的某外部系统接入调用就出问题了。。。网上都说是没装证书,然而我们是权威证书啊怎么会~

    然后我写了个简单的httpclient调用,在服务器端启动调用的返回是正常的,在IDE中启动调用就报SSL这个错误。

    几番排查确认,在jdk1.7中运行正常,在jdk1.6中报错,这里用的httpclient是4.1。

    然后两个怀疑,一个是httpclient或jdk中是否有什么bug,另一个是旧版jdk是否用了太旧的SSL协议而服务端不允许。

    这个问题还有待验证和有待解决。欢迎大牛提建议。

    至此,近似全站https就跑起来了~好多概念和操作细节就不一一展开了。

    最后奉上阮大神对SSL/TSL的原理分析,篇幅不长,但是精要地解释了https握手和通信的过程。

    http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html

  • 相关阅读:
    递归程序设计方法
    深入理解 Entity Framework
    面向对象设计的七大原则分析与实践
    JavaScript内置对象与原型继承
    设计模式之创建型(1)-简单工厂
    设计模式之创建型(2)-工厂方法模式
    设计模式之创建型(3)-抽象工厂模式
    设计模式之创建型(4)-建造者模式(Builder)
    设计模式之创建型(5)-单例模式(Singleton)
    设计模式之创建型(6)-原型模式(Prototype)
  • 原文地址:https://www.cnblogs.com/syjkfind/p/5180791.html
Copyright © 2011-2022 走看看