パブリック キー インフラストラクチャ(PKI)認証

この記事には、以下のトピックが含まれています。
casm173
この記事には、以下のトピックが含まれています。
PKI認証を使用する場合、ログイン リクエストの情報はプライベート キーで暗号化されます。この情報は、対応するパブリック キーのみで復号化できます。 ログイン リクエストの応答は平文で返されます。
通常、CA SDM Web サービスにアクセスするアプリケーションにはポリシーが割り当てられます。 CA SDM Web サービスは、デジタル証明書のパブリック キーと共にポリシーの詳細情報を格納します。 アプリケーションはポリシー所有者として、デジタル証明書のプライベート キーとポリシー コード(ポリシー識別子)を使用してログイン リクエストを構築します。
loginServiceManaged (Policy, Encrypted_Policy)
CA SDM Web サービスのユーザ認証は次のように行われます。平文のポリシー コードを使用してポリシーを検索し、ポリシーに関連付けられたポリシー所有者のパブリック キーを取得します。次に暗号化されたポリシー コードを復号化し、復号化された情報をポリシー コードと照合してから、バックエンド サーバでセッションを開きます。 平文のセッション ID(SID)が返され、以降のメソッド呼び出しで使用できます。 ポリシーに関連付けられたパブリック キー(CA SDM に保管)に対応するプライベート キーは、ポリシー所有者のみが所有しています。
これ以降のWebサービス コールには、返されたセッションID(SID)が必要です。 ポリシーで指定した代理連絡先は、このセッション中のWebサービス アクテビティすべてに責任を持つことになります。 この代理連絡先には、すべてのファンクション グループ セキュリティおよびデータ パーティションが適用されます。
Encrypted_Policy パラメータは BASE64 テキスト形式である必要があります。 ユーザ アプリケーションでは、バイナリ形式からの変換を正しく行う必要があります。
Policyは必須フィールドです。 定義するときは、ポリシーに定義されている平文のポリシー コードを使用します。 Encrypted_Policy(ポリシー所有者のプライベート キーで暗号化されたポリシー コードのデジタル シグネチャ)が必要です。 Encrypted_Policyを定義するときは、ダイジェスト アルゴリズム(SHA1)、および暗号化アルゴリズム(RSA)を使用します。
Java での loginServiceManaged の実装
以下では、証明書を生成し、それを使用して CA SDM Web サービスにアクセスする方法について説明します。
以下の例では、CA SDM 証明書を使用してログインを行い、2 つの Web サービス コールを実行します。 getBopsid() Web サービス メソッド コールは、特定のユーザにリンクされているトークンを取得できます。 このトークンを使用すると、パスワードを要求されることなく、リンクされたユーザとして CA SDM Web インターフェースにログインすることができます。 これにより、異なるアプリケーション間のシームレスな統合が可能になります。
生成された BOPSID トークンは 30 秒後に無効になるため、すぐに使用してください。
バージョン 1.4 の AXIS ツールの使用には既知の問題があります。 詳細については、
リリース ノート
を参照してください。
以下の手順に従います。
  1. AXIS ツール WSDL2Java を使用してスタブ クラスを生成します。 詳細については、PKI_loginServiceManaged_JAVA_steps ファイルの「AXIS Tool WSDL2Java によるスタブ クラスの生成」を参照してください。 このファイルは、以下の場所にあります。
    $NX_ROOT/samples/sdk/websvc/java/test1_pki
  2. CA SDM サービスを起動します。
  3. pdm_pki -p DEFAULT を実行します。
    DEFAULT.p12 は現在のディレクトリに作成されます。 このポリシーでは、パスワードはポリシー名と同じです(この場合は DEFAULT)。
    このコマンドによって、証明書のパブリック キーも sapolicy テーブル/オブジェクトの pub_key フィールド(public_key 属性)に追加されます。
  4. CA SDM にログインします。
  5. [管理]タブで、[SOAP Web サービス ポリシー]-[ポリシー]を選択します。
    [SOAP Web サービスのアクセス ポリシー リスト]ページが開きます。
  6. [DEFAULT]をクリックします。
    [SOAP Web サービスのアクセス ポリシー詳細]ページが開きます。
  7. [代理連絡先]フィールド(この例では ServiceDesk)を入力し、DEFAULT ポリシー レコードの[キーを所有]フィールドに[はい]が表示されていることを確認します。
  8. DEFAULT.p12 (コマンド pdm_pki が実行されるディレクトリから)、
    pkilogin.jsp
    という名前の JSP ファイル、および
    pkilogin.htm
    という名前の HTML ファイル($NX_ROOT/samples/sdk/websvc/java/test1_pki ディレクトリから)を以下のディレクトリにコピーします。
    $NX_ROOT/bopcfg/www/CATALINA_BASE/webapps/axis
  9. Axis ディレクトリにある HTML フォームを開きます。 たとえば、http://localhost:8080/axis/pkilogin.htm
    適切なフィールドに入力します。
    [ディレクトリ]フィールドは証明書ファイルの場所を示します。 パスを変更して正しい場所を反映します。
  10. [Log me in!]をクリックします。
    結果のページが表示されます。
  11. BOPSID の URL をクリックします。
    この URL をすぐにクリックしてください。 BOPSID のトークンは約 30 秒で無効になります。
    BOPSID を使用する URL のフォーマットは、以下のとおりです。
    http://<サーバ名>:CA Portal/CAisd/pdmweb.exe?BOPSID=
AIX 上で実行している Java クライアント プログラムに対して loginServiceManaged メソッドを使用するには、JAVA_HOME にあるセキュリティ ポリシー ファイル セットに置き換える必要がある場合があります。 http://www.ibm.com にアクセスして、「developerworks java technology security information AIX」で検索を行います。 「developerWorks : Java technology : Security」ドキュメントで、「IBM SDK Policy files」へのリンクをたどります。 制約のないポリシー ファイル(local_policy.jar と US_export_policy.jar)をダウンロードします。 JAVA_HOME/lib/security ディレクトリ内の元のファイルを、これらのファイルに置き換えます。
PKI認証タイプの設定
PKI認証を設定するには、まずアクセス ポリシーを作成する必要があります。 プロセス フローは以下のとおりです。
  • アクセス ポリシーの作成
    このタスクは、製品(Web インターフェースのみ)を使用して管理者が行います。各アクセス ポリシーには固有のテキスト コードを割り当てる必要があります。
  • パブリック キー/プライベート キー ペアと共にデジタル証明書を取得して、アクセス ポリシーに関連付ける
    PKIアクセス認証の場合、ユーザ アプリケーションはパブリック キーとプライベート キーの両方が含まれるデジタル証明書を取得する必要があります。 管理者はサード パーティの認証局(CA)、またはデジタル証明書をサポートするセキュリティ製品を利用してデジタル証明書を取得することができます。 CA SDM では、サーバ サイド ユーティリティを使用してデジタル証明書を生成することもできます。 このユーティリティは <NX_ROOT>/binディレクトリに配置されています。書式は以下のとおりです。
    pdm_pki - p policy_code [ - l certificate file] [ - f] [-h]
    • -p
      一意のポリシー コードを示します。
    • -f
      ユーティリティが新しい公開鍵で既存の公開鍵を置き換えられるようにします。
    • -l
      X509 V3 証明書に格納された公開鍵をロードします。
    • -h
      コマンド ライン ウィンドウにヘルプを表示します。
    サード パーティ、CA Technologies 、またはセキュリティ製品を利用してデジタル証明書を取得する場合は、CA SDM サーバと同じディレクトリにインポートしてからアクセス ポリシーに関連付けます。 ユーザ アプリケーションの管理者は、DER/ASN.1フォーマットのX509 V3証明書が含まれるデジタル証明書ファイルを取得する必要があります。
    また、証明書にはパブリック キー/プライベート キー ペアのパブリック キーのみが含まれている必要があります。 管理者は –l オプションを使用して、pdm_pki ユーティリティを呼び出し、証明書をロードします。 ユーティリティにより、証明書のロード、パブリック キーの抽出、パブリック キーのBASE64テキスト形式への変換が行われ、ポリシー コードで指定したアクセス ポリシーと共に保存されます。
    pdm_pki ユーティリティによってデジタル証明書が生成されてから、管理者は CA SDM で、–l オプションを使わずにコマンドを呼び出します。 すると、ユーティリティによってパブリック キー/プライベート キー ペア(RSA1024ビット キー)が生成されます。 パブリック キーはBASE64テキスト形式に変換され、ポリシー コードで指定されているアクセス ポリシーと共に保存されます。 X509 V3証明書も作成され、パブリック キーと共にほかの情報も保持されます(パス フェーズの初期設定はポリシー コード)。 最後に、X509 V3 証明書がプライベート キーと共に PKCS12 形式の標準証明書としてパッケージ化されます。 その後、
    policy_code
    .p12 というファイル名で保存されます。ファイル名はポリシー コードによって異なります。 このファイルはクライアントにエクスポートできます。
    アクセス ポリシーがすでに証明書のパブリック キーと関連付けられている場合、pdm_pki コマンドをコールする際に -f オプションを指定して、既存のパブリック キーを新しいパブリック キーで上書きする必要があります。
Webサービスへのログイン
PKI 認証が設定された Web サービスへのログイン プロセス フローは以下のとおりです。
プロセス
説明
電子証明書のロードおよびプライベート キーの抽出
デジタル証明書はユーザ側の安全なストレージに保存する必要があります。Web サービスへのログイン時にはこれが取得されて使用されます。
安全なストレージの例は以下のとおりです。
Windows証明書ストア
Java証明書ストア(java_keytoolユーティリティで管理)
証明書ストア(その他の CA Technologies セキュリティ製品によって作成)
ユーザ アプリケーションはユーザ環境に応じて、適切なAPIで電子証明書のロード、およびプライベート キーの抽出を行う必要があります。
プライベート キーによる平文のポリシー コードのデジタル シグネチャの作成
デジタル証明書から抽出されたプライベート キーは、ポリシー コードのデジタル シグネチャの生成に使用されます。 デジタル シグネチャを作成すると、プライベート キーを使用してテキストのダイジェストが暗号化されます。 ダイジェスト アルゴリズムはSHA1の標準形式、暗号化アルゴリズムはRSAの標準形式を使用する必要があります。 また、Web サービスにログインする前にバイナリ形式のデジタル シグネチャを BASE64 テキスト形式に変換する必要があります。 この情報をアーカイブするには、ユーザ環境に応じて適切なAPIをコールする必要があります。
Webサービス コールの呼び出し
ユーザ アプリケーションは、平文のポリシー コードおよびポリシー コードのBASE64テキスト形式のデジタル シグネチャを指定して、WebサービスのloginServiceManaged()メソッドを呼び出す必要があります。
返されるSIDの取得
アクセス リクエストが認証されると、平文のSIDが自動的に返されます。
SID が生成されると、Web サービス セッションとアクセス ポリシーが正常に結び付けられます。 ユーザ アプリケーションはこの SID を使用してほかの Web サービス メソッドを呼び出すことができます。また、Web サービスへのアクセスはすべてこのアクセス ポリシーによって制御、および管理されます。