Proxyman でカスタムルート証明書を作成して使う
この記事では、Apple の新しいセキュリティ要件(iOS 13 以降および Catalina)に準拠した自己署名証明書を手動で作成し、それをカスタムのルート証明書として使う方法を解説します。
1. Apple の新しいセキュリティ要件とは?
iOS 13 および macOS 10.15(Catalina)以降では、正しく動作させるために、すべての証明書が Apple の新しいセキュリティ要件に準拠している必要があります。
要約すると、次のとおりです。
- RSA 鍵のサイズは 2048 ビットより大きくする必要があります
- ハッシュアルゴリズムは SHA-2 ファミリーである必要があります
- SHA-1 で署名された証明書は、TLS ではもう信頼されません
- サーバーの DNS 名は Subject Alternative Name に含まれている必要があります。Common Name はもう信頼されません
- 証明書が有効であること(現在の日時が Not Before と Not After の範囲内にあること)
- 有効期間は 825 日以内である必要があります
- TLS サーバー証明書には、id-kp-serverAuth OID を含む ExtendedKeyUsage(EKU)拡張が必要です
詳しくは https://support.apple.com/en-us/HT210176 をご覧ください。
2. 自己署名証明書の作成方法
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
distinguishedname = reqdistinguished_name
[ reqdistinguishedname ]
C=US
L=US
O=Self-signed Certificate
CN=my.server.dev
OU=Self-signed Certificate
- C、L、O、CN、OU のパラメータの値を更新してください。
2/ ターミナルアプリで RSA 鍵を生成します。(your_password を実際のパスワードに置き換えてください)
cd ~/Desktop
openssl genrsa -aes256 -passout pass:your_password -out key.pem 2048
3/ 自己署名証明書と秘密鍵を生成します。(your_password を実際のパスワードに置き換えてください)
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 を実際のパスワードに置き換えてください)
openssl pkcs12 -export -out root-ca.p12 -in root-ca.pem -inkey key.pem -passin pass:your_password -passout pass:your_password
5/ これで root-ca.p12 ファイルが作成されます。次の手順に進みましょう。
3. Proxyman でカスタムサーバー証明書として使用する
- Certificate メニュー -> Custom Certificate -> Root Certificate タブを選択します
- Import ボタン -> P12 をクリックします
- root-ca.p12 を選択し、パスワードを入力します
- キーチェーンアプリでカスタム証明書を信頼します:
- キーチェーンアプリを開きます
- 追加した証明書を検索します。名前は証明書の Common Name(CN)になっている場合があります
- ダブルクリックして開き、「常に信頼」(Always Trust)を選択します
- 「X」をクリックして変更を保存します

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

詳しくは Custom Certificate のドキュメント をご覧ください。
秘密鍵は厳重に管理する
ほとんどのテストでは、Proxyman が生成する証明書の方が手軽です。カスタムのルート証明書は、チームに明確な必要性がある場合にだけ使ってください。P12 ファイル、パスワード、秘密鍵をソース管理にコミットしないでください。また、チャットやメールで送信しないでください。テストプロジェクトで不要になったら、信頼済みストアから証明書を削除してください。
Proxyman は高性能な macOS アプリで、iOS デバイス、iOS シミュレータ、Android デバイス上のアプリやドメインからの HTTP/HTTPS リクエストをキャプチャできます。
ダウンロード:https://proxyman.com

