Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Índice

Índice
maxLevel4
outlinetrue
exclude.*ndice
stylenone
 


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
titleAtenção

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 vem na instalação da JDK.

Informações
titleNota

Se você já possui as chaves e os certificados vá direto para

Carregando

o passo, Carregando as chaves e certificados

para ver

, afim de verificar como carregá-los para dentro

da JSSE

do keystore JSSE. Esta seção também se

aplicado

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
languagexml
$ 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
languagexml
  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
languagexml
   $ keytool -keystore keystore -import -alias jetty -file 
jetty
[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
languagexml
	$ 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
effectDuration0.5
historyfalse
idsamples
effectTypefade
Card
defaulttrue
id1
labelPasso 1


Primeiramente crie o diretório base:

Bloco de código
languagebash
linenumberstrue
$ JETTY_BASE=/opt/jetty_fluig
$ mkdir $JETTY_BASE
$ cd $JETTY_BASE


Em seguida, será preciso habilitar alguns módulos, execute os comandos:

Bloco de código
languagebash
linenumberstrue
$ java -jar $JETTY_HOME/start.jar --create-startd
$ java -jar $JETTY_HOME/start.jar --add-to-start=http,deploy,ssl,https


Com isso, os diretórios etc, start.d e webapps devem ser criados.

Card
id2
labelPasso 2


Agora faremos as configurações para o Jetty funcionar em HTTPS, abra o arquivo $JETTY_BASE/start.d/ssl.ini e edite as seguintes configurações:

jetty.ssl.host - Endereço/IP de conexão

jetty.ssl.port - porta de conexão

jetty.sslContext.keyStorePath - Caminho e nome do arquivo keystore (relativo ao $JETTY_BASE)

jetty.sslContext.trustStorePath - Caminho e nome do arquivo Truststore (relativo ao $JETTY_BASE)

jetty.sslContext.keyStorePassword - Senha de acesso ao keystore

jetty.sslContext.keyManagerPassword - Senha de acesso ao keymanager

jetty.sslContext.trustStorePassword - Senha de acesso ao truststore

Aviso
titleOfuscar senhas de acesso

Por questões de segurança, recomendamos que as senhas de acesso ao keystore, keymanager e truststore sejam ofuscadas.

O Jetty possuí uma biblioteca que possibilita ofuscar senhas, basta executar os comandos:


Bloco de código
languagebash
linenumberstrue
$ export JETTY_VERSION=9.0.0-SNAPSHOT
$ java -cp lib/jetty-util-$JETTY_VERSION.jar org.eclipse.jetty.util.security.Password [SENHA]


# Exemplo de uso:
$ java -cp lib/jetty-util-$JETTY_VERSION.jar org.eclipse.jetty.util.security.Password blah
OBF:20771x1b206z
MD5:639bae9ac6b3e1a84cebb7b403297b79
CRYPT:me/ks90E221EY

# Ao utilizar o método de ofuscação OBF, a configuração das senhas ficará à semelhante abaixo:
# jetty.sslContext.keyStorePassword=OBF:20771x1b206z




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 

$ java -jar start.jar https.port=8443