クライアント証明書を設定することで、クライアントと Edge Security Acceleration (ESA) ノード間のリンクで Transport Layer Security (TLS) 相互認証 (mTLS) を有効にできます。これにより、クライアントアクセスのセキュリティが向上します。
クライアント証明書の発行
ESA が提供する認証局 (CA) を使用してクライアント証明書を作成できます。その後、生成されたクライアント証明書をご利用のモバイルアプリケーションにデプロイできます。ESA はアカウントごとに一意の CA を生成します。デフォルトでは、ノードは ESA によって発行されたすべてのクライアント証明書を信頼します。
証明書の作成
ESA コンソールで、サイト管理 を選択します。サイト 列で、目的のサイトをクリックします。
左側のナビゲーションウィンドウで、 を選択し、証明書を作成 をクリックします。
必要に応じて、CSR の生成方法、秘密鍵タイプ、証明書の有効期間 を選択します。
説明デフォルトの証明書の有効期間は 1 年です。
[OK] をクリックします。
重要証明書のプレビューダイアログボックスで、[証明書のコピー] と [秘密鍵のコピー] をクリックして内容をコピーします。その後、内容をご利用のクライアントに貼り付けます。このダイアログボックスを閉じると、証明書と秘密鍵は取得できなくなります。
ドメイン名のバインド
クライアント証明書を特定のドメイン名にバインドすることで、相互認証 (mTLS) を実装できます。これにより、有効なクライアント証明書を持つユーザーのみが特定のサービスやリソースにアクセスできるようになります。
ESA コンソールで、サイト管理 を選択します。サイト 列で、対象のサイトをクリックします。
左側のナビゲーションウィンドウで、 をクリックします。
ドメイン名セクションで、設定 をクリックします。ドメイン名ボックスにドメイン名を入力します。
説明一度に最大 50 個のドメイン名を入力できます。
ドメイン名はサイトと一致する必要があります。
OK をクリックします。
証明書の失効
証明書が不要になった場合は、次の手順で失効させます。
ESA コンソールで、サイト管理 を選択します。サイト 列で、目的のサイトをクリックします。
左側のナビゲーションウィンドウで、 をクリックします。
を選択し、取り消す をクリックします。
表示されたダイアログボックスで、この証明書がもう使用しないことを確認しました。 チェックボックスをオンにします。次に、OK をクリックします。
カスタム証明書の発行
ESA の CA によって発行されたクライアント証明書に加えて、独自のプライベートチャネルから発行した証明書も使用できます。カスタム証明書を使用する場合は、そのルート証明書を設定する必要があります。
現在、カスタム証明書の発行は OpenAPI を通じてのみサポートされています。プランごとに最大 5 つの CA 証明書をアップロードできます。
手順
クライアント mTLS CA 証明書のアップロード API 操作を呼び出して、CA ルート証明書をアップロードします。API レスポンスから証明書 ID を記録します。
ドメイン名のバインド API 操作を呼び出して、ホストのリストを CA 証明書にバインドします。バインドされたホストのみが、対応する CA 証明書を mTLS 認証に使用できます。
次の表に、カスタム mTLS 証明書機能に関するその他の OpenAPI 操作をリストします。
API 操作名
説明
カスタム発行の CA 証明書をアップロードします。
アップロードされたすべてのカスタム発行の CA 証明書をリストします。
カスタム発行の CA 証明書を削除します。
特定のカスタム発行の CA 証明書の詳細を照会します。
ドメイン名をカスタム発行の CA 証明書にバインドします。
カスタム発行の CA 証明書のドメイン名バインドステータスを照会します。
認証に失敗したリクエストのブロック
Web Application Firewall (WAF) ルールを設定して、クライアント証明書認証に失敗したリクエストをブロックします。
手順
ESA コンソールで、サイト管理 を選択します。サイト 列で、目的のサイトをクリックします。
左側のナビゲーションウィンドウで、 を選択して、カスタムルール設定ページに移動します。

カスタム WAF ルールを設定します。
検証済みのクライアント証明書 を
に設定します。ホスト名 に、リクエストをブロックするドメイン名を入力します。
重要ホスト名条件を設定する必要があります。設定しない場合、クライアント証明書認証に失敗したすべてのリクエストがブロックされます。

アクション を ブロック に設定するか、必要に応じて別のアクションに設定します。

OK をクリックしてルールを追加します。
ルールが追加されると、ルール内のドメイン名に対するクライアント証明書認証に失敗したリクエストはブロックされ、403 ステータスコードが返されます。
検証
クライアントが証明書なしでリクエストを送信した場合、WAF はリクエストをブロックし、403 ステータスコードを返します。

クライアントが ESA によって発行されたクライアント証明書を使用してリクエストを送信した場合、リクエストは正常に処理されます。
curl -v "https://example.com" --cert ./example.crt --key ./example.key * Trying 10.10.10.10... * TCP_NODELAY set * Connected to 1.zhouwei.queniuwk.cn (10.10.10.10) port 443 (#0) * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH * successfully set certificate verify locations: * CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none * TLSv1.2 (OUT), TLS Unknown, Certificate Status (22): * TLSv1.2 (OUT), TLS handshake, Client hello (1): * TLSv1.2 (IN), TLS handshake, Server hello (2): * NPN, negotiated HTTP1.1 * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Request CERT (13): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Certificate (11): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS handshake, CERT verify (15): * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.2 (OUT), TLS handshake, Next protocol (67): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 * Server certificate: * subject: CN=1.zhouwei.queniuwk.cn * start date: Jul 31 00:00:00 2024 GMT * expire date: Jul 31 23:59:59 2025 GMT * subjectAltName: host "1.zhouwei.queniuwk.cn" matched cert's "1.zhouwei.queniuwk.cn" * issuer: C=US; O=DigiCert Inc; OU=www.digicert.com; CN=Encryption Everywhere DV TLS CA - G2 * SSL certificate verify ok. > GET / HTTP/1.1 > Host: 1.zhouwei.queniuwk.cn > User-Agent: curl/7.74.0 > Accept: */*