Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

クライアント証明書

最終更新 Markdown で表示Agent セットアップ

クライアント証明書のデバイスポスチャ属性は、デバイスに、信頼された証明書で署名された有効なクライアント証明書があるかどうかを確認します。信頼された証明書は 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 が導入 されていること。

  • デバイスにクライアント証明書が インストールされ、信頼されている こと。

クライアント証明書チェックを設定する

  1. Upload mTLS certificate エンドポイント を使い、証明書と秘密鍵を Cloudflare にアップロードします。証明書は 署名証明書 である必要があり、改行を \n に置き換えた 1 つの文字列としてフォーマットします。秘密鍵が必要になるのは、このカスタム証明書を Gateway の HTTPS 検査に使う場合だけです。

    Required API token permissions

    At least one of the following token permissions is required:
    • 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",
        ...
      }
    }
  2. Cloudflare ダッシュボードZero Trust > Reusable components > Posture checks を開きます。

  3. Cloudflare One Client checks を開き、Add a check を選びます。

  4. Client certificate を選びます。

  5. 次の情報の入力を求められます。

    1. Name: このデバイスポスチャチェックの一意な名前を入力します。

    2. Operating system: オペレーティングシステムを選びます。

    3. 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 形式である必要があります。別々のファイルでも、同じファイルでも構いません。
    4. Certificate ID: 署名証明書の UUID を入力します。

    5. Common name: (任意)クライアント証明書の Common Name(CN)を確認するには、任意で ${serial_number}${hostname} 変数を含む文字列を入力します(例: ${serial_number}_mycompany)。Cloudflare One Client は、大文字小文字を区別しない完全一致を検索します。コモンネームを指定しない場合、Cloudflare One Client は証明書のコモンネーム欄を無視します。

    6. Check for Extended Key Usage: (任意)クライアント証明書に 1 つ以上の属性が設定されているかどうかを確認します。対応する値は Client authentication1.3.6.1.5.5.7.3.2)および / または Email1.3.6.1.5.5.7.3.4)です。

    7. Check for private key: (推奨)有効にすると、WARP はクライアント証明書に紐づく秘密鍵がデバイスにあることを確認します。

    8. Subject Alternative Name: (任意)クライアント証明書の Subject Alternative Name(SAN)を確認するには、任意で ${serial_number}${hostname} 変数を含む文字列を入力します(例: ${serial_number}_mycompany)。Cloudflare One Client は、大文字小文字を区別しない完全一致を検索します。ポスチャチェックには複数の SAN を追加できます。チェックに合格するには、証明書がいずれか 1 つの SAN に一致すれば十分です。

  6. Save を選びます。

次に、Insights > Logs > Posture logs を開き、クライアント証明書チェックが想定どおりの結果を返していることを確認します。

トラブルシューティング

次のコマンドで、クライアント証明書がデバイスに正しくインストールされ、信頼されているかを確認できます。

  1. PowerShell ウィンドウを開きます。
  2. ローカルマシンのトラストストアから、特定のコモンネームを持つ証明書を検索するには、次のコマンドを実行します。
Get-ChildItem Cert:\LocalMachine\My\ | where{$_.Subject -like "*<COMMON_NAME>*"}
  1. ユーザートラストストアから、特定のコモンネームを持つ証明書を検索するには、次のコマンドを実行します。
Get-ChildItem Cert:\CurrentUser\My\ | where{$_.Subject -like "*<COMMON_NAME>*"}
  1. ターミナルを開きます。
  2. System Keychain から、特定のコモンネームを持つ証明書を検索するには、次のコマンドを実行します。
/usr/bin/security find-certificate -c "<COMMON_NAME>" -p /Library/Keychains/System.keychain
  1. ターミナルを開きます。
  2. NSSDB 内のクライアント証明書をすべて一覧表示するには、次のコマンドを実行します。
certutil -L -d /etc/pki/nssdb
Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

meow                                                         CTu,Cu,Cu
noPrivateKey                                                 CT,,
  1. 証明書のニックネームを使って、目的の証明書を開きます。コモンネームは Subject: "CN=123456.mycompany" の行に表示されます。
certutil -L -d /etc/pki/nssdb -n meow
Certificate:
    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

ポスチャチェックに合格するには、アップロードした署名証明書で検証できる証明書が、出力に表示される必要があります。

役に立ちましたか?