Transportes Seguros com as Interfaces de Programação JSSE e JCE

É possível obter informações mais detalhadas sobre a segurança de transporte usando as interfaces de programação Java™ Secure Socket Extension (JSSE) e Java Cryptography Extension (JCE). Com este tópico, há uma descrição da versão IBM® do IBMJCEFIPS (Java Cryptography Extension Federal Information Processing Standard).

Java Secure Socket Extension

JSSE fornece a segurança de transporte para o WebSphere Application Server. Fornece a estrutura da API (Interface de Programação de Aplicativo) e a implementação das APIs para protocolos SSL (Secure Sockets Layer) e TLS (Transport Layer Security), incluindo funcionalidade para criptografia de dados, integridade de mensagens e autenticação.

As APIs JSSE são integradas ao J2SDK (Java 2 SDK), Standard Edition, Versão 5. O pacote de API para APIs JSSE é javax.net.ssl.*. A documentação para uso de APIs JSSE pode ser encontrada na documentação da API J2SE 6 que está localizada em http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html.

Diversos provedores JSSE são enviados com o Java 2 SDK Versão 5 fornecido com o WebSphere Application Server. O provedor IBMJSSE é utilizado em releases anteriores doWebSphere Application Server.

Para obter informações adicionais sobre o novo provedor IBMJSSE2, revise a documentação localizada em http://www.ibm.com/developerworks/java/jdk/security/60/.

Customizando oJava Secure Socket Extension

É possível customizar vários aspectos do JSSE, conectando diferentes implementações de Cryptography Package Provider, protocolos X509Certificate e HTTPS ou especificando diferentes arquivos de armazenamento de chaves padrão, fábricas de gerenciadores de chaves e fábricas de gerenciadores confiáveis. A tabela a seguir resume quais aspectos podem ser customizados, quais são os padrões e quais mecanismos são utilizados para fornecer customização.
Tabela 1. Itens Customizáveis. É possível customizar os principais aspectos a seguir:
Item a ser customizado Default Como customizar
X509Certificate Implementação do X509Certificate da IBM A propriedade de segurança cert.provider.x509v1
Protocolo HTTPS Implementação da IBM A propriedade de sistema java.protocol.handler.pkgs
Cryptography Package Provider IBMJSSE2 Um security.provider.n= line no arquivo de propriedades de segurança. Consulte a descrição.
Armazenamento de chaves padrão Nenhuma A propriedade de sistema * javax.net.ssl.keyStore
Armazenamento confiável padrão jssecacerts, se existir. Caso contrário, cacerts A propriedade de sistema * javax.net.ssl.trustStore
Fábrica de gerenciadores de chaves padrão IbmX509 A propriedade de segurança ssl.KeyManagerFactory.algorithm
Fábrica de gerenciadores confiáveis padrão IbmX509 A propriedade de segurança ssl.TrustManagerFactory.algorithm

Para aspectos que podem ser customizados definindo uma propriedade do sistema, defina estaticamente a propriedade do sistema utilizando a opção -D do comando Java. É possível configurar a propriedade do sistema utilizando o console administrativo ou configurar a propriedade do sistema dinamicamente chamando o método java.lang.System.setProperty em seu código: System.setProperty(propertyName,"propertyValue").

Para aspectos que você pode customizar configurando uma propriedade de segurança Java, especifique estatisticamente um valor de propriedade de segurança no arquivo de propriedades java.security. A propriedade de segurança é propertyName=propertyValue. Configure dinamicamente a propriedade de segurança Java chamando o método java.security.Security.setProperty em seu código.

O arquivo de propriedades java.security está localizado no seguinte diretório:

[AIX Solaris HP-UX Linux Windows]diretório app_server_root/java/jre/lib/ security.

[z/OS]diretório app_server_root/properties.

[IBM i]diretório profile_root/properties.

Interface de Programação de Aplicativos

O JSSE fornece uma API (Interface de Programação de Aplicativo) padrão disponível em pacotes do arquivo javax.net, do arquivo javax.net.ssl e do arquivo javax.security.cert. As APIs trazem informações sobre:
  • Soquetes e soquetes SSL
  • Fábricas para criar soquetes e soquetes SSL
  • Contexto de soquete seguro que age como uma fábrica para as fábricas de soquetes seguros
  • Interfaces de gerenciadores de chaves e confiáveis
  • Classes de conexão de URL HTTP protegida
  • API de certificado de chave pública
[AIX Solaris HP-UX Linux Windows][IBM i]É possível localizar informações adicionais documentadas para as APIs do JSSE se você acessar as seguintes informações:
Versão 1.6
  1. Acesse o Web site http://www.ibm.com/developerworks/java/jdk/security/.
  2. Clique em Java 1.6.
  3. Clique em Documentação HTML do Javadoc na seção Guia do Java Secure Socket Extension (JSSE).

Amostras que Utilizam o Java Secure Socket Extension

O JSSE (Java Secure Socket Extension) também fornece amostras para demonstrar sua funcionalidade. O JSSE (Java Secure Socket Extension) também fornece amostras para demonstrar sua funcionalidade. As amostras podem ser acessadas no seguinte local:
Versão 1.6
  1. Acesse o Web site http://www.ibm.com/developerworks/java/jdk/security/.
  2. Clique em Java 1.6.
  3. Clique em jssedocs_samples.zip na seção Guia do JSSE (Java Secure Socket Extension).
Tabela 2. Arquivos Extraídos. Essa tabela lista os seguintes arquivos extraídos:
Arquivos Description
ClientJsse.java Demonstra uma interação simples entre cliente e servidor utilizando JSSE. Todos os conjuntos de criptografia ativados são utilizados.
OldServerJsse.java Amostras de nível anterior
ServerPKCS12Jsse.java Demonstra uma interação simples entre cliente e servidor utilizando JSSE com o arquivo de armazenamento de chaves PKCS12. Todos os conjuntos de criptografia ativados são utilizados.
ClientPKCS12Jsse.java Demonstra uma interação simples entre cliente e servidor utilizando JSSE com o arquivo de armazenamento de chaves PKCS12. Todos os conjuntos de criptografia ativados são utilizados.
UseHttps.java Demonstra acessando um servidor da Web SSL ou não SSL usando o manipulador de protocolo Java da classe com.ibm.net.ssl.www.protocol. A URL é especificada com o prefixo http ou https. O HTML retornado desse site é exibido.
Consulte instruções adicionais no código de origem. Siga estas instruções antes de executar as amostras.

Permissões para Segurança Java 2

Talvez sejam necessárias as seguintes permissões para executar um aplicativo com o JSSE: Esta lista é apenas para referência.
  • java.util.PropertyPermission "java.protocol.handler.pkgs", "write"
  • java.lang.RuntimePermission "writeFileDescriptor"
  • java.lang.RuntimePermission "readFileDescriptor"
  • java.lang.RuntimePermission "accessClassInPackage.sun.security.x509"
  • java.io.FilePermission "${user.install.root}${/}etc${/}.keystore", "read"
  • java.io.FilePermission "${user.install.root}${/}etc${/}.truststore", "read"
Para o provedor IBMJSSE:
  • java.security.SecurityPermission "putProviderProperty.IBMJSSE"
  • java.security.SecurityPermission "insertProvider.IBMJSSE"
Para o provedor SUNJSSE:
  • java.security.SecurityPermission "putProviderProperty.SunJSSE"
  • java.security.SecurityPermission "insertProvider.SunJSSE"

Depuração

A configuração por meio da propriedade de sistema javax.net.debug permite ao JSSE fornecer o seguinte rastreio de depuração dinâmico: -Djavax.net.debug=true.

[AIX Solaris HP-UX Linux Windows][IBM i]Um valor igual a true ativa o recurso de rastreio, desde que a versão de depuração do JSSE esteja instalada.

[z/OS]Um valor true ativa o recurso de rastreio. Utilize o console administrativo para definir a propriedade do sistema para depurar o servidor de aplicativos.

Documentação

Consulte o tópico Segurança: Recursos para Aprendizagem para referências de documentação do JSSE.

JCE

O JCE (Java Cryptography Extension) fornece algoritmos criptográficos, de chave e hash para o WebSphere Application Server. Ele fornece uma estrutura e implementações para criptografia, geração de chaves, acordo de chaves e algoritmos MAC (Message Authentication Code). O suporte para criptografia inclui cifras simétricas, assimétricas, de bloco e de fluxo.

IBMJCE

A versão IBM do IBMJCE (Java Cryptography Extension) é uma implementação do provedor de serviços criptográficos do JCE utilizada no WebSphere Application Server. O IBMJCE é semelhante ao SunJCE, exceto que o IBMJCE oferece mais algoritmos:
  • Algoritmo de criptografia (AES, DES, TripleDES, PBEs, Blowfish e assim por diante)
  • Algoritmo de assinatura (SHA1withRSA, MD5withRSA, SHA1withDSA)
  • Algoritmo de compilação de mensagem(MD5, MD2, SHA1, SHA-256, SHA-384, SHA-512)
  • Código de autenticação de mensagem (HmacSHA1, HmacMD5)
  • Algoritmo de concordância de chaves (DiffieHellman)
  • Algoritmo de geração de número aleatório (IBMSecureRandom, SHA1PRNG)
  • Armazenamento de chaves (JKS, JCEKS, PKCS12, JCERACFKS [apenas z/OS])
O IBMJCE pertence aos pacotes com.ibm.crypto.provider.*.

Para obter informações adicionais, consulte as informações no JCE a partir do seguinte website: http://www.ibm.com/developerworks/java/jdk/security/60/.

IBMJCEFIPS

A versão IBM do IBMJCEFIPS (Java Cryptography Extension Federal Information Processing Standard) é uma implementação do provedor de serviços critptográficos do JCE utilizada no WebSphere Application Server. O fornecedor de serviços IBMJCEFIPS implementa os seguintes serviços:
  • Algoritmos de assinatura (SHA1withDSA, SHA1withRSA)
  • Algoritmos de cifra (AES, TripleDES, RSA)
  • Algoritmo de concordância de chaves (DiffieHellman)
  • Gerador de chave (par) (DSA, AES, TripleDES, HmacSHA1, RSA, DiffieHellman)
  • MAC (Message Authentication Code) (HmacSHA1)
  • Compilação de mensagem (MD5, SHA-1, SHA-256, SHA-384, SHA-512)
  • Gerador de parâmetro de algoritmo (DiffieHellman, DSA)
  • Parâmetro de algoritmo (AES, DiffieHellman, DES, TripleDES, DSA)
  • Depósito de informações do provedor de chaves (DiffieHellman, DSA, RSA)
  • Depósito de informações do provedor de chaves secretas (AES, TripleDES)
  • Certificado (X.509)
  • Aleatório protegido (IBMSecureRandom)

Interface de Programação de Aplicativos

O JCE (Java Cryptography Extension) tem uma arquitetura baseada no provedor. Os provedores podem ser conectados à estrutura do JCE, implementando as APIs definidas por ele. As APIs do JCE trazem informações sobre:
  • Criptografia simétrica em massa, como DES, RC2 e IDEA
  • Criptografia simétrica de fluxo, como RC4
  • Criptografia assimétrica, como RSA
  • PBE (criptografia baseada em senha)
  • Acordo de chaves
  • Códigos de autenticação da mensagem

[AIX Solaris HP-UX Linux Windows][IBM i]Há mais informações documentadas para as APIs JCE no website http://www.ibm.com/developerworks/java/jdk/security/.

Amostras que utilizam o Java Cryptography Extension

Há amostras localizas no Web site http://www.ibm.com/developerworks/java/jdk/security/ no arquivo jceDocs_samples.zip. Descompacte o arquivo e localize as seguintes amostras no diretório jceDocs/samples:
Tabela 3. Amostras que utilizam o Java Cryptography Extension. Essa tabela descreve as amostras usando o Java Cryptography Extension.
File Description
SampleDSASignature.java Demonstra como gerar um par de chaves DSA (uma chave pública e uma chave privada) e utilizar a chave para assinar digitalmente uma mensagem utilizando o algoritmo SHA1withDSA
SampleMarsCrypto.java Demonstra como gerar uma chave secreta Mars e como executar criptografia e decriptografia Mars
SampleMessageDigests.java Demonstra como utilizar a compilação de mensagens para algoritmos MD2 e MD5
SampleRSACrypto.java Demonstra como gerar um par de chaves RSA e como executar criptografia e decriptografia RSA
SampleRSASignatures.java Demonstra como gerar um par de chaves RSA (uma chave pública e uma chave privada) e utilizar a chave para assinar digitalmente uma mensagem utilizando o algoritmo SHA1withRSA
SampleX509Verification.java Demonstra como verificar os certificados X509

Documentação

Consulte o tópico Segurança: Recursos para Aprendizagem para referências de documentação do JCE.


Ícone que indica o tipo de tópico Tópico de Conceito



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=csec_jsse
Nome do arquivo: csec_jsse.html