Considerações exclusivas da JSSE

Como o código do SunJSSE é 100% Java™, ele é independente de plataforma e não tem código específico do z/OS®. No entanto, há algumas funções em outros componentes de segurança Java que fornecem recursos específicos do z/OS que o SunJSSE pode usar. As funções ajudam você a aproveitar os provedores de criptografia de hardware que podem estar presentes na plataforma z/OS, além de armazenar certificados em RACF®.

Criptografia de hardware para SunJSSE em z/OS

SunJSSE é capaz de aproveitar o uso do provedor criptográfico de hardware IBMJCECCA, que permite que o aplicativo SunJSSE aproveite os dispositivos criptográficos.

Para usar o site SunJSSE com o provedor IBMJCECCA (criptografia de hardware), faça o seguinte.
  1. O provedor IBMJCECCA deve ser o primeiro provedor criptográfico JCE em sua lista de provedores java.security .
  2. Use um repositório de chaves compatível com o provedor IBMJCECCA, como o repositório de chaves JCECCAKS.
Para usar o SunJSSE com o provedor OpenJCEPlus (criptografia acelerada por hardware), faça o seguinte.
  1. O provedor OpenJCEPlus deve ser o primeiro provedor criptográfico JCE em sua lista de provedores java.security .
  2. Use um keystore implementado por outro provedor de JCE, como IBMZSecurity, SUN ou SunJCE.

Para obter mais informações sobre o OpenJCEPlus,, acesse OpenJCEPlus provider.

Observação: certifique-se de usar os arquivos de política irrestritos, que são necessários para usar o provedor IBMJCECCA.

RACF chaveiros para chaves privadas e certificados

RACF os chaveiros podem ser usados pelo site SunJSSE por meio de keystores incluídos no provedor IBMJCECCA chamado JCECCARACFKS, no provedor IBMZSecurity chamado JCERACFKS e no provedor IBMJCEHYBRID chamado JCEHYBRIDRACFKS.

Observação: o provedor OpenJCEPlus é usado para cargas de trabalho de criptografia que usam chaves de software/claras e o provedor IBMZSecurity para suporte ao keystore de software RACF.

Um exemplo aqui mostra como inicializar o KeyManagerFactory com um keystore JCECCARACFKS usando o provedor IBMJCECCA para operações criptográficas.

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 os chaveiros também podem ser acessados usando URLs para especificar o chaveiro desejado RACF. Por exemplo, o código a seguir mostra que um aplicativo pode especificar um anel de chaves RACF como um truststore.

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);

Para especificar o provedor IBMZSecurity, IBMJCECCA ou IBMJCEHYBRID, estão disponíveis as seguintes 3 opções de URL safkeyring. Nesse método, os URLs do safkeyring dependem do tipo de keystore do RACF. O java.protocol.handler.pkgs não é necessário nesse método.

  • O endereço URL para um keystore JCERACFKS é safkeyringjce.
  • O endereço URL para um keystore JCECCARACFKS é safkeyringjcecca.
  • O endereço URL para um keystore JCEHYBRIDRACFKS é safkeyringjcehybrid.

O RACF keystore-independent URL safkeyring safkeyring:// pode ser usado para especificar o chaveiro RACF e a ID do usuário junto com a opção java.protocol.handler.pkgs.

Em resumo, as seguintes opções estão disponíveis para acessar os chaveiros RACF de diferentes fornecedores.
  • No provedor IBMZSecurity, use safkeyringjce:// ou safkeyring:// + java.protocol.handler.pkgs=com.ibm.crypto.zsecurity.provider
  • No provedor IBMJCECCA, use safkeyringjcecca:// ou safkeyring:// + java.protocol.handler.pkgs=com.ibm.crypto.hdwrCCA.provider
  • No provedor IBMJCEHYBRID, use safkeyringjcehybrid:// ou safkeyring:// + java.protocol.handler.pkgs=com.ibm.crypto.ibmjcehybrid.provider

Documentação