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
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:
diretório app_server_root/java/jre/lib/
security.
diretório app_server_root/properties.
diretório profile_root/properties.
Interface de Programação de Aplicativos
- 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]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
- Versão 1.6
- Acesse o Web site http://www.ibm.com/developerworks/java/jdk/security/.
- Clique em Java 1.6.
- 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
- Versão 1.6
- Acesse o Web site http://www.ibm.com/developerworks/java/jdk/security/.
- Clique em Java 1.6.
- Clique em jssedocs_samples.zip na seção Guia do JSSE (Java Secure Socket Extension).
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. |
Permissões para Segurança Java 2
- 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"
- java.security.SecurityPermission "putProviderProperty.IBMJSSE"
- java.security.SecurityPermission "insertProvider.IBMJSSE"
- 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.
Um valor igual a
true ativa o recurso de rastreio, desde que a versão de depuração do JSSE esteja instalada.
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
- 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])
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
- 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
- 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
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
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.