Todos os produtos
Search
Central de documentação

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

Última atualização: Jun 27, 2026

Ative o HTTPS em um servidor Apache Linux instalando um certificado SSL de domínio único, multidomínio ou curinga. Este guia aborda a preparação dos arquivos de certificado, a configuração do mod_ssl e do VirtualHost, além da verificação pós-implantação.

Pré-requisitos

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

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

  • Um certificado que cubra todos os domínios a proteger. Para adicionar ou alterar domínios vinculados, compre um novo certificado ou atualize os domínios vinculados.

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

  • Um registro DNS para o domínio que resolva 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.

Regras de cobertura de domínio:

Tipo de certificado

Cobertura

Correspondência exata

example.com protege apenas example.com; www.example.com protege apenas www.example.com

Curinga

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

Nota

Para cobrir subdomínios multinível, o campo Bound Domains deve incluir o domínio exato (por exemplo, a.b.example.com) ou um curinga correspondente (por exemplo, *.b.example.com).

Etapa 1: Preparar os arquivos de certificado

  1. Acesse a página Gerenciamento de Certificados SSL. Na coluna Actions do certificado, clique em Download Certificate. Na aba Download, selecione Apache como Server Type e baixe o pacote.

  2. Extraia o pacote baixado. Ele contém dois ou três arquivos, dependendo de como a Solicitação de Assinatura de Certificado (CSR) foi gerada:

    Nota

    Se você gerou a CSR com OpenSSL ou Keytool, a chave privada foi salva apenas na máquina local e não está incluída no pacote baixado. Caso a chave privada seja perdida, o certificado não poderá ser usado. Compre um novo certificado e gere uma nova CSR e chave privada.

    Cenário

    Arquivos no pacote

    Ação

    Chave gerenciada pelo sistema (CSR gerada pela Alibaba Cloud)

    <bound_domain_name>_public.crt, <bound_domain_name>_chain.crt, <bound_domain_name>.key

    Armazene todos os três arquivos em um local seguro.

    Chave autogerenciada (CSR gerada com OpenSSL ou Keytool)

    Apenas <bound_domain_name>_public.crt, <bound_domain_name>_chain.crt

    Implante estes arquivos juntamente com o arquivo de chave privada salvo localmente ao gerar a CSR.

  3. Faça upload do arquivo de certificado, do arquivo de cadeia de certificados e do arquivo de chave privada para um diretório seguro no servidor, como /etc/ssl/cert.

    Nota

    Utilize uma ferramenta de login remoto, como PuTTY, Xshell ou WinSCP, para fazer upload dos arquivos. Se o servidor for uma instância do Elastic Compute Service (ECS) da Alibaba Cloud, consulte Fazer upload ou download de arquivos.

Etapa 2: Abrir a porta 443

Certifique-se de que o firewall e o grupo de segurança do servidor permitam tráfego de entrada na porta 443.

Verificar se a porta 443 está aberta

Execute o comando a seguir para testar a conectividade da porta 443. Substitua <your_server_public_ip> pelo endereço IP público do 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

Saída esperada se a porta 443 estiver aberta: Ncat: Connected to <your_server_public_ip>:443

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

Saída esperada se a porta 443 estiver aberta: Connection to <your_server_public_ip> port [tcp/https] succeeded! ou [<your_server_public_ip>] 443 (https) open

Se a porta 443 não estiver aberta, conclua as duas subetapas a seguir.

Abrir a porta 443 no grupo de segurança

Importante

Se o servidor for executado em uma plataforma de nuvem, confirme se o grupo de segurança permite tráfego TCP de entrada na porta 443. Caso contrário, o serviço HTTPS ficará inacessível. As etapas abaixo usam o Alibaba Cloud ECS como exemplo; para outras plataformas, consulte a documentação correspondente.

Acesse a página de instâncias do Elastic Compute Service (ECS) e clique no nome da instância. Na seção Security Group Details, adicione uma regra de grupo de segurança com as seguintes configurações:

Campo

Valor

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 a seguir para identificar o 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, nenhuma ação adicional é necessária. Caso contrário, execute o comando correspondente ao tipo de 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 entre 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: Instalar o certificado no Apache

As etapas de configuração variam conforme a versão do Apache. Verifique a versão primeiro e siga as instruções correspondentes.

Verificar a versão do Apache e ativar o módulo SSL

Etapa 3a: Verificar a versão do Apache

RHEL/CentOS

httpd -v

Debian/Ubuntu

apache2 -v

Etapa 3b: Verificar se o módulo SSL está ativado

RHEL/CentOS

httpd -M | grep 'ssl_module'

Debian/Ubuntu

apachectl -M | grep 'ssl_module'

Se o módulo estiver carregado, a saída incluirá ssl_module (shared). Caso contrário, instale-o:

RHEL/CentOS

sudo yum install -y mod_ssl
# For RHEL/CentOS 8.0 and later:
sudo dnf install -y mod_ssl

Debian/Ubuntu

sudo a2enmod ssl

Configurar o VirtualHost

Apache 2.4.8 e posterior (recomendado)

Combinar os arquivos de certificado

Concatene o arquivo de certificado e o arquivo de cadeia em um único arquivo fullchain:

# Append the certificate chain to the server certificate to create a complete chain file.
cat domain_name_public.crt domain_name_chain.crt > domain_name_fullchain.pem

Isso gera dois arquivos: domain_name_fullchain.pem e domain_name.key.

Editar a configuração do VirtualHost SSL

Nota

O arquivo de configuração geralmente está em /etc/httpd/conf.d/ssl.conf (RHEL/CentOS) ou /etc/apache2/sites-available/your-site-ssl.conf (Debian/Ubuntu).

vim /etc/httpd/conf.d/ssl.conf

Atualize os parâmetros SSL no bloco VirtualHost:

<VirtualHost *:443>

    # Replace example.com with the domain name you want to secure.
    ServerName example.com

    # Certificate file. Use the path to the combined fullchain file.
    SSLCertificateFile /etc/ssl/cert/domain_name_fullchain.pem

    # Private key file. Replace with the path to your private key file.
    SSLCertificateKeyFile /etc/ssl/cert/domain_name.key

    # Other configurations
    # ...

</VirtualHost>

Apache 2.4.7 e anterior

Preparar os arquivos de certificado

Confirme se o diretório de certificados contém todos os três arquivos: domain_name_public.crt, domain_name_chain.crt e domain_name.key.

Editar a configuração do VirtualHost SSL

Nota

O arquivo de configuração geralmente está em /etc/httpd/conf.d/ssl.conf (RHEL/CentOS) ou /etc/apache2/sites-available/your-site-ssl.conf (Debian/Ubuntu).

vim /etc/httpd/conf.d/ssl.conf

Atualize os parâmetros SSL no bloco VirtualHost:

<VirtualHost *:443>

    # Replace example.com with the domain name bound to your certificate.
    ServerName example.com

    # Certificate file. Replace with the path to your certificate file.
    SSLCertificateFile /etc/ssl/cert/domain_name_public.crt

    # Certificate chain file (specified separately). Replace with the actual path.
    SSLCertificateChainFile /etc/ssl/cert/domain_name_chain.crt

    # Private key file. Replace with the path to your private key file.
    SSLCertificateKeyFile /etc/ssl/cert/domain_name.key

    # Other configurations
    # ...

</VirtualHost>

Validar e recarregar o Apache

Verifique a sintaxe da configuração:

RHEL/CentOS

sudo httpd -t

Debian/Ubuntu

sudo apache2ctl -t

Se a saída for Syntax OK, recarregue ou reinicie o Apache para aplicar o certificado:

RHEL/CentOS

# Reload (graceful, recommended):
sudo systemctl reload httpd

# Restart (force restart):
sudo systemctl restart httpd

Debian/Ubuntu

# Reload (graceful, recommended):
sudo systemctl reload apache2

# Restart (force restart):
sudo systemctl restart apache2

Etapa 4: Verificar a instalação

Abra https://yourdomain em um navegador (substitua yourdomain pelo domínio real). Um ícone de cadeado na barra de endereços confirma que o certificado está ativo.

image

Se nenhum ícone de cadeado aparecer ou se houver erro de acesso, limpe o cache do navegador ou tente novamente no modo anônimo.

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

Nota

Se ainda houver problemas, consulte a seção Perguntas frequentes abaixo.

Entrando em produção

Aplique estas práticas antes de implantar em produção:

  • Use uma conta de serviço não root: Crie um usuário de sistema dedicado e com poucos privilégios para o Apache. Nunca execute o servidor sob uma conta root ou de administrador.

    Nota

    Considere terminar o SSL na camada de balanceador de carga. Implante o certificado em um Server Load Balancer (SLB), que lida com HTTPS e encaminha o tráfego HTTP descriptografado para os servidores de back-end.

  • Mantenha credenciais fora do código: Nunca codifique senhas ou chaves privadas diretamente nos arquivos de configuração. Injete credenciais por meio de variáveis de ambiente, HashiCorp Vault ou um serviço de gerenciamento de chaves na nuvem.

  • Redirecione HTTP para HTTPS: Configure o Apache para redirecionar todo o tráfego HTTP para HTTPS, evitando ataques man-in-the-middle.

  • Desative protocolos TLS legados: Na configuração do Apache, desative SSLv3, TLSv1.0 e TLSv1.1. Ative apenas TLSv1.2 e TLSv1.3.

  • Monitore e renove antes da expiração: Após a implantação, ative o monitoramento de domínio. A Alibaba Cloud verifica a validade do certificado e envia lembretes de renovação antes da expiração. Consulte Comprar e ativar o monitoramento de nome de domínio público.

Perguntas frequentes

O HTTPS está inacessível após a instalação — o que devo verificar?

Siga as verificações abaixo em ordem:

  1. Porta 443 bloqueada: Confirme se a porta 443 está aberta tanto no grupo de segurança quanto no firewall do sistema. Consulte Etapa 2: Abrir a porta 443.

  2. Incompatibilidade de domínio: O domínio acessado não está listado nos Bound Domains do certificado. Consulte as regras de cobertura de domínio em Pré-requisitos.

  3. Apache não recarregado: O serviço Apache não foi recarregado ou reiniciado após a alteração de configuração. Consulte Validar e recarregar o Apache.

  4. Caminho de certificado incorreto ou arquivos obsoletos: Verifique se os caminhos no arquivo de configuração do Apache apontam para os arquivos de certificado corretos e atualizados.

  5. Certificado ausente em serviços upstream: Se o domínio passar por uma Content Delivery Network (CDN), Server Load Balancer (SLB) ou Web Application Firewall (WAF), instale o certificado também nesses serviços. Consulte Locais de implantação de certificados quando o tráfego passa por vários serviços da Alibaba Cloud.

  6. Implantação em vários servidores incompleta: Se o DNS do domínio resolver para vários servidores, instale o certificado em cada um deles.

O navegador mostra "certificate name mismatch" ou NET::ERR_CERT_COMMON_NAME_INVALID — o que isso significa?

O domínio acessado não corresponde a nenhum domínio nos Bound Domains do certificado. Verifique as regras de cobertura de domínio em Pré-requisitos e compre ou atualize o certificado, se necessário.

Como atualizar ou substituir um certificado SSL no Apache?

  1. Faça backup dos arquivos antigos: Salve cópias dos arquivos .crt e .key existentes no servidor.

  2. Baixe os novos arquivos: Obtenha o novo certificado e a chave privada no console de Gerenciamento de Certificados SSL.

  3. Substitua os arquivos: Faça upload dos novos arquivos para os mesmos caminhos especificados na configuração do Apache, sobrescrevendo os antigos.

  4. Recarregue o Apache: Execute sudo systemctl reload httpd (RHEL/CentOS) ou sudo systemctl reload apache2 (Debian/Ubuntu) para aplicar o novo certificado sem tempo de inatividade.