• 使反向代理后的 Flask 的 url_for() 使用 https

    这个问题困扰我多时,曾尝试多个方案未果,今天终于搜到了正确的解决方法,记录下来。

    我的网络拓扑: 外部 → docker的nginx → docker的gunicorn → flask

    问题

    Flask 代码中的 redirect(url_for('login')) 会跳回 http 的登录页面。

    我也不想给每个 url_for() 添加强制 https 的参数。

    解决

    from werkzeug.middleware.proxy_fix import ProxyFix
    from flask import Flask
    
    app = Flask(__name__)
    app.wsgi_app = ProxyFix(app.wsgi_app)

    相关参考

  • 申请 Let’s Encrypt 通配符 HTTPS 证书,并配置 Apache2

    3月中旬, Let’s Encrypt 终于正式发布通配符 HTTPS 证书了,赶紧去申请一个玩玩(然而我的网站暂时还不支持加SSL,只能先在VPS上试试了 /(ㄒoㄒ)/)。

    1. 安装 Let’s Encrypt 客户端

    系统为 Ubuntu 16.04,参照 Certbot 官网的教程,运行以下命令安装(我这里由于是用 root 用户,所以非 root 请自行加 sudo):

    # apt-get update
    # apt-get install software-properties-common
    # add-apt-repository ppa:certbot/certbot
    # apt-get update
    # apt-get install python-certbot-apache

    2. 获取通配符证书

    先查看 certbot 的版本是否 > 0.22,否则不支持通配符证书:

    # certbot --version
    certbot 0.22.2
    

    自带的 –apache 模式似乎并不能处理通配符证书的情况,所以需要手动获取。

    在对应的 support 页面[1]中,了解到还需要手动指定服务器,执行:

    # certbot -d *.xxxx.com --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory certonly

    之后按提示操作,并添加自己的域名的 TXT 记录,以通过 ACME 认证。完成后,可在 /etc/letsencrypt/live/xxxx.com/ 下看到几个 .pem 文件。

    阅读更多…

  • 使用fiddler抓手机https数据包

    原理

    我们手机在连Wi-Fi的时候,都有一个”代理服务器“的选项,而fiddler就是作为代理服务器,所以就能抓包了。而https呢,fiddler能作为中间人两边骗,所以还能抓https的包。

    步骤

    1. 开启抓包

    File => 勾选capture traffic

    2. 设置抓https和解密https

    Tools => fiddler options => https => capture https traffic => decrypt https traffic => Ignore server certificate errors
    由于对本机的数据包不感兴趣,所以把”from all processes” 改为 “from remote clients only”

    切换到Connections选项卡,勾选allow remote computers to connect,注意端口号是8888

    3. 安装certmaker插件

    默认的证书在Android和iOS下可能无效,所以,需要下载certmaker插件,双击安装后,重启fiddler。我用默认的证书,HTTPS确实解密不出来。

    4. 在手机上设置Wi-Fi代理

    主机为电脑IP,端口号为8888

    5. 给手机安装假的根证书

    在手机的浏览器进入http://电脑IP:8888,下载页面最下面的FiddlerRoot certificate,完成证书安装。

     

    相关参考:
    1. fiddler 手机 https 抓包, http://blog.csdn.net/wangjun5159/article/details/52202059