クライアント証明書
クライアント証明書デバイスポスチャ属性は、デバイスが信頼された証明書機関(CA)によって署名された有効な証明書を持っているかどうかを確認します。このポスチャチェックは、ユーザーが管理されたデバイスから接続していることを確認するために、ゲートウェイおよびアクセスポリシーで使用できます。
機能の可用性
| WARPモード | ゼロトラストプラン ↗ |
|---|---|
| すべてのモード | すべてのプラン |
| システム | 可用性 | 最小WARPバージョン1 |
|---|---|---|
| Windows | ✅ | 2024.6.415.0 |
| macOS | ✅ | 2024.6.416.0 |
| Linux | ✅ | 2024.6.497.0 |
| iOS | ❌ | |
| Android | ❌ | |
| ChromeOS | ❌ |
1 以前のWARPバージョンで実行されたクライアント証明書チェックは引き続き機能します。新しい証明書チェックを構成するには、上記のバージョンにWARPを更新してください。
- デバイス用のクライアント証明書を発行するCA。WARPは証明書の信頼チェーンを評価しません。これが発行証明書である必要があります。
- Cloudflare WARPクライアントがデプロイ済みであること。
- クライアント証明書がインストールされ、信頼されていること。
-
Use the Upload mTLS certificate endpoint to upload the certificate and private key to Cloudflare. The certificate must be a root CA, formatted as a single string with
\nreplacing the line breaks. プライベートキーは、ゲートウェイHTTPS検査のためにこのカスタム証明書を使用する場合にのみ必要です。Terminal window curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/mtls_certificates" \--header "X-Auth-Email: <EMAIL>" \--header "X-Auth-Key: <API_KEY>" \--header "Content-Type: application/json" \--data '{"name": "example_ca_cert","certificates": "-----BEGIN CERTIFICATE-----\nXXXXX\n-----END CERTIFICATE-----","private_key": "-----BEGIN PRIVATE KEY-----\nXXXXX\n-----END PRIVATE KEY-----","ca": true}'The response will return a UUID for the certificate:
{"success": true,"errors": [],"messages": [],"result": {"id": "2458ce5a-0c35-4c7f-82c7-8e9487d3ff60","name": "example_ca_cert","issuer": "O=Example Inc.,L=California,ST=San Francisco,C=US","signature": "SHA256WithRSA"...}} -
ゼロトラスト ↗に移動し、設定 > WARPクライアントを選択します。
-
WARPクライアントチェックまでスクロールし、新規追加を選択します。
-
クライアント証明書を選択します。
-
次の情報を入力するように求められます:
- 名前:このデバイスポスチャチェックのための一意の名前を入力します。
- オペレーティングシステム:オペレーティングシステムを選択します。
- OSの場所:クライアント証明書がインストールされている場所を指定します。
Windows
- ローカルマシントラストストア - ユーザートラストストア
- システムキーチェーンmacOS
Linux
- NSSDB (
/etc/pki/nssdb) - カスタム場所を検索するには、証明書とプライベートキーへの絶対ファイルパスを入力します(例:/usr/local/mycompany/certs/client.pemおよび/usr/local/mycompany/certs/client_key.pem)。証明書とプライベートキーはPEM形式でなければなりません。2つの異なるファイルまたは同じファイルにすることができます。
- 証明書ID:ルートCAのUUIDを入力します。
- コモンネーム:(オプション)クライアント証明書の特定のコモンネームをチェックするには、オプションの
${serial_number}および${hostname}変数を含む文字列を入力します(例:${serial_number}_mycompany)。WARPは大文字と小文字を区別せずに完全一致を検索します。コモンネームを指定しない場合、WARPは証明書のコモンネームフィールドを無視します。 - 拡張キー使用のチェック:(オプション)クライアント証明書に1つ以上の属性が設定されているかどうかを確認します。サポートされている値はクライアント認証(
1.3.6.1.5.5.7.3.2)および/またはメール(1.3.6.1.5.5.7.3.4)です。 - プライベートキーのチェック:(推奨)有効にすると、WARPはデバイスがクライアント証明書に関連付けられたプライベートキーを持っているかどうかを確認します。
-
保存を選択します。
次に、ログ > ポスチャに移動し、クライアント証明書チェックが期待される結果を返していることを確認します。
クライアント証明書がデバイスに正しくインストールされ、信頼されているかどうかを確認するには、次のコマンドを使用できます。
- PowerShellウィンドウを開きます。
- 特定のコモンネームを持つ証明書をローカルマシントラストストアで検索するには、次のコマンドを実行します:
PS C:\Users\JohnDoe> Get-ChildItem Cert:\LocalMachine\My\ | where{$_.Subject -like "*<COMMON_NAME>*"}- 特定のコモンネームを持つ証明書をユーザートラストストアで検索するには、次のコマンドを実行します:
PS C:\Users\JohnDoe> Get-ChildItem Cert:\CurrentUser\My\ | where{$_.Subject -like "*<COMMON_NAME>*"}- ターミナルを開きます。
- 特定のコモンネームを持つ証明書をシステムキーチェーンで検索するには、次のコマンドを実行します:
/usr/bin/security find-certificate -c "<COMMON_NAME>" -p /Library/Keychains/System.keychain- ターミナルを開きます。
- NSSDB内のすべてのクライアント証明書をリストするには、次のコマンドを実行します:
certutil -L -d /etc/pki/nssdb証明書ニックネーム 信頼属性 SSL,S/MIME,JAR/XPI
meow CTu,Cu,CunoPrivateKey CT,,- 希望の証明書をその証明書ニックネームを使用して開きます。コモンネームは
Subject: "CN=123456.mycompany"の行に表示されます。
certutil -L -d /etc/pki/nssdb -n meow証明書: データ: バージョン: 3 (0x2) シリアル番号: 236 (0xec) 署名アルゴリズム: PKCS #1 SHA-256 With RSA Encryption 発行者: "CN=123456.mycompany" 有効性: 有効期限前: 2024年7月2日火曜日 17:20:40 有効期限後: 2034年7月2日日曜日 17:20:40 主題: "CN=123456.mycompany" 主題公開鍵情報: 公開鍵アルゴリズム: PKCS #1 RSA Encryption RSA公開鍵: モジュラス: <redacted> 指数: 65537 (0x10001) 署名アルゴリズム: PKCS #1 SHA-256 With RSA Encryption 署名: <redacted> フィンガープリント (SHA-256): <redacted> フィンガープリント (SHA1): <redacted>
Mozilla-CA-ポリシー: false (属性が欠落) 証明書信頼フラグ: SSLフラグ: 有効なCA 信頼されたCA ユーザー 信頼されたクライアントCA メールフラグ: 有効なCA 信頼されたCA ユーザー オブジェクト署名フラグ: 有効なCA 信頼されたCA ユーザーポスチャチェックが合格するためには、アップロードされたルートCAに対して検証される証明書が出力に表示される必要があります。