Histórico da Página
Índice
Índice | ||||||||
---|---|---|---|---|---|---|---|---|
|
Objetivo
...
Serviços em HTTPS tem como objetivo garantir maior segurança no tráfego de arquivos entre cliente-servidor. Neste documento abordaremos a configuração SSL do servidor de aplicação jetty, utilizado na Replicação de Documentos, que será utilizado juntamente com o Fluig quando o JBoss WildFly estiver com o certificado SSL também ativo.
Nota | ||
---|---|---|
| ||
Os procedimentos descritos neste guia foram testados e homologados na versão 9.4.8.v20171121 do Jetty |
Configurar SSL para Jetty
...
Para configurar o SSL no Jetty, complete as tarefas abaixoé necessário:
- Gerando Gerar as chaves e os certificados
- Requesting a Trusted Certificate
- Loading Keys and Certificates
- Configuring SslContextFactory
- auto-assinados (caso não possua o certificado).
Carregar chaves e certificados.
Configurar sslContextFactory.
Gerando as chaves e os certificados auto-assinados
O caminho mais fácil para gerar as chaves e os certificados é usar a ferramenta keytool que já vem na instalação da JDK.
Informações | ||
---|---|---|
| ||
Se você já possui as chaves e os certificados vá direto para |
o passo, Carregando as chaves e certificados |
, afim de verificar como carregá-los para dentro |
do keystore JSSE. Esta seção também se |
aplica no caso de renovação de certificados onde você deseja substituir um certificado que está expirando. |
O exemplo abaixo gera somente chaves e certificados básicos. Você deve acessar a documentação do Jetty se precisar especificar o seguintes itens:
- O tamanho da chave
- A data de expiração do certificado
- Alterar a segurança dos providers
Gerando
...
chaves e
...
certificados com keytool do JDK
...
O comando a seguir gera as chaves e o certificado diretamente no arquivo keystore
:
Bloco de código | ||
---|---|---|
| ||
$ keytool -keystore keystore -alias jetty -genkey -keyalg RSA |
...
- Preencha todos as informações solicitadas e ao final digite
...
- sim e pressione Enter para confirmar.
Estes certificados auto-assinados não são válidos externamente.
Carregando chaves e certificados
...
...
Se um certificado CA lhe foi enviado, ou se você gerou o seu próprio certificado sem keytool
, você precisa carregá-lo em um keystore JSSE.
Carregando Certificados com keytool
Você pode usar o keytool
para carregar um certificado no formato PEM diretamente em um keystore. O formato PEM é uma codificação de texto de certificados; é produzido pela OpenSSL, e é devolvido por alguns CAs. Um exemplo de arquivo PEM é:
Bloco de código | ||
---|---|---|
| ||
jetty.crt ----- BEGIN CERTIFICATE ----- MIICSDCCAfKgAwIBAgIBADANBgkqhkiG9w0BAQQFADBUMSYwJAYDVQQKEx1Nb3J0 IEJheSBDb25zdWx0aW5nIFB0eS4gTHRkLjEOMAwGA1UECxMFSmV0dHkxGjAYBgNV BAMTEWpldHR5Lm1vcnRiYXkub3JnMB4XDTAzMDQwNjEzMTk1MFoXDTAzMDUwNjEz MTk1MFowVDEmMCQGA1UEChMdTW9ydCBCYXkgQ29uc3VsdGluZyBQdHkuIEx0ZC4x DjAMBgNVBAsTBUpldHR5MRowGAYDVQQDExFqZXR0eS5tb3J0YmF5Lm9yZzBcMA0G CSqGSIb3DQEBAQUAA0sAMEgCQQC5V4oZeVdhdhHqa9L2 / ZnKySPWUqqy81riNfAJ 7uALW0kEv / LtlG34dOOcVVt / PK8 / bU4dlolnJx1SpiMZbKsFAgMBAAGjga4wgasw HQYDVR0OBBYEFFV1gbB1XRvUx1UofmifQJS / MCYwMHwGA1UdIwR1MHOAFFV1gbB1 XRvUx1UofmifQJS / MCYwoVikVjBUMSYwJAYDVQQKEx1Nb3J0IEJheSBDb25zdWx0 aW5nIFB0eS4gTHRkLjEOMAwGA1UECxMFSmV0dHkxGjAYBgNVBAMTEWpldHR5Lm1v cnRiYXkub3JnggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADQQA6NkaV OtXzP4ayzBcgK / qSCmF44jdcARmrXhiXUcXzjxsLjSJeYPJojhUdC2LQKy + p4ki8 Rcz6oCRvCGCe5kDB ----- END CERTIFICATE ----- |
Utilizando certificados com extensão .crt
Se você já possui um certificado com a extensão .crt e a senha para acessá-lo utilize o comando abaixo. Este O comando a seguir carrega um certificado codificado PEM no jetty.crt
arquivo em um armazenamento de chaves JSSE:o conteúdo do arquivo .crt para dentro do arquivo keystore JSSE:
Bloco de código | ||
---|---|---|
| ||
$ keytool -keystore keystore -import -alias jetty -file |
[nome_do_arquivo].crt -trustcacerts |
Se o certificado que você recebe do CA não está em um formato que keytool
entende, você pode usar o openssl
comando para converter formatos:
$ openssl x509 -in jetty.der -inform DER -outform PEM -out jetty.crt
----------------------------------------------------------------------------------------------------------
Configurando SslContextFactory
Os certificados SSL gerados detidos no armazenamento de chaves são configuradas no Jetty por injecção uma instância de SslContextFactoryobjeto e passá-la para SslConnectionFactory do conector, o que é feito na distribuição molhe por ambos em molhe-https.xml e molhe-spdy.xml . Desde SPDY é capaz de lidar com HTTPS também, normalmente você vai configurar píer para usar um desses arquivos de configuração ou o outro, o que pode ser feito outro na linha de comando ou editando o arquivo start.ini.
Esses arquivos de configuração criar uma instância SslContextFactory com o ID "sslContextFactory":
1 2 3 4 5 6 7 | < New id = "sslContextFactory" class = "org.eclipse.jetty.util.ssl.SslContextFactory" > < Set name = "KeyStorePath" >< Property name = "jetty.home" default = "." />/etc/keystore</ Set > < Set name = "KeyStorePassword" >OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</ Set > < Set name = "KeyManagerPassword" >OBF:1u2u1wml1z7s1z7a1wnl1u2g</ Set > < Set name = "TrustStorePath" >< Property name = "jetty.home" default = "." />/etc/keystore</ Set > < Set name = "TrustStorePassword" >OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</ Set > </ New > |
Este exemplo usa o armazenamento de chaves distribuídas com molhe. Para usar seu próprio armazenamento de chaves que você precisa atualizar, pelo menos, as seguintes definições:
KeyStorePathVocê pode substituir o armazenamento de chave fornecida com o seu próprio, ou alterar a configuração para apontar para um arquivo diferente. Note-se que como um armazenamento de chaves é segurança da informação vital, pode ser desejável para localizar o arquivo em um diretório com um acesso muito restrito.KeyStorePasswordA senha de armazenamento de chaves pode ser definido aqui em texto simples, ou como alguma proteção contra observação casual, ela pode ser ofuscado usando a senha de classe.
O Truststore é usado se validar os certificados de cliente e é normalmente definido para o mesmo armazenamento de chaves.
O keyManagerPassword é passado como a senha para arg KeyManagerFactory.init (...). Se não houver nenhum keymanagerpassword, em seguida, o keyStorePassword é usado em vez disso. Se não existe um conjunto TrustManager, então o armazenamento de chaves é usado como o armazenamento de confiança eo keyStorePassword é usado como senha truststore
Não há necessidade de criar uma nova instância de SslContextFactory usando o xml acima como um existe no molhe-ssl.xml. Edite os caminhos e senhas no molhe-ssl.xml e garantir que você adicionar as seguintes linhas para start.ini após a jetty.dump.stop line =:
1 2 | etc/jetty-ssl.xml etc/jetty-https.xml |
Opcionalmente, configure a porta https ou em molhe-https.xml como este:
1 | < Set name = "port" >8443</ Set > |
ou via linha de comando, por exemplo
Ao executar o comando acima digite uma senha 'não pode ser deixado em branco'. Esta é a senha de acesso ao arquivo keystore.
Utilizando certificados com extensão .p12
Se você possui um certificado com a extensão .p12 utilize o comando abaixo. Este comando a seguir carrega o conteúdo do arquivo .crt para dentro do arquivo keystore JSSE:
Bloco de código | ||
---|---|---|
| ||
$ keytool -importkeystore -srckeystore [nome_do_arquivo].p12 -srcstoretype PKCS12 -destkeystore keystore |
Ao executar o comando acima lhe será solicitado uma senha 'não pode ser deixado em branco'. Esta é a senha de acesso ao arquivo keystore.
Será solicito uma segunda senha, esta é a de acesso ao certificado, guarde as duas senha.
É necessário copiar o arquivo keystore do local onde foi gerado para dentro da pasta [instalação do jetty]/etc
Configurando SslContextFactory
O Jetty permite que seja criado um diretório específico para realizar as configurações, assim é possível manter uma separação entre os arquivos binários de instalação ($JETTY_HOME) e as configurações personalizadas ($JETTY_BASE). Veja mais detalhes em Gerenciando Jetty Home e Jetty Base
Configuração em sistemas Linux:
Deck of Cards | ||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||
|
Configuração específica para Jetty no Windows
É necessário adicionar o parâmetro abaixo no momento em que o Jetty será iniciado:
-Dfile.encoding=UTF-8 -Djavax.net.ssl.trustStore=[caminho do arquivo keystore gerado]
Para iniciar o Jetty basta digitar no terminal do Windows o seguinte comando:
java -Dfile.encoding=UTF-8 -Djavax.net.ssl.trustStore=[caminho do arquivo keystore gerado] -jar start.jar