为nghttp2 proxy配置客户端证书认证

# 建立 CA 目录结构
mkdir -p ./demoCA/{private,newcerts}
touch ./demoCA/index.txt
echo 01 > ./demoCA/serial

# 生成 CA 的 RSA 密钥对
openssl genrsa -des3 -out ./demoCA/private/cakey.pem 2048

# 自签发CA证书
openssl req -new -x509 -days 365 -key ./demoCA/private/cakey.pem \
-out ./demoCA/cacert.pem

# 把CA证书移至nghttpx配置目录
sudo mv ./demoCA/cacert.pem /etc/nghttpx/certs/

# 修改nghttpx启动脚本(supervisor)
[program:nghttpx]
command=nghttpx -s -f0.0.0.0,443 -b127.0.0.1,8080 /etc/nghttpx/certs/ssl.key /etc/nghttpx/certs/ssl.crt --verify-client --verify-client-cacert=/etc/nghttpx/certs/cacert.pem --npn-list=spdy/3.1,h2
autorestart=true
user=root

接下来把vps上的cacert.pem和cakey.pem下载到本机并导入操作系统。在OSX中cacert.pem(公钥)双击导入即可,但cakey.pem(私钥)需从终端导入(GUI有Bug导不进):

security import cakey.pem -k ~/Library/Keychains/login.keychain

最后,理论上只要在Chrome安装扩展Proxy SwitchyOmega,设置好https proxy就万时大吉;但实际上Chrome 41 stable对需要证书认证的https代理有一个无限崩溃的Bug,所以需要更新到Chrome 43 dev或以上才行。当然Firefox 33以上已支持https proxy,需通过pac使用。

为Android Lollipop开启Google Now

此方法无需root、无需修改位置信息,需全程开启VPN。

步聚:

  1. 更新google search到最新版。
  2. 把系统语言改为English(US),清除google play services、 google app、google play store和google services framework的数据(如果使用Google Now Launcher,桌面设置将清空)。
  3. 开启飞行模式(可选)、禁用定位服务,在桌面空白处长按,点选“settings”,进入后点击“Accounts & privacy”,再点击“Google Account”,点击“Sign out”。
  4. 然后返回桌面,原无意外开启Google Now的向导出来啦。
  5. 不要把系统语言改为简体中文了。

继续阅读为Android Lollipop开启Google Now

用ArchLinux架设Time Capsule

本人入手Macbook Pro Retina(early 2013)后还转门买了一个1T的移动硬盘作为Time Machine的备份盘(其实前10G用作OS X安装、后600G用作文件交换),但用着感觉每次备份还得接上硬盘实在不方便,也曾经想过把路由器作为Time Capsule,但路由器的性能是个问题,所以最后还是用PC吧。

继续阅读用ArchLinux架设Time Capsule

编译Shadowsocks for Gargoyle

因为shadowsocks-libev提供的nightly版是基于openwrt trunk编译的,而gargoyle 1.5.11基于openwrt attitude adjustment,所以在gargoyle上安装会出错:

root@Gargoyle:/# opkg install /tmp/ss.ipk
 ERROR: No package named shadowsocks-libev-polarssl found, try updating your package lists

当然,最简单快捷的方法是把ipk解压,再把文件放进对应目录就可以了。我主要是想趁着这次机会学习编译一下openwrt,接着开始记录本次编译过程。

继续阅读编译Shadowsocks for Gargoyle