bg-tutorials

Como Instalar um Certificado SSL no Servidor JBoss

Este tutorial mostra como instalar um certificado SSL no JBoss EAP e WildFly usando o keytool e o subsistema de segurança Elytron. Se você ainda não tem os arquivos do certificado, a primeira secção aborda a geração de um CSR.

Nota sobre versões: o JBoss EAP moderno (7.1 e posteriores, incluindo o EAP 8) e as versões recentes do WildFly configuram o HTTPS através do subsistema elytron ligado ao https-listener do Undertow. O antigo método security-realm e os conectores legados Tomcat ou Jetty estão obsoletos, portanto este guia usa a abordagem atual.

Também gravámos um vídeo que o guia por todo o processo. Pode assistir ao vídeo, ler as instruções, ou fazer ambos. Pode assistir ao vídeo abaixo.

Gerar um código CSR no JBoss

Um CSR (Certificate Signing Request) é um bloco de texto codificado que envia à Autoridade Certificadora (CA) quando encomenda um certificado. Ele contém os dados do seu domínio e da sua organização, que a CA usa para validar o pedido. Gerar o CSR também cria a chave privada correspondente, que fica no seu servidor e é necessária durante a instalação.

Tem duas opções:

No JBoss, o CSR é gerado com o keytool a partir de um repositório de chaves .jks ou .p12. Anote o alias e o nome do keystore que escolher agora: mais tarde terá de importar o certificado assinado de volta para esse mesmo alias. Envie o CSR à CA durante a sua encomenda e, assim que o certificado for emitido, continue com a instalação abaixo.

Instalar um certificado SSL no servidor JBoss

Passo 1: Prepare os arquivos do seu certificado

Após a validação, a CA envia por e-mail os arquivos do seu certificado, normalmente num arquivo ZIP. Extraia-o. Deve ter:

  • O seu certificado primário (um arquivo .crt, .cer ou .pem).
  • Os certificados intermediários, frequentemente entregues num arquivo .ca-bundle (o pacote CA). Algumas CAs incluem também o certificado raiz.
  • O keystore (.jks ou .p12) que criou com o CSR, que contém a sua chave privada sob o alias que escolheu ao gerar o CSR.

Mantenha estes arquivos juntos e copie-os para o servidor, por exemplo para o diretório de configuração do JBoss ($JBOSS_HOME/standalone/configuration/). Se um arquivo abrir como texto, pode confirmar que contém as linhas esperadas BEGIN CERTIFICATE e END CERTIFICATE.

Passo 2: Importe a cadeia da CA para o keystore

Importe primeiro os certificados intermediários (e o raiz, se fornecido) para que o keytool possa construir uma cadeia de confiança completa. Use o mesmo keystore que contém a sua chave privada e atribua a cada certificado da CA o seu próprio alias:

keytool -import -trustcacerts -alias root -file root.crt -keystore your_keystore.jks

keytool -import -trustcacerts -alias intermediate -file intermediate.crt -keystore your_keystore.jks

Se a sua CA enviou um único arquivo .ca-bundle, importe-o com um único alias (por exemplo -alias intermediate). Quando solicitado, introduza a palavra-passe do keystore e confirme a confiança. Estas entradas são entradas de certificado confiável, não entradas de chave, pelo que não afetam a sua chave privada.

Passo 3: Importe o certificado assinado para o seu alias de chave

Agora importe o seu certificado assinado (a resposta da CA) para o alias exato que usou ao gerar o CSR. Como esse alias já contém a chave privada, o keytool trata isto como uma resposta de certificado e substitui o certificado autoassinado temporário pela cadeia assinada pela CA, mantendo a chave intacta:

keytool -import -trustcacerts -alias your_csr_alias -file your_domain.crt -keystore your_keystore.jks

Substitua your_csr_alias pelo alias que usou ao gerar o CSR e your_keystore.jks pelo seu keystore. Em caso de sucesso, o keytool imprime Certificate reply was installed in keystore.

Importante: não invente um novo alias aqui. Importar a resposta sob um novo alias cria uma entrada de certificado confiável sem chave privada, a cadeia é perdida e o servidor não consegue concluir o handshake TLS. Se vir Failed to establish chain from reply, significa que o intermediário ou o raiz do Passo 2 está em falta no keystore.

Pode verificar o resultado; o alias deve agora mostrar uma cadeia de certificados com comprimento superior a 1:

keytool -list -v -alias your_csr_alias -keystore your_keystore.jks

Passo 4: Configure o HTTPS no subsistema Elytron

Coloque o keystore em $JBOSS_HOME/standalone/configuration/ e, em seguida, defina um key-store, key-manager e server-ssl-context do Elytron. A forma mais rápida é através da CLI de gestão. Inicie o servidor, conecte-se com jboss-cli.sh --connect e execute um lote para que as alterações se apliquem em conjunto:

batch

/subsystem=elytron/key-store=httpsKS:add(path=your_keystore.jks, relative-to=jboss.server.config.dir, credential-reference={clear-text=your_keystore_password}, type=JKS)

/subsystem=elytron/key-manager=httpsKM:add(key-store=httpsKS, credential-reference={clear-text=your_keystore_password})

/subsystem=elytron/server-ssl-context=httpsSSC:add(key-manager=httpsKM, protocols=["TLSv1.3","TLSv1.2"])

run-batch

De seguida, aponte o https-listener do Undertow para o novo ssl-context. O Undertow não pode referenciar simultaneamente um security-realm legado e um ssl-context do Elytron, portanto remova a referência antiga e defina a nova num único lote:

batch

/subsystem=undertow/server=default-server/https-listener=https:undefine-attribute(name=security-realm)

/subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=ssl-context, value=httpsSSC)

run-batch

Se preferir editar diretamente o standalone.xml (com o servidor parado), a configuração equivalente é a seguinte dentro do subsistema elytron:

<tls>
    <key-stores>
        <key-store name="httpsKS">
            <credential-reference clear-text="your_keystore_password"/>
            <implementation type="JKS"/>
            <file path="your_keystore.jks" relative-to="jboss.server.config.dir"/>
        </key-store>
    </key-stores>
    <key-managers>
        <key-manager name="httpsKM" key-store="httpsKS">
            <credential-reference clear-text="your_keystore_password"/>
        </key-manager>
    </key-managers>
    <server-ssl-contexts>
        <server-ssl-context name="httpsSSC" key-manager="httpsKM" protocols="TLSv1.3 TLSv1.2"/>
    </server-ssl-contexts>
</tls>

E o listener correspondente no subsistema undertow referencia esse ssl-context:

<https-listener name="https" socket-binding="https" ssl-context="httpsSSC" enable-http2="true"/>

Limitar os protocols a TLS 1.3 e TLS 1.2 desativa os obsoletos TLS 1.0 e 1.1. A porta HTTPS predefinida é a 8443; mapeie-a para a 443 com um balanceador de carga ou um redirecionamento de porta se precisar da porta padrão.

Passo 5: Reinicie o JBoss

Se editou o standalone.xml manualmente, reinicie o servidor para que carregue a nova configuração. Se usou os lotes de CLI acima, as alterações aplicam-se imediatamente, mas um reload confirma um arranque limpo:

jboss-cli.sh --connect --command=:reload

Observe o registo do servidor à procura de erros de SSL ou Elytron durante o arranque. Assim que arrancar sem problemas, o seu certificado SSL está instalado no JBoss.

Teste a sua instalação SSL

Após a instalação, confirme que o certificado e a cadeia são apresentados corretamente. Abra o seu site através de HTTPS (por exemplo https://www.oseudominio.com:8443) e verifique o cadeado, ou execute uma verificação externa com o nosso SSL Checker para obter um relatório completo sobre o certificado, a cadeia e o suporte de protocolos. Também pode verificar através da linha de comandos:

echo | openssl s_client -connect yourdomain.com:8443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates

Isto imprime o emissor e as datas de validade do certificado que o JBoss está a servir. Se o emissor for a sua CA (e não uma entrada autoassinada), a resposta foi importada corretamente.

Perguntas Frequentes

Como sei se um certificado SSL está instalado no JBoss?

Conecte-se à porta HTTPS com o OpenSSL e leia o certificado que o servidor devolve:
echo | openssl s_client -connect yourdomain.com:8443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -subject -dates
Se um certificado estiver instalado, isto imprime o seu emissor, assunto e datas de validade. Também pode inspecionar o keystore com keytool -list -v -keystore your_keystore.jks, ou abrir o seu site num navegador e verificar o cadeado.

Onde coloco o certificado SSL no JBoss?

O certificado reside dentro de um keystore, e o keystore é referenciado pelo key-store do Elytron. Uma localização comum é o diretório de configuração do servidor, $JBOSS_HOME/standalone/configuration/, com o caminho do key-store do Elytron definido como relative-to jboss.server.config.dir. Pode guardá-lo noutro local, desde que o caminho do key-store aponte para lá.

Por que o keytool diz “Failed to establish chain from reply”?

O keytool não conseguiu construir um caminho do seu certificado até uma raiz confiável. Importe primeiro os certificados intermediários (e o raiz, se fornecido) para o mesmo keystore, com -trustcacerts, e depois importe a resposta assinada para o seu alias do CSR. Se importou a resposta sob um alias novo, a chave privada é perdida: elimine essa entrada e volte a importar para o alias de chave original.

Como posso verificar quando o meu certificado SSL expira no JBoss?

Execute keytool -list -v -keystore your_keystore.jks e leia a linha Valid from para o seu alias, ou use o comando OpenSSL acima para ver as datas que o servidor em produção reporta. A vida útil dos certificados TLS públicos está a diminuir segundo as regras do CA/Browser Forum: a partir de 15 de março de 2026, o máximo é de 200 dias, descendo para 100 dias em 2027 e 47 dias em 2029. Acompanhe as datas de renovação e renove antes do vencimento, ou automatize a emissão onde a sua CA o suportar.

Economize 10% em certificados SSL ao fazer seu pedido hoje!

Emissão rápida, criptografia forte, 99,99% de confiança no navegador, suporte dedicado e garantia de reembolso de 25 dias. Código do cupom: SAVE10

Uma imagem detalhada de um dragão em voo
Escrito por

Redator de conteúdo experiente, especializado em certificados SSL. Transformação de tópicos complexos de segurança cibernética em conteúdo claro e envolvente. Contribua para melhorar a segurança digital por meio de narrativas impactantes.