Todos os produtos
Search
Central de documentação

Certificate Management Service:Instalar um certificado SSL em um servidor Jetty (Linux)

Última atualização: Jul 30, 2026

Por padrão, o Jetty transmite dados via HTTP, o que expõe seus serviços a riscos como interceptação e sequestro de sessão. A instalação de um certificado SSL ativa o HTTPS, criptografa o tráfego entre clientes e o servidor e verifica a identidade do servidor.

Importante

Este guia utiliza Linux e jetty-distribution-9.4.51.v20230217 como ambiente de exemplo. Os passos podem variar conforme seu sistema operacional ou versão do Jetty.

Pré-requisitos

Antes de começar, certifique-se de ter:

  • Um certificado SSL emitido por uma autoridade certificadora confiável. Caso o certificado esteja expirando ou já tenha expirado, renove-o antes de prosseguir.

  • Um certificado que cubra todos os nomes de domínio que você deseja proteger. Para adicionar ou alterar domínios, purchase a commercial certificate ou atualize the bound domains.

    Para cobrir subdomínios de vários níveis, o campo Bound Domains deve conter o domínio exato (por exemplo, a.b.example.com ) ou um wildcard correspondente (por exemplo, *.b.example.com ).

    Tipo de domínio

    Cobertura

    Correspondência exata (example.com)

    Apenas o domínio especificado

    Wildcard (*.example.com)

    Somente subdomínios de primeiro nível (www.example.com, a.example.com). Não cobre o domínio raiz example.com nem subdomínios multinível, como a.b.example.com.

  • Uma conta root ou uma conta com privilégios sudo no servidor.

  • Resolução de DNS: O nome de domínio resolve para o endereço IP público do servidor.

  • Um registro DNS que resolva seu domínio para o endereço IP público do servidor.

Etapa 1: Baixe o certificado SSL

  1. Acesse a página SSL Certificate Management. Na coluna Actions do certificado desejado, clique em More para acessar a página de detalhes do certificado. Na aba Download, baixe o certificado com Server Type definido como JKS.

    Java KeyStore (JKS) é o formato de keystore proprietário para ambientes Java.
  2. Extraia o pacote. Ele contém um arquivo .jks (o arquivo de certificado que inclui a cadeia completa de certificados) e um arquivo jks-password.txt (a senha do keystore).

Etapa 2: Configure o ambiente de sistema e rede

Esta etapa garante que a aplicação possa escutar na porta especificada e que grupos de segurança e firewalls permitam tráfego externo.

Abrir a porta 443 no grupo de segurança

Se o seu servidor estiver executando no Elastic Compute Service (ECS) da Alibaba Cloud, adicione uma regra de entrada ao grupo de segurança:

  1. Acesse a página Elastic Compute Service (ECS) instances e clique em no nome da instância desejada.

  2. Na seção Security Group Details, adicione uma regra com as configurações abaixo e salve. Para instruções detalhadas, consulte Add a security group rule.

    Campo

    Valor

    Action

    Allow

    Protocol

    Custom TCP

    Destination (Current Instance)

    HTTPS (443)

    Source

    0.0.0.0/0 (anywhere)

Para outras plataformas cloud, consulte a documentação respectiva.

Verifique se a porta 443 já está aberta

Execute o comando a seguir para verificar se a porta 443 está acessível. Substitua <your_server_public_ip> pelo endereço IP público do seu servidor.

RHEL/CentOS

command -v nc > /dev/null 2>&1 || sudo yum install -y nc
# Replace <your_server_public_ip> 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> 443

Se a saída for Ncat: Connected to <your_server_public_ip>:443, a porta 443 está aberta. Caso contrário, prossiga para abri-la no firewall.

Debian/Ubuntu

command -v nc > /dev/null 2>&1 || sudo apt-get install -y netcat
# Replace <your_server_public_ip> 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> 443

Se a saída for Connection to <your_server_public_ip> port [tcp/https] succeeded! ou [<your_server_public_ip>] 443 (https) open, a porta 443 está aberta.

Abrir a porta 443 no firewall

Primeiro, identifique o service de firewall ativo:

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"
fi

Se a saída for none, nenhum firewall está ativo e nenhuma ação adicional é necessária. Caso contrário, execute o comando correspondente ao seu firewall:

firewalld

sudo firewall-cmd --permanent --add-port=443/tcp && sudo firewall-cmd --reload

ufw

sudo ufw allow 443/tcp

nftables

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/null

iptables

sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Para persistir as regras do iptables após reinicializações:

RHEL/CentOS

sudo yum install -y iptables-services
sudo service iptables save

Debian/Ubuntu

sudo apt-get install -y iptables-persistent
sudo iptables-save | sudo tee /etc/iptables/rules.v4 >/dev/null

Etapa 3: Instale o certificado SSL no Jetty

Configure a estrutura de diretórios

O Jetty separa o diretório de instalação ($JETTY_HOME) do diretório de trabalho ($JETTY_BASE). Mantenha-os separados para simplificar futuras atualizações.

# Example: Jetty is installed in /usr/local/jetty; the application runs from /var/www/my-app.
export JETTY_HOME=/usr/local/jetty
export JETTY_BASE=/var/www/my-app

# Create directories for certificate files and web application resources.
mkdir -p $JETTY_BASE/cert
mkdir -p $JETTY_BASE/webapps

cd $JETTY_BASE

Fazer upload dos arquivos de certificado

Transfira o arquivo .jks e o arquivo jks-password.txt para o diretório $JETTY_BASE/cert/ usando uma ferramenta de transferência de arquivos como PuTTY, Xshell ou WinSCP. Se o seu servidor estiver no ECS da Alibaba Cloud, consulte Upload or download files.

Ative o módulo SSL

No diretório $JETTY_BASE, execute o comando a seguir para inicializar o módulo ssl. Isso gera os arquivos ssl.ini e https.ini em $JETTY_BASE/start.d/.

java -jar $JETTY_HOME/start.jar --add-to-start=ssl

Configure o caminho e a senha do certificado

Abra o arquivo $JETTY_BASE/start.d/ssl.ini para edição:

vim $JETTY_BASE/start.d/ssl.ini

Localize e atualize os parâmetros a seguir. Certifique-se de que nenhum deles esteja comentado com #.

jetty.ssl.keyStorePath=cert/your_domain.jks
jetty.ssl.keyStorePassword=<password from jks-password.txt>
jetty.ssl.keyManagerPassword=<password from jks-password.txt>

Parâmetro

Descrição

Exemplo

jetty.ssl.keyStorePath

Caminho relativo de $JETTY_BASE até o arquivo .jks

cert/your_domain.jks

jetty.ssl.keyStorePassword

Senha obtida em jks-password.txt

—

jetty.ssl.keyManagerPassword

Mesmo valor de keyStorePassword para certificados JKS da Alibaba Cloud

—

Os nomes de parâmetros mais antigos jetty.ssl.keystore.path , jetty.ssl.keystore.password e jetty.ssl.keymanager.password foram descontinuados. Utilize os nomes em camelCase mostrados acima.

Etapa 4: Reiniciar o Jetty

A partir do diretório $JETTY_BASE, inicie o servidor Jetty com sudo. A porta 443 é privilegiada e exige permissões de root.

# Change to the Jetty working directory.
cd $JETTY_BASE

# Start the service.
sudo java -jar $JETTY_HOME/start.jar

Etapa 5: Verifique a instalação

  1. Abra um navegador e acesse https://yourdomain. Substitua yourdomain pelo seu domínio real.

  2. Um ícone de cadeado na barra de endereços confirma que o certificado foi instalado corretamente. Se houver erro de acesso ou ausência do ícone, limpe o cache do navegador ou tente novamente no modo anônimo.

image

A partir do Chrome 117, o ícone de cadeado image foi substituído por image. Clique em neste ícone para visualizar os detalhes do certificado.

image.png

Uma resposta Error 404 indica que o Jetty iniciou com sucesso, mas não há nenhuma aplicação web implantada. Esse comportamento é esperado em uma instalação nova.

Entrando em produção

Ao migrar para produção, aplique estas práticas para melhorar a segurança e a estabilidade:

  • Executar como usuário não root: Crie uma conta de sistema dedicada e com baixos privilégios para a aplicação. Nunca execute o Jetty como root.

    Uma abordagem recomendada é terminar o SSL na camada de gateway — implante o certificado em um Server Load Balancer (SLB) ou em um proxy reverso como o Nginx. O gateway gerencia o HTTPS e encaminha o tráfego HTTP descriptografado para o Jetty.
  • Externalizar credenciais: Nunca codifique senhas ou valores sensíveis diretamente nos arquivos de configuração. Utilize variáveis de ambiente, um gerenciador de segredos ou um service de gerenciamento de chaves cloud para injetar credenciais em tempo de execução.

  • Impor redirecionamento de HTTP para HTTPS: Redirecione todo o tráfego HTTP para HTTPS para evitar ataques man-in-the-middle.

  • Desativar protocolos TLS legados: Na configuração do servidor, desative SSLv3, TLS 1.0 e TLS 1.1. Ative apenas TLS 1.2 e TLS 1.3.

  • Monitorar certificados e automatizar renovação: Após a implantação, ative o monitoramento de domínios. A Alibaba Cloud verifica a validade dos certificados e envia lembretes de renovação antes da expiração, permitindo que você aja antes de qualquer interrupção do service. Consulte Purchase and enable public domain name monitoring.

Perguntas frequentes

O HTTPS não funciona após a instalação

Verifique os itens a seguir nesta ordem:

  • Porta 443 bloqueada: O grupo de segurança ou firewall não está permitindo tráfego de entrada na porta 443. Consulte Configure o ambiente de sistema e rede.

  • Incompatibilidade de domínio: O domínio acessado não consta nos Bound Domains do certificado. Consulte a seção de pré-requisitos para regras de cobertura wildcard e correspondência exata.

  • Jetty não reiniciado: Alterações de configuração só entram em vigor após reinicialização. Consulte Restart Jetty.

  • Caminho ou senha do certificado incorretos: Verifique se jetty.ssl.keyStorePath aponta para o arquivo .jks correto e se a senha em ssl.ini corresponde à de jks-password.txt.

  • Certificado ausente em services upstream: Se o seu domínio utiliza Content Delivery Network (CDN), Server Load Balancer (SLB) ou Web Application Firewall (WAF), instale o certificado também nesses services. Consulte Certificate deployment locations when traffic passes through multiple Alibaba Cloud services.

  • Múltiplos servidores: Se o DNS resolver para mais de um servidor, instale o certificado em todos eles.

Para solução de problemas adicionais, consulte Resolve certificate deployment issues based on browser error messages e SSL certificate deployment troubleshooting guide.

Como substituir um certificado SSL no Jetty?

  1. Fazer backup dos arquivos antigos: Salve os arquivos .jks e jks-password.txt existentes no seu servidor.

  2. Obter novos arquivos: Baixe o novo certificado no console do Certificate Management Service.

  3. Substituir arquivos: Faça upload dos novos arquivos para o mesmo caminho especificado em ssl.ini, sobrescrevendo os antigos.

  4. Reiniciar o Jetty: Reinicie o service para aplicar o novo certificado.

Falha na inicialização: "Address already in use" ou "Port is already occupied"

A porta 443 já está vinculada a outro processo. Execute sudo ss -tlnp | grep :443 ou sudo lsof -i:443 para identificar o processo e interrompê-lo. Causas comuns incluem Nginx, Apache ou um listener de teste que não foi encerrado.

Falha na inicialização: "Permission denied"

No Linux, vincular-se a portas abaixo de 1024 requer permissões de root. Inicie o Jetty com sudo. Em produção, evite executar services diretamente como root — utilize setcap para conceder ao binário Java a capacidade de se vincular a portas privilegiadas:

sudo setcap 'cap_net_bind_service=+ep' /path/to/your/java

Alternativamente, coloque o Jetty atrás de um proxy reverso como o Nginx, que escuta na porta 443 e encaminha o tráfego para uma porta não privilegiada.