Todos os produtos
Search
Central de documentação

Certificate Management Service:Instalar um certificado SSL em uma aplicação Spring Boot (Linux)

Última atualização: Jun 27, 2026

Este guia demonstra como ativar HTTPS em uma aplicação Spring Boot configurando um certificado SSL diretamente no servidor incorporado.

Pré-requisitos

Antes de começar, verifique se você possui:

  • Um certificado SSL válido emitido por uma autoridade certificadora confiável. Se o certificado estiver expirando ou já tiver expirado, renove-o antes de prosseguir.

  • Um certificado que cubra seus nomes de domínio. Para adicionar ou alterar domínios, compre um certificado comercial ou adicione e substitua nomes de domínio.

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

    Tipo de nome de domínio

    Cobertura

    Correspondência exata (example.com)

    Apenas example.com

    Correspondência exata (www.example.com)

    Apenas www.example.com

    Wildcard (*.example.com)

    Subdomínios de primeiro nível: www.example.com, a.example.comnão inclui o domínio raiz example.com nem subdomínios multiníveis como a.b.example.com

  • Acesso ao servidor: conta root ou com privilégios sudo.

  • DNS configurado: o registro DNS do domínio deve resolver para o endereço IP público do servidor.

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

  • Java 8 ou superior instalado no servidor.

Arquivos necessários:

Arquivo

Descrição

Arquivo de certificado

domain.p12 (formato PKCS12) ou domain.jks (formato JKS), baixado do Certificate Management Service

Arquivo de senha

p12-password.txt — contém a senha do keystore

Etapa 1: Preparar os arquivos de certificado

  1. Acesse o console do Certificate Management Service. Na coluna Actions do certificado desejado, clique em Download Certificate. Na aba Download, selecione JKS como tipo de servidor e baixe o arquivo de certificado.

    O Spring Boot suporta os formatos JKS e PKCS12 (.pfx). Este guia usa PKCS12 como exemplo. Após extrair o arquivo baixado, você obterá um arquivo de certificado (por exemplo, domain.p12 ) e um arquivo de senha ( p12-password.txt ).
  2. Faça upload do arquivo de certificado (.pfx ou .jks) e do arquivo de senha (.txt) para o servidor. Armazene-os em um diretório seguro fora da aplicação, como /etc/ssl/myapp. Para transferir arquivos, use o recurso de transferência de sua ferramenta de acesso remoto (PuTTY, Xshell ou WinSCP). Se o servidor estiver no Alibaba Cloud Elastic Compute Service (ECS), consulte Upload ou download de arquivos.

    Importante

    Não coloque arquivos de certificado ou chave privada no diretório src/main/resources. Essa prática empacota chaves sensíveis nos artefatos da aplicação (arquivos JAR ou WAR) e aumenta o risco de vazamento.

Etapa 2: Configurar a aplicação Spring Boot

Nota

Evite codificar informações sensíveis, como senhas de certificados, diretamente nos arquivos de configuração. Use variáveis de ambiente ou um gerenciador externo de segredos.

  1. Defina variáveis de ambiente para as senhas dos certificados:

    # Get the password from the password file you downloaded earlier.
    export SSL_KEYSTORE_PASSWORD='your_secure_password'
    # If the private key password differs from the keystore password, set it as well.
    export SSL_KEY_PASSWORD='your_key_password'
  2. Configure o SSL no arquivo application.properties ou application.yml. Este guia usa o Spring Boot 3.4.10 como exemplo.

    application.properties

    # Listen on port 443
    server.port=443
    
    # --- SSL configuration ---
    # Path to the certificate file. Use the 'file:' prefix to specify an external absolute path.
    server.ssl.key-store=file:/etc/myapp/ssl/keystore.p12
    # Type of the certificate keystore.
    server.ssl.key-store-type=PKCS12
    # Certificate alias, which is usually specified when generating the JKS/P12 file.
    server.ssl.key-alias=mycert
    
    # --- Password management ---
    # Read the password from an environment variable to avoid hard-coding it in the configuration file.
    server.ssl.key-store-password=${SSL_KEYSTORE_PASSWORD}
    # If the private key password differs from the keystore password, read it from an environment variable as well.
    server.ssl.key-password=${SSL_KEY_PASSWORD}
    
    # --- TLS protocols and cipher suites ---
    # Enable secure TLS protocol versions.
    server.ssl.enabled-protocols=TLSv1.2,TLSv1.3
    # Configure recommended strong cipher suites.
    server.ssl.ciphers=TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_AES_128_GCM_SHA256,ECDHE-RSA-AES256-GCM-SHA384,ECDHE-RSA-AES128-GCM-SHA256
    
    # Enable HTTP/2 to improve performance.
    server.http2.enabled=true

    application.yml

    server:
      port: 443 # Listen on port 443
    
      ssl:
        # --- SSL configuration ---
        # Path to the certificate file. Use the 'file:' prefix to specify an external absolute path.
        key-store: file:/etc/myapp/ssl/keystore.p12
        # Type of the certificate keystore.
        key-store-type: PKCS12
        # Certificate alias, which is usually specified when generating the JKS/P12 file.
        key-alias: mycert
    
        # --- Password management ---
        # Read the password from an environment variable to avoid hard-coding it in the configuration file.
        key-store-password: ${SSL_KEYSTORE_PASSWORD}
        # If the private key password differs from the keystore password, read it from an environment variable as well.
        key-password: ${SSL_KEY_PASSWORD}
    
        # --- TLS protocols and cipher suites ---
        # Enable secure TLS protocol versions.
        enabled-protocols: TLSv1.2,TLSv1.3
        # Configure recommended strong cipher suites.
        ciphers:
          - TLS_AES_256_GCM_SHA384
          - TLS_CHACHA20_POLY1305_SHA256
          - TLS_AES_128_GCM_SHA256
          - ECDHE-RSA-AES256-GCM-SHA384
          - ECDHE-RSA-AES128-GCM-SHA256
    
      # Enable HTTP/2 to improve performance.
      http2:
        enabled: true

Etapa 3: Abrir a porta 443

Garanta que tanto o firewall do sistema quanto o grupo de segurança na nuvem permitam tráfego de entrada na porta TCP 443.

Verificar se a porta 443 já está aberta

Execute o comando correspondente à sua distribuição Linux:

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 já está aberta.

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 já está aberta.

Se a porta 443 estiver fechada, siga as etapas abaixo.

Abrir a porta 443 no grupo de segurança

Importante

Se o servidor estiver em uma plataforma de nuvem, o grupo de segurança deve permitir tráfego TCP de entrada na porta 443. Os passos a seguir usam o Alibaba Cloud ECS como exemplo. Para outras plataformas, consulte a documentação respectiva.

Acesse a página de instâncias do Elastic Compute Service (ECS) e clique no nome da instância alvo. Na seção Security Group Details, adicione uma regra de grupo de segurança. Para instruções detalhadas, consulte Adicionar uma regra de grupo de segurança. Configure a regra da seguinte forma:

  • Action: Allow

  • Protocol: Custom TCP

  • Destination (current instance): HTTPS (443)

  • Source: 0.0.0.0/0 (anywhere)

Abrir a porta 443 no firewall do sistema

Execute o comando abaixo para identificar qual serviço de firewall está 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, nenhuma ação adicional é necessária. Caso contrário, execute o comando correspondente:

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 4: Iniciar ou reiniciar a aplicação

Acesse o diretório raiz do projeto Spring Boot e execute o comando adequado para sua ferramenta de build e ambiente.

Development and test (build plugins)

  • Maven:

    mvn spring-boot:run
  • Gradle:

    gradle bootRun

Production (standalone JAR)

Em produção, empacote e execute a aplicação como um arquivo .jar. Interrompa o processo em execução antes de reiniciar:

# 1. Find and stop the running process.
# ps -ef | grep your-app-name.jar
# kill <PID>
#
# 2. Restart the application. Add any JVM arguments before '&'.
nohup java -jar /path/to/your-app-name.jar &
Após reiniciar, verifique os logs da aplicação para confirmar se o serviço carregou o certificado SSL e iniciou na porta HTTPS.

Etapa 5: Verificar a implantação

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

  2. Se o certificado estiver implantado corretamente, um indicador de segurança aparecerá na barra de endereços. Caso encontre erros de acesso ou o indicador não apareça, limpe o cache do navegador ou tente usar o modo anônimo.

image

A partir da versão 117, o ícone image na barra de endereços do Chrome foi substituído pelo novo ícone image. Clique neste ícone para visualizar os detalhes do certificado.

Se o problema persistir, consulte a seção de perguntas frequentes para orientações sobre solução de problemas.

Entrando em produção

Antes de expor a aplicação em produção, aplique estas melhores práticas:

  • Execute como usuário sem privilégios administrativos. Crie um usuário de sistema dedicado e com baixos privilégios para a aplicação. Nunca execute com contas de nível administrativo.

    Para implantações de produção em grande escala, configure 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 termina o tráfego HTTPS e encaminha o tráfego HTTP descriptografado para a aplicação backend.
  • Externalize o gerenciamento de credenciais. Jamais codifique senhas ou outras informações sensíveis no código ou em arquivos de configuração. Injete credenciais via variáveis de ambiente, Vault ou um serviço de gerenciamento de chaves na nuvem.

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

  • Use apenas protocolos TLS modernos. Desative SSLv3, TLSv1.0 e TLSv1.1. Ative apenas TLSv1.2 e TLSv1.3.

  • Monitore certificados e automatize a renovação. Após a implantação, ative o monitoramento de domínios. O Certificate Management Service verifica automaticamente a validade dos certificados e envia lembretes de renovação antes da expiração. Para instruções de configuração, consulte Comprar e ativar monitoramento de nome de domínio público.

Perguntas frequentes

Por que o HTTPS está inacessível ou o certificado 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 permite tráfego de entrada na porta 443. Consulte Etapa 3: Abrir a porta 443.

  • Incompatibilidade de domínio. O domínio acessado não consta nos Bound Domains do certificado. Veja as regras de correspondência de domínio em Pré-requisitos.

  • Aplicação não reiniciada. O serviço Spring Boot não foi reiniciado após a modificação do arquivo de configuração. Consulte Etapa 4: Iniciar ou reiniciar a aplicação.

  • Configuração de certificado incorreta. Os arquivos de certificado não foram substituídos corretamente ou o caminho na configuração do Spring Boot está errado. Verifique se tanto o arquivo de configuração quanto o arquivo de certificado estão atualizados e válidos.

  • Certificado ausente em serviços upstream. Se o seu domínio usa Content Delivery Network (CDN), Server Load Balancer (SLB) ou Web Application Firewall (WAF), o certificado também deve ser instalado nesses serviços. Consulte Locais de implantação de certificado quando o tráfego passa por múltiplos serviços Alibaba Cloud.

  • Implantação incompleta em múltiplos servidores. Se o seu domínio resolve para vários servidores, o certificado deve ser instalado em todos eles.

Para mais soluções de problemas, consulte Resolver problemas de implantação de certificados com base em mensagens de erro do navegador e Guia de solução de problemas de implantação de certificados SSL.

Como atualizar ou substituir um certificado SSL em uma aplicação Spring Boot?

  1. Faça backup dos arquivos antigos. Faça backup dos arquivos de certificado e senha existentes no servidor.

  2. Baixe os novos arquivos. Obtenha os novos arquivos de certificado e chave privada no console do Certificate Management Service.

  3. Substitua os arquivos. Faça upload dos novos arquivos para o servidor, sobrescrevendo os antigos. Os novos arquivos devem usar exatamente o mesmo caminho e nome de arquivo especificados na configuração do Spring Boot.

  4. Reinicie a aplicação. Reinicie o Spring Boot para aplicar o novo certificado.