トピック:
鍵と証明書はデータのデジタル署名および検証に使用され、ネットワーク接続において認証、整合性およびプライバシを実現できます。
秘密鍵、デジタル証明書および信頼できるCA証明書は、キーストアに格納されます。この項では、Oracle Fusion Middlewareで使用可能なキーストアについて説明します。内容は次のとおりです。
Oracle Fusion Middlewareでは、鍵と証明書用に様々なタイプのキーストアが用意されています。
各種キーストアを表7-1に示します。
表7-1 Oracle Fusion Middlewareのキーストアのタイプ
キーストア・タイプ | 説明 | 保護メカニズム |
---|---|---|
Oracleウォレット |
Oracleウォレット |
パスワードまたは自動ログイン |
JKS |
Javaキーストア |
パスワード |
KSS |
OPSSキーストア・サービス |
パスワードまたはポリシー |
Oracleウォレットは、証明書、信頼できる証明書、証明書リクエスト、秘密鍵などの資格証明を格納するコンテナです。Oracle Internet DirectoryなどのLDAPディレクトリやファイル・システムにOracleウォレットを格納できます。Oracleウォレットは、パスワードで保護することも自動ログインにもできます。
ウォレットを作成すると、次のことができます。
ウォレットに自己署名付き証明書を自動移入できます。このようなウォレットはテスト・ウォレットと呼ばれ、通常、開発またはテスト・フェーズで使用されます。
認証局(CA)から署名された証明書を返送してもらえるように、証明書リクエストを生成することができます。CAが証明書を返送すると、その証明書はウォレットにインポートされます。このようなウォレットは、サード・パーティのウォレットと呼ばれます。
テスト・ウォレットまたはサード・パーティのウォレットはパスワードで保護することも、パスワードが不要なように構成することもできます。後者は、自動ログイン・ウォレットと呼ばれています。
OracleウォレットはOracle HTTP Serverで使用されます。Oracle Fusion Middleware 12c (12.2.1.2)の時点では、キーストア・サービスで使用できる中央記憶域および統合管理を利用して、該当するサービスのエクスポート、インポートおよび同期化機能により、ウォレットとその内容を管理できます。
関連項目:
キーストア・サービスの詳細は、「キーストア・サービス(KSS)キーストアについて」を参照してください。
importKeyStore
、exportKeyStore
およびsyncKeyStore
の各コマンドの詳細は、『Oracle Fusion Middlewareインフラストラクチャ・セキュリティWLSTコマンド・リファレンス』の「インフラストラクチャ・セキュリティ・カスタムWLSTコマンド」を参照してください。
JKSキーストアは、JavaキーストアのデフォルトのJDK実装です。Java EEアプリケーションはJKSベースのキーストアおよびトラストストアを使用できます。
Oracle Fusion Middlewareでは、WLST、orapkiおよびFusion Middleware Controlがキーストア操作のオプションとして用意されています。
WLST: JKSキーストアおよびOracleウォレット用のコマンド行インタフェース
orapki: ウォレット用のコマンド行ツール
Fusion Middleware Control: グラフィカル・ユーザー・インタフェース
DERでエンコードされた証明書のインポートについて
DERでエンコードされた証明書または信頼できる証明書をOracleウォレットにインポートするときには、Fusion Middleware ControlもWLST
コマンド行ツールも使用できません。かわりに、orapki
コマンド行ツールを使用してください。
WLSTでもFusion Middleware Controlでも作成されていないキーストアの使用
注意:
これは、同じ場所に配置される環境にのみ当てはまります。
Oracleウォレットがorapki
などのツールを使用して作成された場合、使用前にインポートする必要があります。特にOracle HTTP Serverでは、ウォレットがorapki
を使用して作成された場合、これをFusion Middleware Controlで表示または管理するには、先にFusion Middleware ControlまたはWLST importKeyStore
コマンドを使用してインポートする必要があります。詳細は、『Oracle Fusion Middleware Oracle Platform Security Servicesによるアプリケーションの保護』のキーストア・のインポートに関する項を参照してください。
ファイル・システムへのキーストアのコピーはサポートされない
注意:
これは、同じ場所に配置される環境にのみ当てはまります。
ファイル・システム上の任意のディレクトリにキーストアを直接作成、名前変更、またはコピーすることはサポートされていません。使用する既存のキーストアまたはウォレットを、Fusion Middleware ControlまたはWLSTユーティリティを使用してインポートする必要があります。
スタンドアロン環境でのウォレットの管理
スタンドアロンOHSインストールなどのスタンドアロン環境では、orapkiコマンドをウォレット管理に使用します。詳細は、『Oracle Fusion Middleware Oracle HTTP Serverの管理』のスタンドアロン・モードでのSSLの構成に関する項を参照してください。
自己署名付き証明書に関するJDK7の要件
JDK7では、SSL構成で使用する自己署名付きCA証明書にkeyUsage拡張機能が必要です。詳細は、「JDK7の証明書ではkeyUsage拡張機能が必要」を参照してください。
Oracle Fusion Middlewareでは、キーストアおよびOracleウォレットを作成および管理したり、そこに格納されたオブジェクトを操作するWLST
スクリプトのセットが用意されています。
コマンド行インタフェースの起動方法の詳細は、「コマンド行インタフェースの起動方法」を参照してください。
SSL用のWLST
コマンドを実行する場合は、Oracle共通ホームからWLST
スクリプトを起動する必要があります。
これにより、WLSTシェルが起動します。ユーザー名、パスワードおよび接続URLを指定して、実行中のOracle WebLogic Serverインスタンスに接続します。接続すると、次の項で説明するようにSSL関連のWLSTコマンドを実行できるようになります。
注意:
SSL関連のすべてのWLSTコマンドでは、前述の場所でのみスクリプトを起動する必要があります。
次に基本的な実行シーケンスを示します。
./wlst.sh connect('weblogic','weblogic1') --- To connect to WebLogic Admin Server editCustom() startEdit() wlstCommand('param1', 'param2', 'param3', 'param4') save() activate()
ここで、wlstCommand
は、実際のWLSTコマンドです。たとえば、OHSウォレットを作成するには:
connect('weblogic','weblogic1') --- For connecting to WLS Admin Server editCustom() startEdit() createWallet('ohs1', 'ohs1', 'ohs', 'testwallet') save() activate()
このコマンドでは、最初の2つのパラメータはともにコンポーネント・インスタンス名を参照し(それぞれのパラメータがOracleインスタンスおよびコンポーネント・インスタンスを参照する以前のリリースとは異なり、このリリースでは両方のパラメータがコンポーネント・インスタンスを参照します)、3番目のパラメータはコンポーネントで、4番目のパラメータはウォレット名です。
次にcreateWallet
の出力例を示します。
wls:/base_domain/serverConfig> editCustom() Location changed to edit custom tree. This is a writable tree with No root. For more help, use help('editCustom') wls:/base_domain/editCustom> startEdit() Starting an edit session ... Started edit session, please be sure to save and activate your changes once you are done. wls:/base_domain/editCustom> createWallet('ohs1','ohs1','ohs','testwallet','Welcome1') Wallet created wls:/base_domain/editCustom> save() Saving all your changes ... Saved all your changes successfully. wls:/base_domain/editCustom> activate() Activating all your changes, this may take a while ... The edit lock associated with this edit session is released once the activation is completed. Activation completed
キーストア・サービスでは、Secure Sockets Layer (SSL)、メッセージ・セキュリティ、暗号化、特別な証明書を必要とするその他のタスク用の鍵および証明書を管理できます。
12c (12.2.1)以降、Fusion Middlewareでは、同じ場所に配置されるシナリオでのウォレットおよび証明書の管理にはキーストア・サービス(KSS)が推奨されます。KSSのキーストア管理の詳細は、『Oracle Fusion Middleware Oracle Platform Security Servicesによるアプリケーションの保護』の「鍵と証明書の管理」を参照してください。
Oracleウォレットには、様々なアプリケーション用の証明書を作成、保持および削除できる全種類の管理機能が用意されています。
注意:
スタンドアロン・コンテキスト(たとえば、スタンドアロンOracle HTTP Server)でのウォレット構成については、「orapki」を参照してください。
この項では、次の項目について説明します。
この説明では、コンポーネントがWebLogicドメインにインストールされていることを前提としています。
次の各トピックでは、各種ウォレットとその推奨事項、規則および要件について説明します。
この項では、次の項目について説明します。
作成できるウォレットは次の2種類です。
自動ログイン・ウォレット
これは、PKCS#12ウォレットの不明瞭化された形式です。実行時にパスワードを入力せずに、サービスおよびアプリケーションにPKIベースでアクセスできます。ウォレットへの追加、変更、削除の際にも、パスワードは不要です。ファイル・システム権限では、ウォレットの自動ログインに必要なセキュリティが提供されます。
注意:
以前のリリースでは、パスワード付きのウォレットを作成してから自動ログインを有効にして不明瞭化されたウォレットを作成できました。12c (12.2.1.1)では、自動ログイン・ウォレットはパスワードなしで作成されます。そのようなウォレットを使用する場合、パスワードを指定する必要はありません。
パスワードのない自動ログインのウォレットを使用している場合、ldapbind
コマンドで空値のパスワード("")を指定します。
古いタイプのウォレット(リリース10gのウォレットなど)は、引き続き以前と同様に機能します。
パスワードで保護されたウォレット
名前のとおり、このタイプのウォレットはパスワードで保護されます。ウォレットのコンテンツに対する追加、変更または削除には、パスワードが必要です。
パスワードで保護されたウォレットが作成されるたびに、自動ログイン・ウォレットが自動的に生成されます。ただし、この自動ログイン・ウォレットは、前の項目で説明した、ユーザーが作成した自動ログイン・ウォレットとは異なります。ユーザーが作成したウォレットは構成時にパスワードなしで更新することができますが、自動的に生成される自動ログイン・ウォレットはユーザーが直接更新できない読取り専用のウォレットです。ウォレットは、自動ログイン・ウォレットを再度生成するときに、パスワードで保護されたファイルを使用して(パスワードを入力して)変更する必要があります。
このシステム生成の自動ログイン・ウォレットの目的は、実行時にパスワードなしでサービスおよびアプリケーションにPKIベースのアクセスを提供することですが、構成時にはパスワードが必要です。
自己署名付きウォレットには、発行者がサブジェクトと同じである証明書が格納されます。これらの証明書は、一般的には信頼性がさほど優先されないイントラネット環境内で作成されます。自己署名付きウォレットの発行者はそれぞれ一意であるため、複数のコンポーネントおよびウォレットを含む環境では信頼性管理タスクはn倍に増加します。
Fusion Middleware Controlを使用して作成した場合、自己署名付きウォレットは5年間有効です。
サード・パーティのウォレットには、既知の認証局(CA)によって発行された証明書が含まれています。機能およびセキュリティは自己署名付きウォレットと同じですが、サード・パーティの証明書は、発行者がよく知られており、多くのクライアントから信頼されているので、信頼性が向上します。
自己署名付きウォレットとサード・パーティのウォレットの違い
機能およびセキュリティの観点からは、自己署名証明書はサード・パーティで発行された証明書と同等です。唯一の異なる点は、自己署名証明書は信頼性がないことです。
ウォレットはそれぞれ一意のアイデンティティを示すため、コンポーネント・インスタンス間ではウォレットを共有しないことをお薦めします。
ただし、コンポーネント・インスタンスのクラスタを含む環境は例外です。この場合はウォレットを共有してかまいません。
ウォレットを簡単に共有するための管理ツールまたはインタフェースは用意されていません。ただし、あるインスタンスからウォレットをエクスポートして別のインスタンスにインポートすることはできます。ウォレットのエクスポートおよびインポートの詳細は、「一般的なウォレットの操作」を参照してください。
Oracleウォレットの場合は、次の命名規則に従います。
256文字を超える名前は使用しないでください。
ウォレット名には、次のいずれの文字も使用しないでください。
| ; , ! @ # $ ( ) < > / \ " ' ` ~ { } [ ] = + & ^ space tab
注意:
オペレーティング・システムでこれらの文字をサポートしていても、このルールは守ってください。
ウォレット名には、ASCII以外の文字は使用しないでください。
また、ディレクトリ名およびファイル名に関するオペレーティング・システム固有のルールにも従ってください。
LDAPディレクトリでのデータの処理方法により、ウォレット名では大文字と小文字が区別されません。
そのため、ウォレット名は大文字/小文字を区別せずに使用することをお薦めします(可能であれば、すべて小文字を使用します)。たとえば、UPPER
という名前のウォレットを作成した場合、upper
という名前のウォレットを別に作成しないでください。作成すると、ウォレットの管理作業時に混乱を引き起こす可能性があります。
JDK7では、SSL構成で使用する自己署名付きCA証明書にkeyUsage
拡張機能が必要です。
詳細は、「JDK7の証明書ではkeyUsage拡張機能が必要」を参照してください。
このトピックでは、Oracleウォレットの一般的なライフサイクル・イベントについて説明します。
ウォレットが作成されます。ウォレットは直接作成するか、ファイル・システムからウォレット・ファイルをインポートすることによって作成できます。
使用可能なウォレットのリストが表示され、特定のウォレットが選択されて更新されます。
ウォレットが更新または削除されます。パスワードで保護されたウォレットの更新操作では、ウォレット・パスワードを入力する必要があります。
パスワードで保護されたウォレットでは、ウォレット・パスワードは変更できます。
ウォレットは削除できます。
ウォレットはエクスポートおよびインポートできます。
注意:
Oracle Fusion Middleware 12c (12.2.1.2)の時点では、キーストア・サービスで使用できる中央記憶域および統合コンソールを利用して、該当するサービスのエクスポート、インポートおよび同期化機能により、ウォレットとその内容を管理できます。importKeyStore
、exportKeyStore
およびsyncKeyStore
の各コマンドの詳細は、『Oracle Fusion Middlewareインフラストラクチャ・セキュリティWLSTコマンド・リファレンス』の「インフラストラクチャ・セキュリティ・カスタムWLSTコマンド」を参照してください。
様々なウォレット管理機能を実行するために必要な手順について、次の手順に従います。
パスワードで保護されたウォレット(ewallet.p12およびcwallet.sso)を作成するには、次のようにします。
orapki wallet create -wallet wallet_location -auto_login
自動ログイン・ウォレット(cwallet.ssoのみ)を作成するには、次のようにします。
orapki wallet create -wallet wallet_location -auto_login_only
orapkiユーティリティを使用したウォレットの作成の詳細は、「orapkiを使用したOracleウォレットの作成と表示」を参照してください。
orapkiを使用して自己署名付き証明書を含むウォレットを作成するには、次のようにします。
orapki wallet add –wallet wallet_location –dn user_dn -keysize 512|1024|2048|4096|8192|16384 -self_signed [-pwd][-auto_login_only]
ECC鍵を使用して自己署名付き証明書を含むウォレットを作成するには、次のようにします。
orapki wallet add -wallet wallet_location -dn user_dn -sign_alg signing_alg -asym_alg ECC -eccurve curve_type
ECC証明書リクエストのOracleウォレットへの追加の詳細は、「ECC証明書リクエストのOracleウォレットへの追加」を参照してください。
このトピックでは、ウォレットの作成から始まる、証明書の一般的なライフサイクル・イベントについて説明します。
空のウォレット(証明書リクエストが格納されていないウォレット)を作成します。
証明書リクエストをウォレットに追加します。
証明書リクエストをエクスポートします。
証明書リクエストを使用して、対応する証明書を取得します。
信頼できる証明書をインポートします。
証明書をインポートします。
これらの手順は、サード・パーティの信頼できる証明書を含むウォレットの生成に必要です。このタスクの詳細は、『Oracle Fusion Middleware Oracle Platform Security Servicesによるアプリケーションの保護』のデモCA署名証明書の置換えに関する項を参照してください。
様々な証明書管理機能を実行するために必要な手順について、次の手順に従います。
Oracleウォレットに証明書署名リクエストを追加するには、次のようにします。
orapki wallet add -wallet wallet_location -dn user_dn -keysize certificate_key_size -addext_ski -addext_ku extension_key_usage -addext_basic_cons CA -pathLen number -addext_san DNS [-pwd] [-auto_login_only]
注意:
user_dn
が参照されているすべてのコマンドで、UNIXの場合は一重引用符を、Windowsの場合は二重引用符を使用します。
orapkiユーティリティを使用した証明書リクエストのOracleウォレットへの追加の詳細は、「orapkiを使用した証明書と証明書リクエストのOracleウォレットへの追加」を参照してください。
証明書をOracleウォレットからエクスポートするには、次のようにします。
orapki wallet export -wallet wallet_location -dn certificate_dn -cert certificate_filename -issuer_dn dn_of_issuer –serial_num serial_number_of_certificate
orapkiユーティリティを使用した証明書のOracleウォレットからのエクスポートの詳細は、「orapkiを使用した証明書と証明書リクエストのOracleウォレットからのエクスポート」を参照してください。
証明書リクエストをOracleウォレットからエクスポートするには:
orapki wallet export -wallet wallet_location -dn certificate_request_dn -request certificate_request_filename [-pwd]
orapkiユーティリティを使用した証明書リクエストのOracleウォレットからのエクスポートの詳細は、「orapkiを使用した証明書と証明書リクエストのOracleウォレットからのエクスポート」を参照してください。
注意:
信頼できる証明書と、ユーザー証明書について適切な信頼できるルート認証局証明書を識別する方法の詳細は、My Oracle Supportのサポート・ドキュメント1368940.1を参照してください。My Oracle Supportにはhttps://support.oracle.com/からアクセスできます。
信頼できる証明書をウォレットにインポートするには、次のようにします。
orapki wallet add -wallet wallet_location -trusted_cert -cert certificate_location [-pwd] [-auto_login_only]
orapkiユーティリティを使用した信頼できる証明書のOracleウォレットへのインポートの詳細は、「orapkiを使用した証明書と証明書リクエストのOracleウォレットへの追加」を参照してください。
ユーザー証明書をOracleウォレットに追加するには:
orapki wallet add -wallet wallet_location -user_cert -cert certificate_location [-pwd] [auto_login_only]
orapkiユーティリティを使用した信頼できる証明書のOracleウォレットへのインポートの詳細は、「orapkiを使用した証明書と証明書リクエストのOracleウォレットへの追加」を参照してください。
テスト用の署名付き証明書を作成するには:
orapki cert create -wallet wallet_location –request certificate_request_location -cert certificate_location -validity number_of_days [-summary]
orapkiユーティリティを使用した署名付き証明書の作成の詳細は、「テスト用の署名付き証明書の作成」を参照してください。
次の各トピックでは、ウォレットおよび証明書の保守について詳しく説明します。
この項ではウォレットの場所およびメンテナンスの詳細について説明します。
Oracle HTTP Serverウォレットのルート・ディレクトリ
Oracle HTTP Serverウォレットのルート・ディレクトリは、次のとおりです。
$DOMAIN_HOME/config/fmwconfig/components/OHS
/ohs_instance_name
/keystores
このルート・ディレクトリには、ウォレットの名前がついたサブディレクトリが入ります。それぞれのサブディレクトリには実際のウォレット・ファイルが格納されます。
たとえば、ohs_instance1
にohs1
およびohs2
という2つのウォレットがあるとします。ohs1
はパスワードで保護されたウォレット、ohs2
は自動ログインのみのウォレットです。サンプルの構造は、次のようになります。
$DOMAIN_HOME/config/fmwconfig/components/OHS/ohs_instance1 /keystores/ohs1/cwallet.sso $DOMAIN_HOME/config/fmwconfig/components/OHS/ohs_instance1 /keystores/ohs1/ewallet.p12 $DOMAIN_HOME/config/fmwconfig/components/OHS/ohs_instance1 /keystores/ohs2/cwallet.sso
一般的には、ウォレットのDNはウォレットが使用されるサーバーのホスト名に基づいています。
たとえば、ウォレットがOracle HTTP Serverのmy.example.comで作成されている場合、このOracle HTTP Serverウォレットの証明書のDNは「CN=my.example.com,O=organization name
」のようになります。
ほとんどのクライアントはSSLハンドシェイク時にホスト名を検証するため、この同期は必須です。
ホスト名の検証を実行するクライアントには、WebブラウザやOracle HTTPClientなどがあります。サーバーのホスト名が証明書のDNと一致しない場合、次のように処理されます。
明確な警告が表示されます(ブラウザ・クライアントの場合)。
SSLハンドシェイクが失敗する場合があります(その他のクライアントの場合)。
クライアントからリクエストを受信しているサーバー上にウォレットがある場合、このサーバーのホスト名が変更されるたびに、ウォレット内の証明書も更新する必要があります。
これは、新しいDN(新しいホスト名に基づく)で新しい証明書をリクエストすることで実行できます。
本番ウォレットにインポートするための新しい証明書をリクエストできます。
手順は次のとおりです。
これらの操作の詳細は、「一般的なウォレットの操作」を参照してください。
自己署名ウォレットに新しい証明書を追加するには、証明書の新しいウォレットを作成する必要があります。
手順は次のとおりです。
これらの操作の詳細は、「一般的なウォレットの操作」を参照してください。
本番ウォレットの場合も自己署名付きウォレットの場合も、新しい証明書がウォレットで使用可能になったら、その証明書を信頼する必要があるすべてのコンポーネントのウォレットに確実にインポートする必要があります。たとえば、Oracle WebLogic ServerでSSLが有効な場合、ホスト名の変更によってOracle WebLogic Serverの証明書が変更されたら、新しい証明書をOracle HTTP Serverウォレットにインポートして、新しいピアを信頼できるようにする必要があります。
自己署名付きウォレットをサード・パーティのウォレットに変換できます。サード・パーティのウォレットには、信頼できる認証局(CA)が署名した証明書が含まれます。
「CN=my.example.com,O=example
」というDNの証明書が格納された、MYWallet
という自己署名付きウォレットがあるとすると、次の手順を実行して、これをサード・パーティのウォレットに変換します。
これらの操作の詳細は、「一般的なウォレットの操作」を参照してください。
ウォレット内の期限が切れそうな証明書を実際に期限が切れる前に置き換えて、アプリケーションの停止時間を回避または短縮します。
期限が切れそうな証明書を置き換える手順は次のとおりです。
これらの操作の詳細は、「一般的なウォレットの操作」を参照してください。