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
rootou com privilégiossudono 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 |
|
|
Curinga |
|
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
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.
-
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:
NotaSe 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>.keyArmazene 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.crtImplante estes arquivos juntamente com o arquivo de chave privada salvo localmente ao gerar a CSR.
-
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.NotaUtilize 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
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
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
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.

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
foi substituído por
. Clique neste ícone para visualizar os detalhes do certificado.
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.
NotaConsidere 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:
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.
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.
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.
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.
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.
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.
Para solucionar outros 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.
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?
Faça backup dos arquivos antigos: Salve cópias dos arquivos
.crte.keyexistentes no servidor.Baixe os novos arquivos: Obtenha o novo certificado e a chave privada no console de Gerenciamento de Certificados SSL.
Substitua os arquivos: Faça upload dos novos arquivos para os mesmos caminhos especificados na configuração do Apache, sobrescrevendo os antigos.
Recarregue o Apache: Execute
sudo systemctl reload httpd(RHEL/CentOS) ousudo systemctl reload apache2(Debian/Ubuntu) para aplicar o novo certificado sem tempo de inatividade.