Instale um certificado SSL em um servidor JBoss para ativar o acesso HTTPS aos seus serviços web.
Este tópico usa Linux e jboss-as-7.1.1.Final como exemplos. As etapas podem variar em outras versões de sistema operacional ou lançamentos do JBoss.
Pré-requisitos
Você comprou e solicitou um certificado pelo SSL Certificates Service, e o Status é Issued. Para comprar e solicitar um certificado, consulte Comprar um certificado pago e Solicitar um certificado.
O nome de domínio está resolvido corretamente para o servidor atual.
Você tem permissões administrativas neste servidor (conta root ou conta com permissões sudo).
Procedimento
Etapa 1: Baixar o certificado SSL
-
Na página SSL Certificates, localize o certificado a ser implantado e confirme as seguintes informações:
Certificate Status: Verifique se o status é Issued. Se o status for About to Expire ou Expired, renove o certificado SSL.
-
Bound Domains: Verifique se o certificado cobre todos os nomes de domínio a serem protegidos. Caso contrário, os navegadores exibirão avisos de segurança quando os usuários acessarem nomes de domínio não correspondentes via HTTPS. Para adicionar ou modificar nomes de domínio, consulte Adicionar e substituir nomes de domínio.
Localize o certificado desejado. Na coluna Actions, clique em More. Na aba Download, defina Server Type como JKS e baixe os arquivos.
-
Os arquivos extraídos incluem um arquivo de keystore (
.jks) e um arquivo de senha (jks-password.txt). O keystore contém a chave privada e a cadeia de certificados completa para implantação.NotaJKS (Java KeyStore) é o formato padrão de keystore para ambientes Java.
Etapa 2: Instalar o certificado SSL no servidor JBoss
-
Faça logon no servidor Linux.
Servidor Alibaba Cloud
As operações a seguir usam uma instância ECS da Alibaba Cloud como exemplo. Para outros tipos de servidores, consulte a documentação respectiva.
Faça logon no console ECS. Na barra de navegação superior, selecione a região onde a instância ECS desejada está localizada.
No painel de navegação à esquerda, escolha . Na página Instances, localize a instância ECS desejada e clique em Remote Connection na coluna Remote connection.
Na caixa de diálogo exibida, selecione Workbench e clique em Sign in now.
-
Selecione Terminal Connection como método de conexão, insira as informações de autenticação e siga as instruções na tela para concluir o logon. Em seguida, acesse o terminal do servidor. Para mais informações, consulte Conectar-se a uma instância ECS usando o Workbench.
NotaSe o painel Security Group Whitelist Opening Prompt aparecer, clique em Add Rule conforme solicitado.
Outros provedores de nuvem
Use o recurso de conexão remota fornecido pelo provedor de nuvem para fazer logon no terminal do servidor.
Servidores on-premises
Use uma ferramenta SSH na máquina local para fazer logon no terminal do servidor.
Windows: Execute o comando
ssh <username>@<server_ip_address>no Prompt de Comando (cmd) ou PowerShell. Se o comando ssh não for suportado, use uma ferramenta de terceiros, como PuTTY ou WinSCP, para estabelecer a conexão.macOS/Linux: Execute o comando
ssh <username>@<server_ip_address>no terminal integrado.
Alguns comandos a seguir variam conforme o sistema operacional. Selecione o comando apropriado para o SO do servidor.
Série RHEL/CentOS: inclui Alibaba Cloud Linux, Red Hat Enterprise Linux, CentOS, AlmaLinux, Rocky Linux, Anolis OS e derivados.
Série Debian/Ubuntu: inclui Debian, Ubuntu e derivados.
-
Abra a porta 443 no grupo de segurança e no firewall.
-
Execute o seguinte comando no terminal do servidor para verificar se a porta 443 está aberta:
RHEL/CentOS
command -v nc > /dev/null 2>&1 || sudo yum install -y nc # Replace <your_server_public_ip_address> with the public IP address of your server. sudo ss -tlnp | grep -q ':443 ' || sudo nc -l 443 & sleep 1; nc -w 3 -vz <your_server_public_ip_address> 443Se a saída contiver
Ncat: Connected to <your_server_public_ip_address>:443, a porta 443 está aberta. Caso contrário, abra a porta 443 no grupo de segurança e no firewall.Debian/Ubuntu
command -v nc > /dev/null 2>&1 || sudo apt-get install -y netcat # Replace <your_server_public_ip_address> with the public IP address of your server. sudo ss -tlnp | grep -q ':443 ' || sudo nc -l -p 443 & sleep 1; nc -w 3 -vz <your_server_public_ip_address> 443Se a saída contiver
Connection to <your_server_public_ip_address> port [tcp/https] succeeded!ou[<your_server_public_ip_address>] 443 (https) open, a porta 443 está aberta. Caso contrário, abra a porta 443 no grupo de segurança e no firewall. -
Abra a porta 443 no grupo de segurança.
ImportanteSe o servidor estiver implantado em uma plataforma de nuvem, certifique-se de que o grupo de segurança permita tráfego de entrada na porta TCP 443. Caso contrário, o serviço não estará acessível pela internet. As operações a seguir usam uma instância ECS da Alibaba Cloud como exemplo. Para outras plataformas de nuvem, consulte a documentação oficial correspondente.
Acesse a página Instâncias ECS e clique no nome da instância desejada para ir à página de detalhes. Para mais informações, consulte Adicionar uma regra de grupo de segurança. Adicione uma regra ao security group com Action definida como Allow, Protocol Type definido como TCP, Port Range definido como HTTPS(443) e Authorization Object definido como Anywhere (0.0.0.0/0).
-
Abra a porta 443 no firewall.
Execute o seguinte comando para identificar o serviço de firewall atual no sistema:
if command -v systemctl >/dev/null 2>&1 && systemctl is-active --quiet firewalld; then echo "firewalld" elif command -v ufw >/dev/null 2>&1 && sudo ufw status | grep -qw active; then echo "ufw" elif command -v nft >/dev/null 2>&1 && sudo nft list ruleset 2>/dev/null | grep -q 'table'; then echo "nftables" elif command -v systemctl >/dev/null 2>&1 && systemctl is-active --quiet iptables; then echo "iptables" elif command -v iptables >/dev/null 2>&1 && sudo iptables -L 2>/dev/null | grep -qE 'REJECT|DROP|ACCEPT'; then echo "iptables" else echo "none" fiSe a saída for
none, nenhuma ação adicional é necessária. Caso contrário, com base no tipo de firewall (firewalld,ufw,nftablesouiptables), execute o comando correspondente para abrir a porta 443:firewalld
sudo firewall-cmd --permanent --add-port=443/tcp && sudo firewall-cmd --reloadufw
sudo ufw allow 443/tcpnftables
sudo nft add table inet filter 2>/dev/null sudo nft add chain inet filter input '{ type filter hook input priority 0; }' 2>/dev/null sudo nft add rule inet filter input tcp dport 443 counter accept 2>/dev/nulliptables
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPTPara evitar que as regras do iptables sejam perdidas após a reinicialização do sistema, execute o seguinte comando para tornar as regras persistentes:
RHEL/CentOS
sudo yum install -y iptables-services sudo service iptables saveDebian/Ubuntu
sudo apt-get install -y iptables-persistent sudo iptables-save | sudo tee /etc/iptables/rules.v4 >/dev/null
-
-
Crie um diretório cert dentro do diretório standalone/configuration do JBoss para o arquivo de keystore.
mkdir cert # Create a certificate directory named cert. -
Carregue o arquivo de keystore no diretório cert.
NotaUse uma ferramenta de logon remoto, como PuTTY, Xshell ou WinSCP, para carregar o arquivo.
Se você usar uma instância do Elastic Compute Service (ECS) da Alibaba Cloud, consulte Transferir arquivos para uma instância Windows usando Área de Trabalho Remota ou Windows APP ou Carregar um arquivo em uma instância Linux.
-
Abra o
standalone.xml, localize o conector HTTPS (<connector name="https">) em<subsystem xmlns="urn:jboss:domain:web:1.1">e atualize-o da seguinte forma:<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false"> <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/> <!-- Configure the certificate password and path. Set password to the certificate password from jks-password.txt. Set certificate-key-file to the actual path where the certificate is stored. --> <connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true"> <ssl name="https" password="******" certificate-key-file="../standalone/configuration/cert/domain_name.jks"/> </connector> </subsystem> <!--Configure remote access to JBoss and the HTTPS port--> <interfaces> <interface name="management"> <inet-address value="${jboss.bind.address.management:127.0.0.1}"></inet> </interface> <!--Enable remote access--> <interface name="public"> <inet-address value="${jboss.bind.address:0.0.0.0}"></inet> </interface> <interface name="unsecure"> <inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"></inet> </interface> </interfaces> <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}"> <socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"></socket> <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"></socket> <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9443}"></socket> <socket-binding name="ajp" port="8009"></socket> <!--Change the HTTP port to 80--> <socket-binding name="http" port="80"></socket> <!--Change the HTTPS port to 443--> <socket-binding name="https" port="443"></socket> <socket-binding name="osgi-http" interface="management" port="8090"></socket> <socket-binding name="remoting" port="4447"></socket> <socket-binding name="txn-recovery-environment" port="4712"></socket> <socket-binding name="txn-status-manager" port="4713"></socket> <outbound-socket-binding name="mail-smtp"> <remote-destination host="localhost" port="25"></remote> </outbound-socket-binding> </socket-binding-group> -
Acesse o diretório bin do JBoss e execute o seguinte comando para reiniciar o servidor.
sh standalone.sh
Etapa 3: Verificar a instalação
Acesse o nome de domínio via HTTPS. Exemplo:
https://example.com. Substituaexample.compelo nome de domínio real.-
Se um ícone de cadeado aparecer na barra de endereços do navegador, o certificado foi implantado com sucesso. Se ocorrer um erro de acesso ou o ícone de cadeado não aparecer, limpe o cache do navegador ou tente novamente no modo anônimo ou privado.

A partir do Chrome 117, o ícone
na barra de endereços foi substituído por um novo ícone
. Clique neste ícone para visualizar as informações do cadeado de segurança.
Se o problema persistir, consulte as Perguntas frequentes para solução de problemas.
Perguntas frequentes
Certificado não funciona ou HTTPS inacessível
Causas comuns:
A porta 443 não está aberta no grupo de segurança ou no firewall do servidor. Abrir a porta 443 no grupo de segurança e no firewall.
Os Bound Domains do certificado não incluem o nome de domínio acessado. Verificar se o certificado corresponde aos nomes de domínio desejados.
O serviço JBoss não foi reiniciado após a alteração de configuração. Reiniciar o servidor JBoss.
O arquivo de keystore não foi substituído corretamente ou o caminho do certificado na configuração do JBoss está incorreto. Verifique se o arquivo de configuração e o arquivo de keystore estão atualizados e válidos.
O nome de domínio está integrado a serviços de nuvem como CDN, SLB ou WAF, mas o certificado não está instalado no serviço correspondente. Para mais informações, consulte Local de implantação do certificado quando o tráfego passa por vários serviços de nuvem.
O nome de domínio resolve para vários servidores, mas o certificado está instalado apenas em alguns deles. Instale o certificado em cada servidor.
Para mais soluções de problemas, consulte Solucionar problemas de implantação de certificados com base em erros do navegador e Guia de solução de problemas de implantação de certificado SSL.
Como atualizar um certificado SSL no JBoss?
Faça backup do arquivo de keystore original (.jks) e do arquivo de senha (.txt) no servidor. Baixe os novos arquivos no console do Certificate Management Service e carregue-os no mesmo caminho com os mesmos nomes de arquivo. Reinicie o JBoss para que o novo certificado entre em vigor.