SSL 証明書
Charles はサイト用に独自の証明書を生成し、Charles のインストール (v3.10 以降 ) に応じて一意に生成される Charles ルート証明書を使用して署名します。 Charles ルート証明書が信頼できるルート証明書のリストに含まれていないため、この証明書を受信すると、ブラウザまたはその他のアプリケーションで警告が表示されます。 SSL プロキシを参照してください。
Charles ルート証明書を信頼する必要がない場合、各サイトの証明書を永久に信頼するように選択できます。 Charles が発行するすべての証明書を自動的に信頼する場合は、この手順を続行します。
以下の手順は、Charles ルート証明書を信頼して証明書の警告を表示しないようにするための、異なるブラウザおよびアプリケーション用の手順です。
Charles のバージョン 3.10 で Charles ルート証明書のアプローチが変更されたため、古いバージョンの Charles でこの手順をすでに実行した場合は、再度実行する必要があることに注意してください。 CA Root証明書が信頼されていないことを警告するウィンドウが表示されます。
「証明書のインストール」ボタンをクリックすると、証明書のインポートウィザードが起動します。 証明書は「信頼できるルート認証局」証明書ストアにインポートする必要があるため、証明書ストアの自動選択を無効にします。
ウィザードを完了すると、チャールズ ルート証明書がインストールされます。
Mozilla Firefox
最初に、Firefox が Charles に接続されていることを確認します。
Firefoxでhttps://chls.pro/sslにアクセスすると、FirefoxでのブラウジングがCharlesに記録されているのが確認できます。 証明書のインポート ダイアログが表示されます。
macOS
Charles のヘルプメニューから「SSL プロキシ > Charles ルート証明書をインストール」を選択します。 キーチェーンアクセスが開きます。 Charles Proxy…」という項目を探し、ダブルクリックで情報を取得します。 信頼」の項目を展開し、「この証明書を使用するとき」の横を「システムのデフォルトを使用する」から「常に信頼する」に変更します。
変更を確認するために、Safari を終了して再度開く必要があるかもしれません。
iOS デバイス
- 設定アプリ > Wifi 設定で、HTTP プロキシとして Charles を使用するように iOS デバイスを設定します。 Safari が SSL 証明書をインストールするように指示します。
- iOS 10.3 以降を使用している場合、設定.app を開き、一般 > について > 証明書の信頼設定に移動し、Charles Proxy 証明書を見つけて、その完全信頼を有効にするためにスイッチをオンにします (iOS 10 のこの変更についての詳細情報)。
- これで、Charles で SSL プロキシを使用して SSL ウェブサイトにアクセスできるようになります。
Charles は 3.11.4 リリースで App Transport Security (ATS) をサポートします。
iOS Simulators
iOS Simulator を終了してください。 Charlesを起動し、[ヘルプ]メニューを表示します。 SSLプロキシ > iOS SimulatorsにCharlesのルート証明書をインストールする」項目を選択します。 これで、すべてのiOSシミュレータにCharles社のルート証明書がインストールされます。
tvOS
tvOSでプロキシ設定を変更するには、App StoreからApple Configurator 2を使用する必要があります。
- 新しいプロファイルを作成
- グローバルHTTPプロキシペイロードを追加
- プロキシタイプ: Manual
- プロキシサーバーとポートを記入し、デスクトップマシンのCharlesを指定します。
- 証明書ペイロードに Charles ルート証明書を追加する:
- Charles で、ヘルプ > SSL プロキシング メニューから Save Charles Root Certificate を選び、ファイルタイプのドロップダウンから .cer 形式を選択します。
- Apple Configurator 2 で、そのファイルを使って、証明書ペイロードを追加してください。
Apple TV に設定プロファイルを展開します。
次に、設定 > 一般 > バージョン > 証明書に進み、Charles Proxy 証明書の信頼を有効にします。
Android
Android N では、アプリに設定を追加することで Charles SSL Proxy が生成する SSL 証明書を信頼させることが必要です。 これは、あなたがコントロールするアプリでのみSSLプロキシを使用できることを意味します。
アプリがCharlesを信頼するように設定するためには、アプリにネットワークセキュリティ設定ファイルを追加する必要があります。 このファイルは、システムのデフォルトを上書きして、ユーザーがインストールした CA 証明書 (Charles ルート証明書など) をアプリで信頼できるようにします。 アプリケーションのデバッグ ビルドでのみ適用し、実稼働ビルドではデフォルトの信頼プロファイルを使用するように指定できます。
ファイル res/xml/network_security_config.xml をアプリに追加します。
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>その後、このファイルへの参照を、次のようにアプリのマニフェストに追加します。
Charles のヘルプメニューから、「SSL プロキシ > Charles ルート証明書を保存」を選択します。 ルート証明書をバイナリ証明書(.cer)としてデスクトップなど、次のステップで簡単にアクセスできる場所に保存します。
Chromeで、[設定]を開きます。 設定ページの下部で、「詳細設定」をクリックして詳細セクションを開き、「証明書の管理…」ボタンをクリックします。
「信頼できるルート認証局」タブで「インポート…」をクリックします。
前のステップでチャールズから保存した証明書ファイルを見つけて、インポートが完了するまで、デフォルトオプションはそのままで「次へ」と「終了」をクリックしてください。 Chrome は、Charles によって署名された証明書を常に信頼するようになります。
インポート後、保存した証明書ファイルを削除できます。
Java アプリケーション
Javaのルート証明書信頼ストアに Charles ルート証明書を追加すると、すべての Java アプリケーションで Charles が発行する証明書が信頼されるようになります。
Charles のヘルプ メニューから、「SSL プロキシ > Charles ルート証明書の保存」を選択します。
次に、cacerts ファイルを探します。それは $JAVA_HOME/jre/lib/security/cacerts にあるはずで、$JAVA_HOME は使用している JVM の Java ホームディレクトリを表します。 macOS では、それが設定されていない場合、JVM の場所を得るために /usr/libexec/java_home を実行してみてください。
次に、($JAVA_HOME と証明書の適切なパスに置き換えて):
sudo keytool -import -alias charles -file ~/Desktop/charles-ssl-proxying-certificate.pem -keystore JAVA_HOME/jre/lib/security/cacerts -storepass changeit
(changeit は cacerts ファイルのデフォルトパスワード)
Windows では、上記のコマンドを管理者として実行し、行頭の “sudo” を削除する必要があるかも知れません。
keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit
Java を複数インストールしている場合、アプリケーションを実行するためにどの Java を使用しているかを調べ、適切な Java でこの操作を行う必要があるかもしれません。 または、すべての Java インストールで行います。
macOS では、Java プラグインはその cacerts ファイルを /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security に持っています。
Python
Python の requests モジュールを Charles の SSL プロキシで使用しようとすると、エラーで失敗します:
requests.exceptions.SSLError: certificate
verify failed (_ssl.c:590)Charles ルート証明書を信頼するように requests を構成することができます。 まず、[Help > SSL Proxying > Save Charles Root Certificate]メニューを使用して、証明書を.pemファイルとして保存します。
from requests import Session
session = Session()
session.verify = "charles-ssl-proxying-certificate.pem"このサンプルコードを提供してくださった Felipe Ferri 氏に感謝します。