メインコンテンツまでスキップ

Proxyman のカスタム証明書(Custom Certificates)

Proxyman にカスタムのルート証明書、サーバー証明書、クライアント証明書を追加して、SSL ピンニングや相互 TLS に対応します。Apple が信頼する自己署名ルート証明書の作成方法も解説します。

1. 概要​

Proxyman は、カスタムの Root Certificate、Server Certificate、Client Certificate に対応しています。独自の証明書を追加すると、Proxyman はそれらを使用して、クライアント、サーバー、Proxyman アプリの間の SSL 接続を確立します。

カスタム証明書の種類用途Proxyman での使用方法
Server CertificateSSL ピンニングを使用するクライアントからの HTTPS 通信をインターセプトする場合クライアントとの SSL ハンドシェイクでこの証明書を使用します
Client Certificate相互認証(Mutual Authentication)を使用するクライアントからの HTTPS 通信をインターセプトする場合特定のサーバーとの SSL ハンドシェイクでこの証明書を使用します
Root Certificateローカルの Proxyman 証明書を使用せずに、クライアントとサーバーの HTTPS 通信をインターセプトする場合クライアントとサーバーの両方との SSL ハンドシェイク
Proxyman のカスタム証明書ウィンドウのルート証明書タブ。Proxyman の CA 証明書が Installed & Trusted になっている

Root Certificate タブ

備考

Proxyman のルート証明書は、お使いの Mac 上でローカルに生成されます。独自のルート証明書を作成して Proxyman に追加することもできます。自己署名ルート証明書の作成方法を参照してください。

2. 証明書の形式​

Proxyman は以下の形式を受け付けます。

カスタム証明書PEM または DERPKCS #12 (p12)
Root Certificate非対応対応
Client Certificate対応対応
Server Certificate対応対応
  • PKCS #12(p12)
  • PEM または DER 形式の秘密鍵と証明書ファイル
備考
  • Proxyman は、秘密鍵と証明書ファイルの形式(PEM または DER)を自動で判別します。
  • 暗号化された秘密鍵または PKCS #12 ファイルをインポートするときは、Proxyman がパスワードを求めます。
  • すべてのパスフレーズは Proxyman Keychain に安全に保存されます。
備考

Proxyman がサポートしていない形式の証明書を使用している場合は、インポートする前に p12 または PEM/DER 形式に変換してください。

3. macOS 10.15 以降と iOS 13 以降の証明書要件​

macOS 10.15 以降または iOS 13 以降でカスタムのルート証明書またはサーバー証明書を使用する場合、以下の要件を満たしていないと、Safari や iOS デバイスで SSL ハンドシェイクが失敗する可能性があります。

  • RSA 鍵は、鍵長 2048 ビット以上を使用する必要があります
  • ハッシュアルゴリズムは SHA-2 ファミリーである必要があります
  • サーバーの DNS 名は Subject Alternative Name (SAN) に含まれている必要があります。Common Name (CN) は、もう信頼されません
  • 証明書が有効である必要があります(現在の日付が Not Before と Not After の間にあること)
  • TLS サーバー証明書には、id-kp-serverAuth OID を含む ExtendedKeyUsage(EKU)拡張が必要です

詳細はこちら:iOS 13 および macOS 10.15 における信頼された証明書の要件

備考

複雑すぎる場合は、Proxyman に任せることもできます。Certificate メニュー → Install Certificate on this Mac… を開き、Automatic タブを選択します。

4. よくある問題​

問題解決策
秘密鍵と証明書が一致しない別の証明書と秘密鍵を試して、それらが一致していることを確認してください
カスタム証明書の SSL ハンドシェイクエラーが発生する
  • カスタム証明書をシステムキーチェーンに追加して、信頼するように設定してみてください
  • 証明書が macOS の要件を満たしていない場合は、セクション 3 を参照してください
  • 証明書の有効期限を確認してください
パスフレーズが無効なため、証明書をインポートできない暗号化された秘密鍵または P12 ファイルを開くための正しいパスフレーズを、チームリーダーに確認してください

5. 使い方​

  • Certificate メニュー → Add Custom Certificates… を開きます

6. Apple の新しいセキュリティ要件に準拠した、カスタムルート証明書用の自己署名証明書の作成方法​

iOS 13 と macOS Catalina (10.15) 以降の Apple の要件により、動作する自己署名証明書を生成するには、追加の設定が必要です。

次の手順に従ってください。

  1. デスクトップ フォルダに cert.config ファイルを作成します
[ ca ]
default_ca = CA_default
[ CA_default ]
default_md = sha256
[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = critical,CA:true
keyUsage=critical,keyCertSign
extendedKeyUsage = serverAuth,clientAuth
[ req ]
prompt = no
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
C=US
L=US
O=Proxyman LLC
CN=proxyman.dev
OU=Proxyman
  • C、L、O、CN、OU の各パラメータの値を更新します

2. ターミナルで RSA 鍵を生成します。(your_password は任意のパスワード(例:123456)に置き換えてください)

cd ~/Desktop
openssl genrsa -aes256 -passout pass:your_password -out key.pem 2048

3. 自己署名証明書と秘密鍵を生成します。(your_password は手順 2 のパスワードに置き換えてください)

openssl req -x509 -new -nodes -passin pass:your_password -config cert.config -key key.pem -sha256 -extensions v3_ca -days 825 -out root-ca.pem

4. p12 形式に変換します。(your_password は手順 2 のパスワードに置き換えてください)

openssl pkcs12 -export -legacy -out root-ca.p12 -in root-ca.pem -inkey key.pem -passin pass:your_password -passout pass:your_password

5. root-ca.p12 ファイルが作成されました。次の手順に進んでください。

備考

macOS 14(OpenSSL v3)以降でカスタム証明書をインポートできない場合は、手順 4 で `-legacy` フラグを使用してください。

参考:MAC verification failed during PKCS12 import (Stack Overflow)

7. カスタムルート証明書としてインポートする​

  1. Certificate メニュー → Add Custom Certificates… を開き、Root Certificate タブを選択します
  2. Import ボタン → Import P12... をクリックします
  3. root-ca.p12 ファイルを選択し、パスワードを入力します。
  4. キーチェーンアクセスで、追加したカスタム証明書を信頼するように設定します。
  • キーチェーンアクセスを開きます
  • 追加した証明書を検索します。名前は証明書の Common Name (CN) になっている場合があります
  • 証明書をダブルクリックして開き、Always Trust を選択します
  • ウィンドウを閉じて変更を保存します
Trust が Always Trust に設定された macOS のキーチェーンアクセスの証明書ウィンドウ

5. 緑色のチェックマークが表示されていることを確認してください。表示されていれば、証明書がインストールされ、信頼されています。

8. サーバー証明書/クライアント証明書としてインポートする​

カスタムのサーバー証明書またはクライアント証明書の場合は、自己署名証明書を作成しないでください。会社で使用している証明書について、チームメンバーまたはチームリーダーに確認してください。証明書の形式は DER/PEM または P12 です。

次に、カスタム証明書ウィンドウの Server Certificates タブまたは Client Certificates タブでインポートします。

秘密鍵ファイルと PEM 証明書ファイルが選択された Proxyman の証明書インポーターシート
備考

ルート証明書ではないため、システムのキーチェーンでこの証明書を信頼する必要はありません。

詳細情報​