JSSE独自の考慮事項

SunJSSE のコードは100% Java™であるため、プラットフォームに依存せず、 z/OS® 固有のコードは含まれていません。 しかし、他のJavaセキュリティコンポーネントには、 z/OS 固有の機能を提供し、 SunJSSE が使用できるものもあります。 これらの機能は、 z/OS プラットフォームに存在する可能性のあるハードウェア暗号化プロバイダーを活用し、 RACF® に証明書を保存するのに役立ちます。

SunJSSE 用のハードウェア暗号化 z/OS

SunJSSE IBMJCECCA ハードウェア暗号化プロバイダーを利用できるため、 アプリケーションで暗号化デバイスを利用できます。 SunJSSE

IBMJCECCA(ハードウェア暗号化)プロバイダーで SunJSSE を使用するには、以下の手順に従います。
  1. IBMJCECCAプロバイダーは、 java.security プロバイダーリスト内の最初のJCE暗号プロバイダーでなければなりません。
  2. JCECCAKS キーストアなどの IBMJCECCA プロバイダーがサポートするキーストアを使用してください。
SunJSSE を OpenJCEPlus (ハードウェア暗号化) プロバイダーで使用するには、以下の手順に従います。
  1. OpenJCEPlus プロバイダーは、 java.security プロバイダーリスト内の最初のJCE暗号プロバイダーでなければなりません。
  2. IBMZSecurity、SUN、または SunJCE などの別のJCEプロバイダーが実装したキーストアを使用してください。

OpenJCEPlus, の詳細については、 OpenJCEPlus provider をご覧ください。

注: IBMJCECCAプロバイダーを使用するには、無制限のポリシーファイルを使用する必要があります。

RACF 秘密鍵と証明書のキーホルダー

RACF キーリングは、 が、 というIBMJCECCAプロバイダー、 というIBMZSecurityプロバイダー、および というIBMJCEHYBRIDプロバイダーに含まれるキーストアを使用することで利用できます。 SunJSSE JCECCARACFKS JCERACFKS JCEHYBRIDRACFKS

注: OpenJCEPlus プロバイダーは、ソフトウェア/クリアキーを使用する暗号化ワークロード用に使用され、 RACF ソフトウェアキーストアのサポートにはIBMZSecurityプロバイダーが使用されます。

ここでは、暗号化操作に IBMJCECCA プロバイダーを使用して、 JCECCARACFKS キーストアで KeyManagerFactory を初期化する方法を例示します。

KeyStore ks = KeyStore.getInstance("JCECCARACFKS");
com.ibm.crypto.hdwrCCA.provider.RACFInputStream inputStream = new
    com.ibm.crypto.hdwrCCA.provider.RACFInputStream(username,keyring,password.toCharArray());
ks.load(inputStream,password.toCharArray());
KeyManagerFactory kmf = KeyManagerFactory.getInstance("IbmX509");
kmf.init(ks, password.toCharArray());

RACF キーリングは、URLを使用して希望する キーリングを指定することでもアクセスできます。 RACF 例えば、次のコードでは、アプリケーションが RACF キーリングをトラストストアとして指定できることを示しています。

KeyStore ks = null;
...
// Setup properties for TrustManagerFactory
System.setProperty("javax.net.ssl.trustStore","safkeyringjce://Userid/Keyring");
 
System.setProperty("javax.net.ssl.trustStoreType","JCERACFKS");

System.setProperty("javax.net.ssl.trustStorePassword", "password");
...
TrustManagerFactory tmf = TrustManagerFactory.getInstance("IbmX509");
tmf.init(ks);

IBMZSecurity、IBMJCECCA、IBMJCEHYBRIDプロバイダーのいずれかを指定するには、次の3つの URL safkeyringオプションが利用可能です。 この方法では、safkeyring URLは RACF キーストアの種類によって異なります。 この方法では、 java.protocol.handler.pkgs は必要ありません。

  • JCERACFKS キーストアの URL は safkeyringjce です。
  • JCECCARACFKS キーストアの URL は safkeyringjcecca です。
  • JCEHYBRIDRACFKS キーストアの URL は safkeyringjcehybrid です。

RACF キーストア非依存の URL safkeyring safkeyring:// は、オプション java.protocol.handler.pkgs と共に、 RACF キーリングとユーザーIDを指定するために使用できます。

まとめると、異なるプロバイダーの RACF キーリングにアクセスするには、以下のオプションが利用可能です。
  • IBMZSecurityプロバイダーから、 safkeyringjce:// または safkeyring:// + java.protocol.handler.pkgs=com.ibm.crypto.zsecurity.provider
  • IBMJCECCAプロバイダーから、 safkeyringjcecca:// または safkeyring:// + java.protocol.handler.pkgs=com.ibm.crypto.hdwrCCA.provider
  • IBMJCEHYBRIDプロバイダーから、 safkeyringjcehybrid:// または safkeyring:// + java.protocol.handler.pkgs=com.ibm.crypto.ibmjcehybrid.provider

資料