クライアント証明書のデバイスポスチャ属性は、デバイスに、信頼された証明書で署名された有効なクライアント証明書があるかどうかを確認します。信頼された証明書は Cloudflare にアップロードし、ポスチャチェックルールの一部として指定します。クライアント証明書のポスチャチェックは、Gateway と Access のポリシーで使い、ユーザーが管理対象デバイスから接続していることを確認できます。
機能の可用性
| クライアントモード | Zero Trust プラン ↗ |
|---|---|
| すべてのモード | すべてのプラン |
| システム | 可用性 | 最低クライアントバージョン1 |
|---|---|---|
| Windows | ✅ | 2024.6.415.0 |
| macOS | ✅ | 2024.6.416.0 |
| Linux | ✅ | 2024.6.497.0 |
| iOS | ❌ | |
| Android | ❌ | |
| ChromeOS | ❌ |
1 以前のバージョンの Cloudflare One Client で実行していたクライアント証明書チェックは、引き続き動作します。新しい証明書チェックを設定するには、上記のバージョンへ Cloudflare One Client を更新してください。
-
デバイス向けのクライアント証明書を発行する CA。Cloudflare One Client は証明書の信頼チェーンを評価しません。発行元の証明書である必要があります。
-
デバイスに Cloudflare One Client が導入 されていること。
-
デバイスにクライアント証明書が インストールされ、信頼されている こと。
-
Upload mTLS certificate エンドポイント を使い、証明書と秘密鍵を Cloudflare にアップロードします。証明書は 署名証明書 である必要があり、改行を
\nに置き換えた 1 つの文字列としてフォーマットします。秘密鍵が必要になるのは、このカスタム証明書を Gateway の HTTPS 検査に使う場合だけです。
At least one of the following token permissions is required:Required API token permissions
Account: SSL and Certificates Write
Upload mTLS certificatebash curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/mtls_certificates" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "name": "example_ca_cert", "certificates": "-----BEGIN CERTIFICATE-----\nXXXXX\n-----END CERTIFICATE-----", "private_key": "-----BEGIN PRIVATE KEY-----\nXXXXX\n-----END PRIVATE KEY-----", "ca": true }'応答には証明書の UUID が返ります。例:
{ "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", ... } } -
Cloudflare ダッシュボード ↗ で Zero Trust > Reusable components > Posture checks を開きます。
-
Cloudflare One Client checks を開き、Add a check を選びます。
-
Client certificate を選びます。
-
次の情報の入力を求められます。
-
Name: このデバイスポスチャチェックの一意な名前を入力します。
-
Operating system: オペレーティングシステムを選びます。
-
OS locations: クライアント証明書がインストールされている場所を指定します。
Windows
- Local machine trust store
- User trust store
macOS
- System keychain
Linux
- NSSDB (
/etc/pki/nssdb) - カスタムの場所を検索するには、証明書と秘密鍵の絶対パスを入力します(例:/usr/local/mycompany/certs/client.pemと/usr/local/mycompany/certs/client_key.pem)。証明書と 秘密鍵はPEM形式である必要があります。別々のファイルでも、同じファイルでも構いません。
-
Certificate ID: 署名証明書の UUID を入力します。
-
Common name: (任意)クライアント証明書の Common Name(CN)を確認するには、任意で
${serial_number}と${hostname}変数を含む文字列を入力します(例:${serial_number}_mycompany)。Cloudflare One Client は、大文字小文字を区別しない完全一致を検索します。コモンネームを指定しない場合、Cloudflare One Client は証明書のコモンネーム欄を無視します。 -
Check for Extended Key Usage: (任意)クライアント証明書に 1 つ以上の属性が設定されているかどうかを確認します。対応する値は Client authentication(
1.3.6.1.5.5.7.3.2)および / または Email(1.3.6.1.5.5.7.3.4)です。 -
Check for private key: (推奨)有効にすると、WARP はクライアント証明書に紐づく秘密鍵がデバイスにあることを確認します。
-
Subject Alternative Name: (任意)クライアント証明書の Subject Alternative Name(SAN)を確認するには、任意で
${serial_number}と${hostname}変数を含む文字列を入力します(例:${serial_number}_mycompany)。Cloudflare One Client は、大文字小文字を区別しない完全一致を検索します。ポスチャチェックには複数の SAN を追加できます。チェックに合格するには、証明書がいずれか 1 つの SAN に一致すれば十分です。
-
-
Save を選びます。
次に、Insights > Logs > Posture logs を開き、クライアント証明書チェックが想定どおりの結果を返していることを確認します。
次のコマンドで、クライアント証明書がデバイスに正しくインストールされ、信頼されているかを確認できます。
- PowerShell ウィンドウを開きます。
- ローカルマシンのトラストストアから、特定のコモンネームを持つ証明書を検索するには、次のコマンドを実行します。
Get-ChildItem Cert:\LocalMachine\My\ | where{$_.Subject -like "*<COMMON_NAME>*"}- ユーザートラストストアから、特定のコモンネームを持つ証明書を検索するには、次のコマンドを実行します。
Get-ChildItem Cert:\CurrentUser\My\ | where{$_.Subject -like "*<COMMON_NAME>*"}- ターミナルを開きます。
- System Keychain から、特定のコモンネームを持つ証明書を検索するには、次のコマンドを実行します。
/usr/bin/security find-certificate -c "<COMMON_NAME>" -p /Library/Keychains/System.keychain- ターミナルを開きます。
- NSSDB 内のクライアント証明書をすべて一覧表示するには、次のコマンドを実行します。
certutil -L -d /etc/pki/nssdbCertificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
meow CTu,Cu,Cu
noPrivateKey CT,,- 証明書のニックネームを使って、目的の証明書を開きます。コモンネームは
Subject: "CN=123456.mycompany"の行に表示されます。
certutil -L -d /etc/pki/nssdb -n meowCertificate:
Data:
Version: 3 (0x2)
Serial Number: 236 (0xec)
Signature Algorithm: PKCS #1 SHA-256 With RSA Encryption
Issuer: "CN=123456.mycompany"
Validity:
Not Before: Tue Jul 02 17:20:40 2024
Not After : Sun Jul 02 17:20:40 2034
Subject: "CN=123456.mycompany"
Subject Public Key Info:
Public Key Algorithm: PKCS #1 RSA Encryption
RSA Public Key:
Modulus:
<redacted>
Exponent: 65537 (0x10001)
Signature Algorithm: PKCS #1 SHA-256 With RSA Encryption
Signature:
<redacted>
Fingerprint (SHA-256):
<redacted>
Fingerprint (SHA1):
<redacted>
Mozilla-CA-Policy: false (attribute missing)
Certificate Trust Flags:
SSL Flags:
Valid CA
Trusted CA
User
Trusted Client CA
Email Flags:
Valid CA
Trusted CA
User
Object Signing Flags:
Valid CA
Trusted CA
Userポスチャチェックに合格するには、アップロードした署名証明書で検証できる証明書が、出力に表示される必要があります。