設定およびその他の一般的なアクティビティ
参照のため、このトピックでは、Web サービスの保護に適用される共通のアクティビティについて説明します。
設定タスクの実行
SOAP セキュリティに関連するほとんどのタスクでは、まず以下のタスクを実行する必要があります。
これらのタスクは、"XML ツールの使用法" で説明しているいくつかのタスクの前提条件でもあります。
SSL/TLS 構成を作成する必要がある場合もあります。詳細は、インターシステムズの "TLS ガイド" を参照してください。
InterSystems IRIS が使用する信頼された証明書の用意
InterSystems IRIS は、信頼された証明書の独自のコレクションを使用して、着信 SOAP メッセージ (または XML ドキュメント) のユーザ証明書とシグニチャを検証します。また、発信 SOAP メッセージのコンテンツを暗号化するときまたは XML ドキュメントを暗号化するときにもこれらの証明書を使用します。このコレクションは、この InterSystems IRIS インストールのすべてのネームスペースで使用できます。このコレクションを作成するには、以下の 2 つのファイルを作成し、それらをシステム・マネージャのディレクトリに配置します。
特定の InterSystems IRIS 資格情報セットで使用する別のルート証明書を用意することができます。次のサブセクションを参照してください。
これらのファイルの作成に関する情報は、このドキュメントの対象ではありません。証明書の内容と証明書取り消しリストを規定する X.509 の詳細は、RFC5280 (https://www.ietf.org/rfc/rfc5280.txtOpens in a new tab) を参照してください。ファイル形式の一種である PEM エンコードの詳細は、RFC1421 (https://www.ietf.org/rfc/rfc1421.txtOpens in a new tab) を参照してください。
Caution:
これらの証明書は他のすべての証明書の信頼の基礎になるので、実稼働環境で使用する証明書は必ず信頼できるソースから取得してください。
このコレクションは、SSL では使用されません。
InterSystems IRIS 資格情報セットの作成と編集
このセクションでは、X.509 証明書のコンテナである InterSystems IRIS 資格情報セットを作成し、編集する方法について説明します。これには、以下の 2 つの一般的なシナリオがあります。
InterSystems IRIS 資格情報セットの作成
InterSystems IRIS 資格情報セットを作成する手順は以下のとおりです。
-
以下のファイルを取得します。
-
PEM でエンコードされた X.509 形式の個人の X.509 証明書
これは、所有している証明書または SOAP メッセージの交換相手のエンティティから取得した証明書のいずれかとなります。
-
(オプション) PEM でエンコードされた PKCS#1 形式の関連付けられている秘密鍵
これは、証明書を所有している場合にのみ適用されます。発信メッセージに署名しない場合、秘密鍵ファイルをロードする必要はありません。
-
(オプション) ルート証明書、つまりこの資格情報セットに使用する、PEM エンコード形式の信頼された CA X.509 証明書が含まれているファイル。
これらのファイルの作成に関する情報は、このドキュメントの対象ではありません。
-
管理ポータルで [システム管理]→[セキュリティ]→[X.509 証明書] を選択します。
-
[新規資格情報の作成] をクリックします。
-
以下の値を指定します。
-
[エイリアス] — この資格情報セットの識別に使用する文字列を指定します。これは一意にする必要があり、大文字と小文字は区別されます。このプロパティは必須です。
-
[X.509 証明書を含むファイル] — [参照] をクリックして、証明書ファイルに移動します。このプロパティは必須です。
-
[関連づけられた秘密鍵を含むファイル] — [参照] をクリックして、証明書ファイルに移動します。
-
[秘密鍵パスワード] および [秘密鍵パスワード(確認)] — 秘密鍵のパスワードを指定します。パスワードを指定しない場合は、資格情報セットを取得するときにパスワードを指定する必要があります。
これらのフィールドは、[関連づけられた秘密鍵を含むファイル] の値を指定した場合にのみ表示されます。
-
[信頼された証明書機関 X.509 証明書を含むファイル] — この資格情報セットにより信頼される CA の X.509 証明書のパスおよびファイル名。証明書は PEM 形式にする必要があります。このパスは、絶対パス、または管理者ディレクトリを基準とした相対パスで指定します。
例外として、この資格情報セットを使用する場合、InterSystems IRIS は、前述したように、iris.cer ではなく、この信頼された証明書を使用します。この例外は、デジタル・シグニチャにメッセージ内のバイナリ・セキュリティ・トークンへの直接参照が含まれている場合です。この場合、シグニチャを検証するために必要な公開鍵がメッセージに含まれているため、InterSystems IRIS はこの資格情報セットを検索しません。InterSystems IRIS は代わりに、iris.cer に含まれている信頼された証明書を使用します。
-
[許可されたユーザ] — この資格情報セットを使用できる InterSystems IRIS ユーザのコンマ区切りリストを指定します。このプロパティが NULL の場合、あらゆるユーザがこの資格情報セットを使用できます。
-
[Intended peer(s)] — この資格情報セットを使用できるシステムの DNS 名の、コンマ区切りのリストを指定します。この資格情報セットに対する相手の有効性は、ユーザのコードで資格情報オブジェクトの CheckPeerName() メソッドを使用して確認する必要があります。
-
[保存] をクリックします。
この操作によって、証明書ファイルと秘密鍵ファイル (存在する場合) の両方がデータベースにコピーされます。[信頼された証明書機関 X.509 証明書を含むファイル] を指定した場合、そのファイルはデータベースにコピーされません。
管理ポータルを使用するのではなく、%SYS.X509CredentialsOpens in a new tab クラスのメソッドを使用できます。以下はその例です。
Set credset=##class(%SYS.X509Credentials).%New()
Set credset.Alias="MyCred"
Do credset.LoadCertificate("c:\mycertbase64.cer")
Do credset.LoadPrivateKey("c:\mycertbase64.key")
Set sc=credset.Save()
If sc Do $system.Status.DisplayError(sc)
Note:
このデータにアクセスするために、標準のオブジェクトと SQL メソッドは使用しないでください。Save()、Delete()、および LoadPrivateKey() メソッドの使用には、%Admin_Secure:USE 特権が必要です。
詳細は、%SYS.X509CredentialsOpens in a new tab のクラス・リファレンスを参照してください。
InterSystems IRIS 資格情報セットの編集
InterSystems IRIS 資格情報セットを作成したら、次のように編集できます。
-
管理ポータルで [システム管理]→[セキュリティ]→[X.509 証明書] を選択します。
-
資格情報セットのテーブルでは、エイリアスの列にある値が識別子として機能します。編集する資格情報セットで [編集] をクリックします。
-
必要に応じて編集します。これらのフィールドの詳細は、前のセクションを参照してください。
-
[保存] をクリックすると、変更内容が保存されます。
資格情報セットのエイリアスと証明書はいずれも変更できません。資格情報に関連付けた秘密鍵の追加、変更、および削除も不可能です。このような変更を加えるには、新しい資格情報セットを作成します。
プログラムによる資格情報セットの取得
暗号化または署名を実行する際は、使用する証明書を指定する必要があります。そのためには、InterSystems IRIS 資格情報セットを選択します。
ウィザードを使用してポリシーを作成する場合、ウィザード内で資格情報セットを選択するか、または Web サービスあるいは Web クライアント内でプログラムによって資格情報セットを取得して使用できます。WS-Security ヘッダを手動で作成する場合は、資格情報セットをプログラムで取得して使用する必要があります。
参考のため、このセクションでは、以下の一般的なアクティビティについて説明します。
格納された資格情報セットの取得
%SYS.X509CredentialsOpens in a new tab のインスタンスを取得するには、GetByAlias() クラス・メソッドを呼び出します。このメソッドは、証明書およびその他の情報を格納している InterSystems IRIS 資格情報セットを返します。以下はその例です。
set credset=##class(%SYS.X509Credentials).GetByAlias(alias,password)
-
alias は、証明書のエイリアスです。
-
pwd は、秘密鍵パスワードです。これは、証明書を所有している場合にのみ適用されます。これは、関連付けられている秘密鍵が暗号化されていて、その秘密鍵のファイルをロードしたときにパスワードをロードしなかった場合にのみ必要です。
証明書を所有していない場合、いずれの形式でも秘密鍵にはアクセスできません。
パスワード引数を指定しない場合、%SYS.X509CredentialsOpens in a new tab インスタンスは秘密鍵にアクセスできないので、暗号化のみで使用できます。
このメソッドを実行するには、当該の資格情報セットの OwnerList に記載されたユーザとしてログインするか、OwnerList が NULL である必要があります。
暗号化に証明書を使用する場合、FindByField()、GetBySubjectKeyIdentifier()、GetByThumbprint() など、他のクラス・メソッドを使用して、InterSystems IRIS 資格情報セットを取得できます。%SYS.X509CredentialsOpens in a new tab については、クラス・ドキュメントを参照してください。GetByAlias() は、秘密鍵へのアクセスを提供する唯一のメソッドであるため、このクラスで署名用の証明書を取得する際に使用できる唯一のメソッドです。
クライアントで SSL/TLS 構成を使用するように指定する方法
Web サービスが HTTP over SSL/TLS (HTTPS) の使用を必要とする場合、Web クライアントは、適切な InterSystems IRIS SSL/TLS 構成を使用する必要があります。
ウィザードを使用してポリシーを作成する場合、ウィザード内で SSL/TLS 構成を選択するか、Web サービスまたは Web クライアント内で使用する構成をプログラムによって指定できます。WS-Security ヘッダを手動で作成する場合、使用する構成をプログラムで指定する必要があります。
使用する SSL/TLS 構成を指定するには、Web クライアントの SSLConfiguration プロパティを SSL/TLS 構成名に等しくなるように設定します。以下はその例です。
set client=##class(proxyclient.classname).%New()
set client.SSLConfiguration="mysslconfig"
//invoke web method of client
プロキシ・サーバ経由でクライアントを接続している場合は、Web クライアントで HttpProxySSLConnect プロパティを 1 に設定する必要もあります。