下面我們一起來看Charles Proxy 自定義 CA 證書的例子,希望此例子可以幫助到各位朋友,Charles Proxy 跟 Windows 平臺下的 Fiddler 一樣可以查看 HTTPS 流量,但使用 Charles 官方提供的 CA 證書檢查 HTTPS 請求時,Firefox 35 下網頁會出現如下錯誤:
twitter.com uses an invalid security certificate. The certificate is not trusted because the issuer certificate has expired. (Error code: sec_error_expired_issuer_certificate)
據說原因是這樣的:
The more recent versions of Firefox only allow certs with start dates after the unix epoch (1st Jan 1970). As the Charles CA cert has a start year of 1899 it’s seen as expired.
最新版本的 Firefox 只允許證書的起始時間在 1970 以后,而 Charles CA 證書的起始時間是 1899,解決辦法是自建一個證書。
自建 CA 證書
我的過程基于 openSUSE 13.2 操作系統,逐行執行以下命令,openSUSE 下需要管理員權限.
- mkdir -p /usr/local/CharlesCA
- cd /usr/local/CharlesCA
- mkdir certs private newcerts
- echo 01 > serial
- touch index.txt
生成 CA 證書
- openssl req -new -x509 -days 3650 -extensions v3_ca
- -keyout private/ca_key.pem -out certs/ca_cert.pem
- -config /etc/ssl/openssl.cnf
請注意 -config 后指向的路徑,這里是我 openSUSE 下 openssl.cnf 文件路徑,請根據自己的操作系統確認其路徑,這一步中也會要求填寫 passphrase 及其它信息,passphrase 后面在 Charles 中會用到.
轉換為 PKCS12 格式
因為 Charles 需要 pkcs12 格式的證書,所以還需要做個轉換:
- openssl pkcs12 -export -out ca_cert.pfx -inkey private/ca_key.pem -in certs/ca_cert.pem --Vevb.com
這樣,/usr/local/CharlesCA 目錄下會生成 ca_cert.pfx 文件,我們總共得到了 3 個重要的文件:
ca_cert.pfx – charles 添加自定義證書用的
ca_cert.pem – 提供給客戶端使用的
ca_key.pem – 鑰匙(請保證它的安全)
配置 charles,打開 charles -> Proxy -> Proxy Settings… 菜單,點擊 SSL 標簽頁,勾選 ‘Use a custom CA certificate’,點擊 CHOOSE 按鍵,選擇 /usr/local/CharlesCA/ca_cert.pfx 文件,這樣就配置好 charles 的證書.
導入證書到 Firefox
打開 Firefox -> Preferences,選擇 Advanced -> Certificates 標簽頁,點擊 VIEW CERTIFICATES,點擊 IMPORT...,定位到 /usr/local/CharlesCA/certs/ca_cert.pem 文件,勾選 ‘This certificate can identify websites’,確認.
最后重啟 Charles,會彈窗口要求填寫上面創建證書時設置的 passphrase。之后 https 流量可以正常分析了.
新聞熱點
疑難解答