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
https填坑之旅的更多相关文章
- React Native填坑之旅--布局篇
代码在这里: https://github.com/future-challenger/petshop/tree/master/client/petshop/src/controller 回头看看RN ...
- stm32填坑之旅 - stm32f103c8t6点亮板载贴片蓝色LED
转载请注明:https://www.cnblogs.com/rockyf/p/11691622.html 开篇 开篇一定要精彩,不然路人不理睬!下述是笔者作为arm小白的填坑之旅 没错,这个之前一直从 ...
- bootstrap-table填坑之旅<一>认识bootstrap-table
应公司需求,改版公司ERP的数据显示样式.由于前期开发的样式是bootstrap,所以选bootstrap-table理所当然(也是因为看了bootstrap-table官网的example功能强大, ...
- React Native填坑之旅--与Native通信之iOS篇
终于开始新一篇的填坑之旅了.RN厉害的一个地方就是RN可以和Native组件通信.这个Native组件包括native的库和自定义视图,我们今天主要设计的内容是native库方面的只是.自定义视图的使 ...
- React Native填坑之旅--Flow篇(番外)
flow不是React Native必会的技能,但是作为正式的产品开发优势很有必要掌握的技能之一.所以,算是RN填坑之旅系列的番外篇. Flow是一个静态的检查类型检查工具,设计之初的目的就是为了可以 ...
- 使用vue开发微信公众号下SPA站点的填坑之旅
原文发表于本人博客,点击进入使用vue开发微信公众号下SPA站点的填坑之旅 本文为我创业过程中,开发项目的填坑之旅.作为一个技术宅男,我的项目是做一个微信公众号,前后端全部自己搞定,不浪费国家一分钱^ ...
- React Native填坑之旅--动画
动画是提高用户体验不可缺少的一个元素.恰如其分的动画可以让用户更明确的感知当前的操作是什么. 无疑在使用React Native开发应用的时候也需要动画.这就需要知道RN都给我们提供了那些动画,和每个 ...
- React Native填坑之旅 -- 使用iOS原生视图(高德地图)
在开发React Native的App的时候,你会遇到很多情况是原生的视图组件已经开发好了的.有的是系统的SDK提供的,有的是第三方试图组件,总之你的APP可以直接使用的原生视图是很多的.React ...
- [Xamarin]我的Xamarin填坑之旅(二)
上一篇交代了我Xamarin填坑的背景,大概聊了聊第一步环境配置,第二步创建项目和开发框架选择.如果有一个可用的梯子,这部分基本不会出错. 接下来就具体聊一聊写代码的过程中遇到的一些事儿. 第三步是码 ...
随机推荐
- 为什么要实现Serializable
工作中我们经常在进行持久化操作和返回数据时都会使用到javabean来统一封装参数,方便操作,一般我们也都会实现Serializable接口,那么问题来了,首先:为什么要进行序列化:其次:每个实体be ...
- JDBC(3)-使用PreparedStatement接口实现增、删、改操作
1.PreparedStatement接口引入 PreparedStatement是Statement的子接口,属于预处理操作,与直接使用Statement不同的是,PreparedStatement ...
- oracle中斜杠(/)的含义
斜杠就是让服务器执行前面所写的sql脚本.如果是普通的select语句,一个分号,就可以执行了.但是如果是存储过程,那么遇到分号,就不能马上执行了.这个时候,就需要通过斜杠(/)来执行. 1 2 3 ...
- MySQL存储过程中判断形参是否为空null
直接看例子: DELIMITER $$CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `restore`(username varchar(50))BEGINi ...
- log4j DailyRollingFileAppender, DatePattern 配置
在DailyRollingFileAppender中可以指定monthly(每月). weekly(每周).daily(每天).half-daily(每半天).hourly(每小时)和minutely ...
- h5页面ios,双击向上滑动,拖拽到底部还能继续拖拽(露出黑色背景)
h5页面ios,双击向上滑动,拖拽到底部还能继续拖拽 标签: 手机 2016-02-02 18:09 696人阅读 评论(0) 收藏 举报 在ios下,双击屏幕某些地方,滚动条会自动向上走一段. ...
- window.open()被浏览器拦截问题汇总
一.问题描述 最近在做项目的时候碰到了使用window.open被浏览器拦截的情况,虽然在自己的环境可以对页面进行放行,但是对用户来说,不能要求用户都来通过拦截.何况当出现拦截时,很多用户根本不知道发 ...
- hdu 3091 Necklace 状态压缩dp *******
Necklace Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 327680/327680 K (Java/Others)Total ...
- so模块加载后数据问题
lualib-src里面都没有存数据的地方 那么bjm里面的这块数据防全局,再多个虚拟机里require后数据会全局共享吗
- 深入理解ES6之函数
一:关于函数的参数: 可以接受任意数量的参数而无视函数声明的参数数量是js函数的独特之处. 1:参数默认值 ES6之前做法: function makeRequest(url,timeout,call ...