Á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

 

Carregando Chaves e Certificados

Uma vez que um CA enviou-lhe um certificado, ou se você gerou o seu próprio certificado sem keytool , você precisa carregá-lo em um armazenamento de chaves keystore JSSE.


  

Nota

Você precisa tanto a chave privada e o certificado no armazenamento de chaves JSSE. Você deve carregar o certificado para o armazenamento de chaves usado para gerar o CSR com keytool . Se o seu par de chaves já não está em um armazenamento (por exemplo, porque foi gerado com OpenSSL), você precisa usar o formato PKCS12 para carregar tanto chaves eo certificado (ver PKCKS12 Chaves e Certificados ).

 

Carregando Certificados com keytool

Você pode usar o keytool para carregar um certificado em forma no formato PEM diretamente em um armazenamento de chaveskeystore. 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
$ Keytool
 -keystore keystore -import -alias 
molhe
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 -em jetty.der -Informar DER -outform PEM out jetty.crt 

 

Carregando chaves e certificados através PKCS12

Se você tem uma chave e certificado em arquivos separados, você precisa combiná-los em um arquivo de formato PKCS12 para carregar em um novo armazenamento de chaves. O certificado pode ser um que você gerou a si mesmo ou um voltar de uma CA em resposta ao seu CSR.

O seguinte comando OpenSSL combina as chaves na jetty.key e o certificado no jetty.crt arquivo no jetty.pkcs12 arquivo:

  $ Openssl pkcs12 -inkey jetty.key -em jetty.crt -export out jetty.pkcs12 

Se você tem uma cadeia de certificados, porque o seu CA é um intermediário, construir o arquivo PKCS12 da seguinte forma:

  $ Cat example.crt intermediate.crt [intermediate2.crt] ... rootCA.crt> cert-chain.txt
 $ Openssl pkcs12 -export -inkey example.key -em cert-chain.txt out example.pkcs12 

A ordem dos certificados deve ser de servidor para rootca, conforme a secção RFC2246 7.4.2.

OpenSSL pede uma senha de exportação. A senha não vazio é necessário para fazer a próxima etapa de trabalho. Em seguida, carregar o arquivo PKCS12 resultando em um armazenamento de chaves JSSE com keytool :

  $ Keytool -importkeystore -srckeystore jetty.pkcs12 -srcstoretype PKCS12 -destkeystore keystore 

 

 

 

 

 

 

 

 

 

...

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