相互TLS認証
相互TLS(mTLS)は、APIにセキュリティレイヤーを追加します。 SSLハンドシェイク中にクライアントとサーバーの両方が有効な証明書を提示する必要があり、各当事者が相手のIDを検証できます。
Workatoは、ワークスペースのTruststoreで定義された信頼済み認証局(CA)チェーンに対してクライアント証明書をチェックします。
mTLSは、設定済みの認証方法と連携します。 Workatoは各リクエストについて、アクセストークンとクライアント証明書の両方を検証します。 これにより、信頼され認証されたクライアントのみがAPIにアクセスできます。
カスタムドメインが必要
mTLSを有効にするには、ワークスペースに有効なカスタムドメインが必要です。
APIクライアントのmTLSを設定する
APIクライアントに対してmTLSの適用を有効にするには、次の手順を完了します。 これにより、各リクエストで有効なクライアント証明書の提示が必要になります:
API platform > Clientsに移動し、+ Add new clientをクリックします。
NameやDescriptionなどのクライアント詳細を入力します。 必要に応じて、Client logoをアップロードし、Grant client access to portalを有効にできます。
次へをクリックします。
クライアントのAuthentication methodを選択します。
相互TLS(mTLS)の強制を切り替えます。
相互TLSの編集
Truststoreから最大5つのCertificate bundlesを選択します。 Workatoはこれらのバンドルを使用して、信頼された認証局に対してクライアント証明書を検証します。
Certificate validationルールを追加します。 詳細については、証明書検証ルールの追加セクションを参照してください。
含めるAPIコレクションや任意のポリシーなど、残りのアクセス設定を構成します。
Nextをクリックして、クライアント作成を完了します。
Workatoは各リクエストについて、アクセストークンとクライアント証明書の両方をチェックします。 証明書検証中に、選択したバンドルを使用して信頼チェーンを構築します。
証明書検証ルールの追加
Certificate validationフィールドを使用して、クライアント証明書のメタデータに対してIDチェックを適用します。 Common Name(CN)、Subject Alternative Name(SAN)、Distinguished Name(DN)などのフィールドを評価する式を入力できます。
Workatoは実行時にこの式を実行し、証明書が検証に失敗した場合はリクエストを拒否します。
ユースケース例
SANに文字列"test"が含まれているかどうかをチェックするFormulaを使用して、テストEnvironmentへのアクセスを制限します。 例:
SAN.include?("test")この式は、SANフィールドに"test"を含む証明書のみを許可します。
WorkatoがSANおよびDNフィールドを解釈する方法
Workatoは、証明書検証中にSANおよびDNフィールドを評価する際に特定の書式設定ルールを適用します。
SAN(Subject Alternative Name)フィールドには文字列の配列が含まれます。 各エントリは、DNS:、IP:、URI:、Email:などの型プレフィックスで始まります。 Formulaには、正しいプレフィックスを含む完全な値を含める必要があります。 たとえば、メールを検証するには:
SAN.include?("Email:[email protected]")証明書で小文字で表示されている場合でも、Formulaでは大文字の"Email"プレフィックスを使用する必要があります。 DNS、IP、URIなどのその他のSAN値は大文字で表示され、変換は不要です。
Distinguished Name(DN)値の場合、Formulaエディターの形式は証明書の形式と異なります。 証明書では、DNが次のX.509形式で表示される場合があります:
/C=US/O=Org/CN=RootCA
Formulaエディターでは、RFC 4514形式に従い、DNコンポーネントが逆順で一覧表示されます:
CN=RootCA,O=Org,C=US
DNベースの検証ルールを作成するときは、RFC 4514形式を使用します。
Truststoreの管理
Truststoreでは、mTLS認証中にWorkatoがクライアント証明書を検証するために使用するCertificate bundlesをアップロードおよび管理できます。 各バンドルは、SSLハンドシェイク中にクライアントIDを検証するための信頼された認証局(CA)チェーンを定義します。
Certificate bundlesをアップロードおよび管理する方法の詳細については、Truststoreドキュメントを参照してください。
SSLハンドシェイクエラーコード
Workatoは、mTLS証明書検証に失敗したリクエストを拒否します。 次のエラーコードは失敗の理由を示します:
| エラーコード | 説明 |
|---|---|
4016 | Certificate bundleがクライアント設定にありません。 |
4017 | リクエストにクライアント証明書がありません。 |
4018 | クライアント証明書が無効です。 |
4019 | 証明書がFormula検証ルールに失敗しました。 |
4020 | APIクライアントが存在しないか、設定されていません。 |
Last updated: