この章では、キーストア・サービスを使用してキーおよび証明書を管理する方法について説明します。
OPSSキーストア・サービスでは、SSL、メッセージ・セキュリティ、暗号化および関連タスク用のキーおよび証明書を管理できます。キーストア・サービスは、キー、証明書およびその他のアーティファクトを含むキーストアを作成および管理するために使用します。
キーストア・サービスで作成される各キーストアは、アプリケーション・ストライプおよびキーストアによって一意に参照されます。
アプリケーション・ストライプ
キーストア内に作成されたキーおよび証明書はアプリケーション・ストライプまたは製品内に存在し、ドメイン内の各ストライプには一意の名前が付けられます。
キーストア
キーストア名はアプリケーション・ストライプ内で一意です。各製品またはアプリケーションは、そのアプリケーション・ストライプ内に複数のキーストアを作成できます。
したがって、(appstripe1, keystoreA)
は一意であり、(appstripe1, keystoreB)
とも、(appstripe2, keystoreA)
とも区別されます。
同様に、各キーストアは、キーストア内で一意の別名によって参照される次のエントリを含むことができます。
非対称鍵 - これには公開鍵と対応する秘密鍵が含まれ、通常はSSL通信に使用されます。公開鍵は証明書でラップされています。
対称鍵 - これらのキーは通常、暗号化に使用されます。
信頼できる証明書 - これらの証明書は通常、SSLピアとの信頼を構築するために使用されます。
キーストア・サービスでは、次の2つのタイプのキーストアを作成できます。
権限によってのみ保護されるキーストア
このタイプのキーストアは認可ポリシーによって保護され、ランタイム・コードによるアクセスはコード・ソース権限によって保護されます。バックエンドのキー・データは、ドメインごとに一意に生成された暗号化鍵を使用して暗号化されます。
権限とパスワードの両方によって保護されるキーストア
このタイプのキーストアは、認可ポリシーと、キーストアまたはキー・パスワードあるいはその両方によって保護されます。ランタイム・コードがこれらにアクセスするには、コード・ソース権限およびキーストアとキー・パスワード(キーストア・パスワードと異なる場合)へのアクセスの両方が必要になります。バックエンドのキー・データは、Password Based Encryption (PBE)によりキーストア/キー・パスワードを使用して暗号化されます。
アプリケーションには、権限によって保護されたキーストアを使用することをお薦めします。ただし、高度なセキュリティが必要であり、パスワードの管理をいとわない場合は、パスワードと権限の両方によって保護されるキーストアの使用を検討してください。
注意: キーストア・サービスでは、キーストアまたはキーに対するパスワードは管理されません。製品またはアプリケーションで、適切なリポジトリ内でパスワードを管理する必要があります。たとえば、アプリケーションに対するパスワードを資格証明ストアに格納することを選択できます。 |
各アプリケーションではSSL用に複数のキーストアを構成できますが、すべての製品およびアプリケーションに対して、信頼管理用のドメイン・レベルのトラスト・ストアが事前に構成されています。
このドメイン・トラスト・ストアには、一般的に知られているほとんどのサード・パーティ認証局(CA)の信頼できる証明書、およびキーストア・サービスに構成されているデモCAの信頼できる証明書が含まれます。各アプリケーションではSSLに対してこのドメイン・トラスト・ストアを指定でき、このタスク用に専用のトラスト・ストアを作成する必要はありません。
一方向SSL
一方向SSLでは、アプリケーションはドメイン・トラスト・ストアを使用するだけで、キーストアやトラスト・ストアを作成する必要はありません。
双方向SSL
双方向SSLについては、アプリケーションは自身のアイデンティティ証明書を含むキーストアのみを作成する必要があり、信頼にはドメイン・トラスト・ストアを使用します。
注意: ドメイン・トラスト・ストアは、ドメイン内のすべての製品およびアプリケーションに対する共有ストアです。ドメイン内の他のすべての製品に影響する可能性があるため、信頼の追加または削除に関する決定は慎重に行う必要があります。 カスタム・トラスト・ストアの作成は、ドメイン・トラスト・ストアで製品の信頼管理要件を満たせない場合にのみ検討してください。 |
キーストア・サービスでは、キーストアの作成と管理、証明書のエクスポート、キー・ペアの生成などのキーストア操作に、専用のコマンド・セットを使用します。これらのコマンドの使用方法は似ていますが、他のOPSSコマンドとは異なります。
キーストア・サービス・コマンド・セットを使用するための開始点はgetOpssService
です。これは次の操作を可能にするOPSSサービス・コマンド・オブジェクトを取得します。
サービスに対してコマンドを実行する
コマンド・ヘルプを表示する
一般的な構文は次のとおりです。
variable = getOpssService(name='service_name')
説明
variable
はコマンド・オブジェクトを格納します。
サービス名は、コマンド・オブジェクトを取得する対象のサービスを指します。有効な値は、KeyStoreService
のみです。
例:
svc = getOpssService(name='KeyStoreService')
キーストア・サービス・コマンドに対するヘルプを表示するには、第11.2項に示したように、サービス・コマンド・オブジェクトの取得から始めます。このオブジェクトを、ヘルプ・コマンドおよび当該のコマンドとともに使用します。
すべてのキーストア・サービス・コマンドのリストを取得するには、次のように入力します。
svc.help()
特定のコマンドに対するヘルプを表示するには、次のように入力します。
svc.help('command-name')
たとえば次のように入力すると、exportKeyStore
コマンドに対するヘルプが表示されます。
svc.help('exportKeyStore')
この項では、表11-1に示すキーストア・サービス・コマンドのリファレンスを提供します。
表11-1 キーストア・サービス・コマンド
コマンド | 説明 |
---|---|
キーに対するパスワードを変更します。 |
|
キーストアに対するパスワードを変更します。 |
|
新しいキーストアを作成します。 |
|
指定されたキーストアを削除します。 |
|
キーストア・エントリを削除します。 |
|
キーストアをファイルにエクスポートします。 |
|
証明書、信頼できる証明書または証明書チェーンをエクスポートします。 |
|
証明書リクエストを生成してエクスポートします。 |
|
キーストア内にキー・ペアを生成します。 |
|
キーストア内に対称鍵を生成します。 |
|
証明書または信頼できる証明書に関する情報を取得します。 |
|
秘密鍵のプロパティを取得します。 |
|
キーストアをファイルからインポートします。 |
|
証明書、信頼できる証明書または証明書チェーンをインポートします。 |
|
期限が切れる証明書をリストし、オプションで更新します。 |
|
キーストア内の別名をリストします。 |
|
ストライプ内のキーストアをリストします。 |
説明
キーに対するパスワードを変更します。
構文
svc.changeKeyPassword(appStripe='stripe', name='keystore', password='password', alias='alias', currentkeypassword='currentkeypassword', newkeypassword='newkeypassword')
説明:
svc= getOpssService()へのコールによって取得したサービス・コマンド・オブジェクト。
appStripe= キーストアを含むストライプの名前。
name= キーストアの名前。
password= キーストアのパスワード。
alias= パスワードが変更されるキー・エントリの別名。
currentkeypassword= キーの現在のパスワード。
newkeypassword= キーの新しいパスワード。
例
svc.changeKeyPassword(appStripe='system', name='keystore', password='password', alias='orakey', currentkeypassword='currentkeypassword', newkeypassword='newkeypassword')
説明
キーストアに対するパスワードを変更します。
構文
svc.changeKeyStorePassword(appStripe='stripe', name='keystore', currentpassword='currentpassword', newpassword='newpassword')
説明:
svc= getOpssService()へのコールによって取得したサービス・コマンド・オブジェクト。
appStripe= キーストアを含むストライプの名前。
name= パスワードが変更されるキーストアの名前。
currentpassword= キーストアの現在のパスワード。
newpassword= キーストアの新しいパスワード。
例
svc.changeKeyStorePassword(appStripe='system', name='keystore2', currentpassword='currentpassword', newpassword='newpassword')
説明
新しいキーストアを作成します。
構文
svc.createKeyStore(appStripe='stripe', name='keystore', password='password',permission=true|false)
説明:
svc= getOpssService()へのコールによって取得したサービス・コマンド・オブジェクト。
appStripe= その中にキーストアが作成されるストライプの名前。
name= キーストアの名前。
password= キーストアのパスワード。
permission= キーストアが権限によってのみ保護される場合はtrue、権限とパスワードの両方によって保護される場合はfalse。
例
svc.createKeyStore(appStripe='system', name='keystore1', password='password',permission=true)
説明
指定されたキーストアを削除します。
構文
svc.deleteKeyStore(appStripe='stripe', name='keystore', password='password')
説明:
svc= getOpssService()へのコールによって取得したサービス・コマンド・オブジェクト。
appStripe= その中のキーストアが削除されるストライプの名前。
name= 削除するキーストアの名前。
password= 削除するキーストアのパスワード。
例
svc.deleteKeyStore(appStripe='system', name='keystore1', password='password')
説明
キーストア・エントリを削除します。
構文
svc.deleteKeyStoreEntry(appStripe='stripe', name='keystore', password='password', alias='alias', keypassword='keypassword')
説明:
svc= getOpssService()へのコールによって取得したサービス・コマンド・オブジェクト。
appStripe= キーストアを含むストライプの名前。
name= キーストアの名前。
password= キーストアのパスワード。
alias= 削除するエントリの別名。
keypassword= 削除するエントリのキー・パスワード。
例
svc.deleteKeyStoreEntry(appStripe='system', name='keystore2', password='password', alias='orakey', keypassword='keypassword')
説明
キーストアをファイルにエクスポートします。
構文
svc.exportKeyStore(appStripe='stripe', name='keystore', password='password', aliases='comma-separated-aliases', keypasswords='comma-separated-keypasswords', type='keystore-type', filepath='absolute_file_path')
説明:
svc= getOpssService()へのコールによって取得したサービス・コマンド・オブジェクト。
appStripe= キーストアを含むストライプの名前。
name= キーストアの名前。
password= キーストアのパスワード。
aliases= エクスポートする別名のカンマ区切りリスト。
keypasswords= 別名に対応するキー・パスワードのカンマ区切りリスト。
type= エクスポートされるキーストアのタイプ。有効な値は、JKSまたはJCEKSです。
filepath= キーストアのエクスポート先のファイルの絶対パス。
例
svc.exportKeyStore(appStripe='system', name='keystore2', password='password',aliases='orakey,seckey', keypasswords='keypassword1,keypassword2', type='JKS',filepath='/tmp/file.jks')
説明
証明書、信頼できる証明書または証明書チェーンをエクスポートします。
構文
svc.exportKeyStoreCertificate(appStripe='stripe', name='keystore', password='password', alias='alias', keypassword='keypassword', type='entrytype',filepath='absolute_file_path')
説明:
svc= getOpssService()へのコールによって取得したサービス・コマンド・オブジェクト。
appStripe= キーストアを含むストライプの名前。
name= キーストアの名前。
password= キーストアのパスワード。
alias= エクスポートするエントリの別名。
keypassword= キーのパスワード。
type= エクスポートするキーストア・エントリのタイプ。有効な値は、Certificate、TrustedCertificateまたはCertificateChainです。
filepath= 証明書、信頼できる証明書または証明書チェーンのエクスポート先のファイルの絶対パス。
例
svc.exportKeyStoreCertificate(appStripe='system', name='keystore2', password='password', alias='orakey', keypassword='keypassword', type='Certificate', filepath='/tmp/cert.txt')
説明
証明書リクエストを生成してエクスポートします。
構文
svc.exportKeyStoreCertificateRequest(appStripe='stripe', name='keystore', password='password', alias='alias', keypassword='keypassword', filepath='absolute_file_path')
説明:
svc= getOpssService()へのコールによって取得したサービス・コマンド・オブジェクト。
appStripe= キーストアを含むストライプの名前。
name= キーストアの名前。
password= キーストアのパスワード。
alias= 証明書リクエストの生成元のキー・ペアの別名。
keypassword= キー・ペアのパスワード。
filepath= 証明書リクエストのエクスポート先のファイルの絶対パス。
例
svc.exportKeyStoreCertificateRequest(appStripe='system', name='keystore2', password='password', alias='orakey', keypassword='keypassword', filepath='/tmp/certreq.txt')
説明
キーストア内にキー・ペアを生成し、それをデモCAによって署名された証明書でラップします。
構文
svc.generateKeyPair(appStripe='stripe', name='keystore', password='password', dn='distinguishedname', keysize='keysize', alias='alias', keypassword='keypassword')
説明:
svc= getOpssService()へのコールによって取得したサービス・コマンド・オブジェクト。
appStripe= キーストアを含むストライプの名前。
name= キー・ペアが生成されるキーストアの名前。
password= キーストアのパスワード。
dn= キー・ペアをラップする証明書の識別名。
keysize= キーのサイズ。
alias= キー・ペア・エントリの別名。
keypassword= キーのパスワード。
例
svc.generateKeyPair(appStripe='system', name='keystore2', password='password', dn='cn=www.oracle.com', keysize='1024', alias='orakey', keypassword='keypassword')
説明
キーストア内に対称鍵を生成します。
構文
svc.generateSecretKey(appStripe='stripe', name='keystore', password='password', algorithm='algorithm', keysize='keysize', alias='alias', keypassword='keypassword')
説明:
svc= getOpssService()へのコールによって取得したサービス・コマンド・オブジェクト。
appStripe= キーストアを含むストライプの名前。
name= 対称鍵が生成されるキーストアの名前。
password= キーストアのパスワード。
algorithm= 対称鍵アルゴリズム。
keysize= キーのサイズ。
alias= キー・エントリの別名。
keypassword= キーのパスワード。
例
svc.generateSecretKey(appStripe='system', name='keystore2', password='password', algorithm='AES', keysize='128', alias='seckey', keypassword='keypassword')
説明
証明書または信頼できる証明書に関する情報を取得します。
構文
svc.getKeyStoreCertificates(appStripe='stripe', name='keystore', password='password', alias='alias', keypassword='keypassword')
説明:
svc= getOpssService()へのコールによって取得したサービス・コマンド・オブジェクト。
appStripe= キーストアを含むストライプの名前。
keypassword= キーのパスワード。
name= キーストアの名前。
password= キーストアのパスワード。
alias= 表示する証明書、信頼できる証明書または証明書チェーンの別名。
例
svc.getKeyStoreCertificates(appStripe='system', name='keystore3', password='password', alias='orakey', keypassword='keypassword')
説明
アルゴリズムなどの秘密鍵のプロパティを取得します。
構文
svc.getKeyStoreSecretKeyProperties(appStripe='stripe', name='keystore', password='password', alias='alias', keypassword='keypassword')
説明:
svc= getOpssService()へのコールによって取得したサービス・コマンド・オブジェクト。
appStripe= キーストアを含むストライプの名前。
name= キーストアの名前。
password= キーストアのパスワード。
alias= プロパティを表示する秘密鍵の別名。
keypassword= 秘密鍵のパスワード。
例
svc.getKeyStoreSecretKeyProperties(appStripe='system', name='keystore3', password='password', alias='seckey', keypassword='keypassword')
説明
キーストアをファイルからインポートします。
構文
svc.importKeyStore(appStripe='stripe', name='keystore', password='password', aliases='comma-separated-aliases', keypasswords='comma-separated-keypasswords', type='keystore-type', permission=true|false, filepath='absolute_file_path')
説明:
svc= getOpssService()へのコールによって取得したサービス・コマンド・オブジェクト。
appStripe= キーストアを含むストライプの名前。
name= キーストアの名前。
password= キーストアのパスワード。
aliases= ファイルからインポートするエントリのカンマ区切りの別名。
keypasswords= ファイル内のキーのカンマ区切りのパスワード。
type= インポートされるキーストアのタイプ。有効な値は、JKSまたはJCEKSです。
filepath= インポートするキーストア・ファイルの絶対パス。
例
svc.importKeyStore(appStripe='system', name='keystore2', password='password',aliases='orakey,seckey', keypasswords='keypassword1, keypassword2', type='JKS', permission=true, filepath='/tmp/file.jks')
説明
証明書、信頼できる証明書または証明書チェーンをインポートします。
構文
svc.importKeyStoreCertificate(appStripe='stripe', name='keystore', password='password', alias='alias', keypassword='keypassword', type='entrytype',filepath='absolute_file_path')
説明:
svc= getOpssService()へのコールによって取得したサービス・コマンド・オブジェクト。
appStripe= キーストアを含むストライプの名前。
name= キーストアの名前。
password= キーストアのパスワード。
alias= インポートするエントリの別名。
keypassword= 新たにインポートするエントリのキー・パスワード。
type= インポートするキーストア・エントリのタイプ。有効な値は、Certificate、TrustedCertificateまたはCertificateChainです。
filepath= 証明書、信頼できる証明書または証明書チェーンのインポート元のファイルの絶対パス。
例
svc.importKeyStoreCertificate(appStripe='system', name='keystore2', password='password', alias='orakey', keypassword='keypassword', type='Certificate', filepath='/tmp/cert.txt')
説明
期限が切れる証明書をリストし、オプションで更新します。
構文
svc.listExpiringCertificates(days='days', autorenew=true|false)
説明:
svc= getOpssService()へのコールによって取得したサービス・コマンド・オブジェクト。
days= 期限までの日数がこの日数以下の証明書のみをリストします。
autorenew= 期限が切れる証明書を自動的に更新する場合はtrue
、表示するだけの場合はfalse
。
例
svc.listExpiringCertificates(days='365', autorenew=true)
説明
キーストア内の特定のエントリ・タイプに対する別名をリストします。
構文
svc.listKeyStoreAliases(appStripe='stripe', name='keystore', password='password', type='entrytype')
説明:
svc= getOpssService()へのコールによって取得したサービス・コマンド・オブジェクト。
appStripe= キーストアを含むストライプの名前。
name= キーストアの名前。
password= キーストアのパスワード。
type= 別名をリストするエントリのタイプ。有効な値は、Certificate、TrustedCertificate、SecretKeyまたは*です。
例
svc.listKeyStoreAliases(appStripe='system', name='keystore2', password='password', type='Certificate') svc.listKeyStoreAliases(appStripe='system', name='keystore2', password='password', type='TrustedCertificate') svc.listKeyStoreAliases(appStripe='system', name='keystore2', password='password', type='SecretKey') svc.listKeyStoreAliases(appStripe='system', name='keystore2', password='password', type='*')