青云 HTTPS 服务的两种配置方案

8月份要把服务迁移到青云上,负责搭建 HTTPS 服务的Daniel苦恼两天有余,配置 HTTPS 时一直报告下述问题:

400 Bad Request
The plain HTTP request was sent to HTTPS port

这是什么问题?

这个问题是我们尝试在云服务上搭建 HTTPS 时出现的,要清楚复述这个问题有点复杂,各位直接移步看 stackoverflow 上的 Dealing with nginx 400 “The plain HTTP request was sent to HTTPS port” error 这个例子吧,相信你会有很多收获。

以下这段会帮助你理解其实质:

The error says it all actually. Your configuration tells Nginx to listen on port 80 (HTTP) and use SSL. When you point your browser to http://localhost, it tries to connect via HTTP. Since Nginx expects SSL, it complains with the error.

HTTPS是什么?

HTTPS: HTTP over TLS, HTTP over SSL, and HTTP Secure.
简单地说,HTTPS 就是在一条由 SSL/TLS 加密的连接(connection)上传输HTTP数据,目的是防止HTTP内容被偷听和篡改。
换言之,HTTPS在一个不安全的网络上创建了一个安全通道。
HTTP数据有一个加密和解密的过程。理解了这一点你就理解了在云上配置的两种方案。

我们应用HTTPS做什么?

无他,就是为了防止内容被篡改。

nginx的配置

一定要熟悉nginx的配置,否则,你会到处乱搜解决方法,不是怀疑这儿配错了,就是怀疑那儿配错了。

搭建负载均衡器

有两个方案可以实现HTTPS服务。方案一就是由负载均衡器(LB = Load Balancer)来实现,方案二由后端WebServer来实现。

方案一:LB实现

请按照青云的 搭建 HTTPS 协议的负载均衡器指南 的要求进行 HTTPS 协议搭建。因为我们使用路由器,情况有些许不同,要点:

  1. LB配置HTTPS
    将你的服务器证书的“证书内容” 和 “私钥”配好,监听HTTPS协议,443端口。
  2. 路由器配置
    在路由器上将443映射到后端的80端口(HTTP)。
  3. 后端nginx配置
    这里只需要配置HTTP服务即可,因为解密数据的任务由LB承担了,这里自然不需要配置HTTPS了。
    注:Daniel就是折在这里了,他在路由器里将443映射到后端的443 ssl,路由器过来的数据已经解密了,已经是plain HTTP request,还要发送到HTTPS port(443)上,当然就会 complain with the error了。
青云HTTPS服务的两种配置方案

方案二:后端WebServer实现

  1. LB配置TCP
    监听TCP协议,443端口。
  2. 路由器配置
    在路由器上将443映射到后端的443端口(HTTPS)。
  3. 后端nginx配置
    按照标准的HTTPS服务进行配置。如下:
server {
        listen 80;
        listen 443 ssl;
        server_name  c.example.com;

        ssl_certificate /usr/local/nginx/conf/app/example/example.crt;
        ssl_certificate_key /usr/local/nginx/conf/app/example/example.key;

        root /home/app/c.example.com/;

        location ~ \.(htm|html)$ {
            add_header Cache-Control no-store;
            expires -1;
        }

        location / {
            index index.html;
        }

    access_log /home/logs/c.example.com/access.log access;
    error_log /home/logs/c.example.com/error.log info;
}

相对于“原始的nginx配置”的改进:

  • 80和443在一个 server 里面即可(保持简单性、一致性)。
  • index里的index.php删除,因为网站根本不提供php服务。(不该有的东西一点都不要有,保持简单、简洁
  • 顺序调整(增强可理解性)。

附:原始的nginx配置

原始的nginx配置

建议

为何使用https?

我们使用https的初心是防止HTTP内容被篡改,因为做正常CPS业务的导航网站常遇到被流氓推广者强行篡改内容从而劫持流量进行跳转的情况。

跳转地址:http://c.example.com => https://c.example.com

协议切换
  • zz
    js 负责跳转,js 文件中类似语句https://c.example.com/shopid.html?uid=,其中https即指明使用https协议。

    js文件位于www网站/$version/toolbar/js/toolbar.js。当前3.7和3.9版本在正常维护。

  • sm
    由软件提供跳转,需要修改配置文件 unionmap.xml,软件重启后会下载该配置文件的 zip 包(2015-09-07)。

    该配置文件在 http://click.example.com/admin 后台的商城管理下生成,当下仅点击生成新的商城联盟映射表即可,其他无需操作。

    注:由于几经演变,事先需修改 db_cashback 的 t_u_union 表:update t_u_union set un_px_url=replace(un_px_url,'https','http'); 而无需通过后台页面功能修改任何内容。

  • unionmap.xml.sample


    unionmap.xml.sample

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容