As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Tutorial: Configurar SSL/TLS no Amazon Linux AMI
nota
O Amazon Linux 1 (AL1, antigo Amazon Linux AMI) não é mais suportado. Este guia está disponível somente para fins de referência.
Secure Layer/Transport Sockets Layer Security (SSL/TLS) creates an encrypted channel
between a web server and web client that protects data in transit from being eavesdropped
on. This tutorial explains how to add support manually for SSL/TLSem uma EC2 instância com o Amazon Linux AMI e o servidor web Apache). Este tutorial pressupõe que você não esteja usando um balanceador de carga. Se você estiver usando Elastic Load Balancing, poderá optar por configurar o descarregamento do SSL no balanceador de carga, usando, em vez disso, um certificado do AWS Certificate Manager
Por motivos históricos, a criptografia na Web é conhecida simplesmente como SSL. Embora os navegadores da Web ainda ofereçam suporte ao SSL, o protocolo sucessor, o TLS, é menos vulnerável a ataques. A AMI do Amazon Linux desabilita o suporte no lado do servidor para todas as versões do SSL por padrão. Órgãos de normas de segurança
Este tutorial refere-se à criptografia da web moderna simplesmente como TLS.
Importante
Esses procedimentos são destinados à AMI do Amazon Linux. Se estiver tentando configurar um servidor web LAMP em uma instância com distribuição diferente, alguns procedimentos deste tutorial poderão não funcionar para você. Para AL2, consulte Configurar SSL/TLS ativado AL2. Para o Ubuntu, consulte a seguinte documentação da comunidade: Open SSL on Ubuntu
nota
Como alternativa, você pode usar o AWS Certificate Manager (ACM) para enclaves AWS Nitro, que é um aplicativo de enclave que permite usar SSL/TLS certificados públicos e privados com seus aplicativos e servidores web em execução em instâncias da Amazon EC2 com o Nitro Enclaves. AWS O Nitro Enclaves é um EC2 recurso da Amazon que permite a criação de ambientes computacionais isolados para proteger e processar com segurança dados altamente confidenciais, como certificados e chaves privadas. SSL/TLS
O ACM for Nitro Enclaves funciona com o nginx em execução na sua instância Amazon EC2 Linux para criar chaves privadas, distribuir certificados e chaves privadas e gerenciar renovações de certificados.
Para usar o ACM for Nitro Enclaves, é necessário usar uma instância do Linux habilitada para enclave.
Para obter mais informações, consulte O que são AWS Nitro Enclaves? e AWS Certificate Managerpara Nitro Enclaves no Guia do usuário do AWSNitro Enclaves.
Conteúdos
Pré-requisitos
Antes de começar este tutorial, conclua as seguintes etapas:
-
Execute uma instância baseada em EBS usando a AMI do Amazon Linux. Para obter mais informações, consulte Iniciar uma instância no Guia EC2 do usuário da Amazon.
-
Configure seu security group para permitir que sua instância aceite conexões nas seguintes portas TCP:
-
SSH (porta 22)
-
HTTP (porta 80)
-
HTTPS (porta 443)
Para obter mais informações, consulte Regras de grupos de segurança no Guia EC2 do usuário da Amazon.
-
-
Instale o servidor da web do Apache. Para step-by-step obter instruções, consulte Tutorial: Instalando um servidor web LAMP no Amazon Linux. Somente o pacote http24 e suas dependências são necessários. Você pode ignorar as instruções que envolvem PHP e MySQL.
-
Para identificar e autenticar sites, a infraestrutura de chave pública (PKI) do TLS depende do Domain Name System (DNS). Para usar sua EC2 instância para hospedar um site público, você precisa registrar um nome de domínio para seu servidor web ou transferir um nome de domínio existente para seu EC2 host da Amazon. Há vários serviços de registro de domínio e de hospedagem DNS de terceiros disponíveis para isso, ou você pode usar o Amazon Route 53.
Etapa 1: habilitar o TLS no servidor
Opção: concluir este tutorial usando a automação
Para concluir este tutorial usando, AWS Systems Manager em vez das tarefas a seguir, execute o documento de automação
Este procedimento auxilia no processo de configuração do TLS no Amazon Linux com um certificado digital autoassinado.
nota
Um certificado autoassinado é aceitável para testes, mas não para produção. Quando você expõe seu certificado autoassinado na Internet, os visitantes de seu site recebem avisos de segurança.
Para habilitar o TLS em um servidor
-
Conecte-se à sua instância e confirme se o Apache está em execução.
[ec2-user ~]$sudo service httpd statusSe necessário, inicie o Apache.
[ec2-user ~]$sudo service httpd start -
Para garantir que todos os pacotes de software estejam atualizados, execute uma atualização rápida de software em sua instância. Esse processo pode levar alguns minutos, mas é importante ter certeza de que você tem as atualizações de segurança e correções mais recentes.
nota
A opção
-yinstala as atualizações sem solicitar confirmação. Para examinar as atualizações antes da instalação, você pode omitir essa opção.[ec2-user ~]$sudo yum update -y -
Agora que sua instância está atualizada, adicione o suporte ao TLS instalando o módulo
mod_ssldo Apache:[ec2-user ~]$sudo yum install -y mod_sslSua instância agora possui os seguintes arquivos que você usará para configurar seu servidor seguro e criar um certificado para teste:
/etc/httpd/conf.d/ssl.confO arquivo de configuração para mod_ssl. Contém as "diretrizes" que informam ao Apache onde encontrar chaves de criptografia e certificados, as versões do protocolo TLS a serem permitidas e as cifras de criptografia a serem aceitas.
/etc/pki/tls/private/localhost.keyUma chave privada RSA de 2048 bits gerada automaticamente para seu host Amazon. EC2 Durante a instalação, o OpenSSL usou essa chave para gerar um certificado autoassinado do host, e você também pode usar essa chave para gerar uma solicitação de assinatura de certificado (CSR) a ser enviada a uma autoridade de certificação (CA).
/etc/pki/tls/certs/localhost.crtUm certificado de X.509 autoassinado gerado automaticamente para seu servidor de host. Esse certificado é útil para testar se o Apache está configurado corretamente para usar o TLS.
Os arquivos
.keye.crtestão no formato PEM, que consiste em caracteres ASCII codificados em Base64 enquadrados pelas linhas "BEGIN" e "END", como neste exemplo abreviado de um certificado:-----BEGIN CERTIFICATE----- MIIEazCCA1OgAwIBAgICWxQwDQYJKoZIhvcNAQELBQAwgbExCzAJBgNVBAYTAi0t MRIwEAYDVQQIDAlTb21lU3RhdGUxETAPBgNVBAcMCFNvbWVDaXR5MRkwFwYDVQQK DBBTb21lT3JnYW5pemF0aW9uMR8wHQYDVQQLDBZTb21lT3JnYW5pemF0aW9uYWxV bml0MRkwFwYDVQQDDBBpcC0xNzItMzEtMjAtMjM2MSQwIgYJKoZIhvcNAQkBFhVy ... z5rRUE/XzxRLBZOoWZpNWTXJkQ3uFYH6s/sBwtHpKKZMzOvDedREjNKAvk4ws6F0 WanXWehT6FiSZvB4sTEXXJN2jdw8g+sHGnZ8zCOsclknYhHrCVD2vnBlZJKSZvak 3ZazhBxtQSukFMOnWPP2a0DMMFGYUHOd0BQE8sBJxg== -----END CERTIFICATE-----Os nomes e as extensões dos arquivos são uma conveniência e não têm efeito sobre a função. Você pode chamar um certificado de
cert.crt,cert.pemou qualquer outro nome de arquivo, desde que a diretriz relacionada no arquivossl.confuse o mesmo nome.nota
Ao substituir os arquivos TLS padrão por seus próprios arquivos personalizados, verifique se eles estão no formato PEM.
-
Reinicie o Apache.
[ec2-user ~]$sudo service httpd restart -
Seu servidor da web do Apache agora deve oferecer suporte a HTTPS (HTTP seguro) por meio da porta 443. Teste digitando o endereço IP ou o nome de domínio totalmente qualificado da sua EC2 instância na barra de URL do navegador com o prefixo
https://. Como você está se conectando a um site com um certificado de host autoassinado não confiável, o navegador poderá exibir uma série de avisos de segurança.Ignore os avisos e continue para o site. Se a página de teste padrão do Apache for aberta, a configuração do TLS no servidor estará correta. Todos os dados que passam entre o navegador e o servidor agora estão criptografados com segurança.
Para impedir que os visitantes do site encontrem telas de avisos, você precisa obter um certificado que, além de criptografar, também autentique você publicamente como o proprietário do site.
Etapa 2: obter um certificado assinado por uma CA
Você pode seguir este processo para obter um certificado assinado por uma CA:
-
Gere uma solicitação de assinatura de certificado (CSR) a partir de uma chave privada
-
Enviar a CSR para uma autoridade de certificação (CA)
-
Obtenha um certificado de host assinado
-
Configure o Apache para usá-lo
Um certificado de host TLS X.509 autoassinado é idêntico em termos criptológicos a um certificado assinado por uma CA. A diferença é social, não matemática. Uma CA promete validar, no mínimo, a propriedade de um domínio antes de emitir um certificado para um candidato. Cada navegador da Web contém uma lista de CAs informações confiáveis do fornecedor do navegador para fazer isso. Primariamente, um certificado X.509 consiste em uma chave pública, que corresponde à chave privada do servidor, e uma assinatura pela CA que é vinculada criptograficamente à chave pública. Quando um navegador se conecta a um servidor web via HTTPS, o servidor apresenta um certificado para o navegador verificar sua lista de confiáveis CAs. Se o assinante estiver na lista ou for acessível por meio de uma cadeia de confiança que consiste em outros assinantes confiáveis, o navegador negociará um canal rápido de dados criptografados com o servidor e carregará a página.
Geralmente, os certificados são caros devido ao trabalho envolvido na validação das solicitações, portanto, vale a pena comparar os preços. Alguns CAs oferecem certificados de nível básico gratuitamente. O mais notável deles CAs é o projeto Let's Encrypt
Se você planeja oferecer serviços de nível comercial, o AWS Certificate Manager é uma boa opção.
É importante ter um certificado de host subjacente. Desde 2017, grupos governamentais
As instruções para adquirir certificados de host assinados pela CA não funcionarão, a menos que você possua um domínio DNS registrado e hospedado.
Para obter um certificado assinado por uma CA
-
Conecte-se à sua instância e navegue até/etc/pki/tls/private/. Esse é o diretório onde a chave privada do servidor para TLS é armazenada. Se você preferir usar sua chave de host existente para gerar a CSR, vá para a Etapa 3.
-
(Opcional) Gerar uma nova chave privada. Estes são alguns exemplos de configurações de chave. Qualquer uma das chaves resultantes funciona com seu servidor web, mas elas variam em como (e quanto) de segurança implementam.
-
Exemplo 1: criar uma chave host de RSA padrão. O arquivo resultante,
custom.key, é uma chave privada de RSA de 2048 bits.[ec2-user ~]$sudo openssl genrsa -out custom.key -
Exemplo 2: criar uma chave de RSA mais forte com um módulo maior. O arquivo resultante,
custom.key, é uma chave privada de RSA de 4096 bits.[ec2-user ~]$sudo openssl genrsa -out custom.key 4096 -
Exemplo 3: criar uma chave de RSA de 4096 bits criptografada com proteção por senha. O arquivo resultante,
custom.key, é uma chave privada de RSA de 4096 bits criptografada com a cifra AES-128.Importante
A criptografia da chave fornece maior segurança, mas como uma chave criptografada requer uma senha, os serviços que dependem dela não podem ser iniciados automaticamente. Sempre que usar essa chave, você precisará fornecer a senha (no exemplo anterior, "abcde12345") por meio de uma conexão SSH.
[ec2-user ~]$sudo openssl genrsa -aes128 -passout pass:abcde12345 -out custom.key 4096 -
Exemplo 4: criar uma chave usando uma cifra não RSA. A criptografia RSA pode ser relativamente devagar devido ao tamanho de suas chaves públicas, que são baseadas no produto de dois números primos grandes. No entanto, é possível criar chaves para TLS que usam códigos não RSA. As chaves baseadas em matemática de curvas elípticas são menores e computacionalmente mais rápidas para fornecer um nível de segurança equivalente.
[ec2-user ~]$sudo openssl ecparam -name prime256v1 -out custom.key -genkeyO resultado é uma chave privada de curva elíptica de 256 bits que usa prime256v1, uma "curva nomeada" compatível com OpenSSL. A força de criptografia é um pouco maior que uma chave de RSA de 2048 bits, de acordo com o NIST
. nota
Nem todos CAs oferecem o mesmo nível de suporte para elliptic-curve-based chaves que para chaves RSA.
Certifique-se de que a nova chave privada tenha propriedade e permissões altamente restritivas (owner=root, group=root, somente para o proprietário). read/write Os comandos seriam os seguintes:
[ec2-user ~]$sudo chown root.root custom.key[ec2-user ~]$sudo chmod 600 custom.key[ec2-user ~]$ls -al custom.keyOs comandos acima devem produzir o seguinte resultado:
-rw------- root root custom.keyDepois de criar e configurar uma chave satisfatória, você pode criar uma CSR.
-
-
Crie uma CSR usando sua chave preferencial. O exemplo abaixo usa
custom.key:[ec2-user ~]$sudo openssl req -new -key custom.key -out csr.pemA OpenSSL abre uma caixa de diálogo e solicita a informação exibida na tabela a seguir. Todos os campos, exceto Common Name (Nome comum), são opcionais para um certificado de host básico validado por domínio.
Nome Descrição Exemplo Nome do país A abreviação ISO de duas letras para seu país. US (=Estados Unidos) Nome do estado ou província O nome do estado ou província onde sua organização está localizada. Este nome não pode ser abreviado. Washington Nome da localidade A localização de sua organização, como uma cidade. Seattle Nome da organização A razão social completa da sua organização. Não abrevie o nome de sua organização. Corporação de exemplo Nome da unidade organizacional Informações organizacionais adicionais, se houver. Departamento de exemplo Nome comum Esse valor deve corresponder exatamente ao endereço web que você espera que os usuários digitem em um navegador. Geralmente, isso significa um nome de domínio com um nome ou alias de host prefixado na forma
www.example.com. Em testes com um certificado autoassinado e sem resolução de DNS, o nome comum pode consistir apenas no nome do host. CAs também oferecem certificados mais caros que aceitam nomes curingas, como.*.example.comwww.exemplo.com Endereço de e-mail O endereço de e-mail do administrador do servidor. someone@example.com Finalmente, a OpenSSL solicita uma senha de desafio opcional. Essa senha se aplica somente à CSR e às transações entre você e sua CA, portanto, siga as recomendações da CA sobre este e o outro campo opcional, nome da empresa opcional. A senha de desafio da CSR não tem nenhum efeito sobre a operação do servidor.
O arquivo resultante
csr.pemcontém sua chave pública, a assinatura digital de sua chave pública e os metadados que você inseriu. -
Envie a CSR a uma CA. Geralmente, isso consiste em abrir seu arquivo de CSR em um editor de texto e copiar o conteúdo em um formulário da Web. No momento, você pode ser solicitado a fornecer um ou mais nomes alternativos de assunto (SANs) para serem colocados no certificado. Se
www.example.comfor o nome comum,example.comseria um bom SAN e vice-versa. Um visitante a seu site que digitar qualquer um desses nomes veria uma conexão livre de erros. Se o formulário web da CA permitir, inclua o nome comum na lista de SANs. Alguns o CAs incluem automaticamente.Depois que sua solicitação é aprovada, você recebe um novo certificado de host assinado pela CA. Você também pode receber uma instrução para fazer download de um arquivo de certificado intermediário que contém os certificados adicionais necessários para concluir a cadeia de confiança da CA.
nota
Sua CA pode enviar a você arquivos em vários formatos com várias finalidades. Para este tutorial, você deve usar apenas um arquivo de certificado em formato PEM que geralmente (mas nem sempre) é identificado por uma extensão
.pemou.crt. Se você não tiver certeza sobre qual arquivo usar, abra os arquivos com um editor de texto e localize o que contém um ou mais blocos com o seguinte:- - - - -BEGIN CERTIFICATE - - - - -O arquivo também deve terminar com o seguinte:
- - - -END CERTIFICATE - - - - -Você também pode testar um arquivo na linha de comando da seguinte forma:
[ec2-user certs]$openssl x509 -incertificate.crt-textVerifique se as linhas aparecem no arquivo. Não use os arquivos que terminam com
.p7b,.p7cou extensões de arquivo semelhantes. -
Coloque o novo certificado assinado pela CA e quaisquer certificados intermediários no diretório
/etc/pki/tls/certs.nota
Há várias maneiras de fazer upload da chave personalizada para a EC2 instância, mas a forma mais direta e informativa é abrir um editor de texto (por exemplo, vi, nano ou bloco de notas) no computador local e na instância e, em seguida, copiar e colar o conteúdo do arquivo entre eles. Você precisa de permissões root [sudo] ao realizar essas operações na EC2 instância. Dessa forma, você vê imediatamente se há algum problema de permissão ou de caminho. No entanto, tenha cuidado para não adicionar mais linhas ao copiar o conteúdo ou ao alterá-lo de alguma maneira.
De dentro do
/etc/pki/tls/certsdiretório, use os comandos a seguir para verificar se as configurações de propriedade, grupo e permissão do arquivo correspondem aos padrões altamente restritivos do Amazon Linux (owner=root, group=root, somente para proprietário). read/write[ec2-user certs]$sudo chown root.root custom.crt[ec2-user certs]$sudo chmod 600 custom.crt[ec2-user certs]$ls -al custom.crtOs comandos acima devem produzir o seguinte resultado:
-rw------- root root custom.crtAs permissões para o arquivo de certificado intermediário são menos estritas (owner=root, group=root, proprietário pode gravar, grupo pode ler, mundo pode ler). Os comandos serão:
[ec2-user certs]$sudo chown root.root intermediate.crt[ec2-user certs]$sudo chmod 644 intermediate.crt[ec2-user certs]$ls -al intermediate.crtOs comandos acima devem produzir o seguinte resultado:
-rw-r--r-- root root intermediate.crt -
Se você tiver usado uma chave personalizada para criar sua CSR e o certificado do host resultante, remova ou renomeie a chave antiga no diretório
/etc/pki/tls/private/e instale a nova chave ali.nota
Há várias maneiras de fazer upload da chave personalizada para a EC2 instância, mas a maneira mais direta e informativa é abrir um editor de texto (vi, nano, bloco de notas etc.) no computador local e na instância e, em seguida, copiar e colar o conteúdo do arquivo entre eles. Você precisa de privilégios root [sudo] ao realizar essas operações na EC2 instância. Dessa forma, você vê imediatamente se há algum problema de permissão ou de caminho. No entanto, tenha cuidado para não adicionar mais linhas ao copiar o conteúdo ou ao alterá-lo de alguma maneira.
De dentro do
/etc/pki/tls/privatediretório, verifique se as configurações de propriedade, grupo e permissão do arquivo correspondem aos padrões altamente restritivos do Amazon Linux (owner=root, group=root, somente para proprietário). read/write Os comandos seriam os seguintes:[ec2-user private]$sudo chown root.root custom.key[ec2-user private]$sudo chmod 600 custom.key[ec2-user private]$ls -al custom.keyOs comandos acima devem produzir o seguinte resultado:
-rw------- root root custom.key -
Edite
/etc/httpd/conf.d/ssl.confpara refletir seu novo certificado e arquivos de chave.-
Forneça o caminho e o nome do arquivo do certificado de host assinado por CA na diretiva
SSLCertificateFiledo Apache:SSLCertificateFile /etc/pki/tls/certs/custom.crt -
Se você receber um arquivo de certificado intermediário (
intermediate.crtneste exemplo), forneça o caminho e o nome do arquivo usando a diretivaSSLCACertificateFiledo Apache:SSLCACertificateFile /etc/pki/tls/certs/intermediate.crtnota
Alguns CAs combinam o certificado host e os certificados intermediários em um único arquivo, tornando essa diretiva desnecessária. Consulte as instruções fornecidas pela CA.
-
Forneça o caminho e o nome do arquivo da chave privada na diretiva
SSLCertificateKeyFiledo Apache.SSLCertificateKeyFile /etc/pki/tls/private/custom.key
-
-
Salve o
/etc/httpd/conf.d/ssl.confe reinicie o Apache.[ec2-user ~]$sudo service httpd restart -
Teste seu servidor inserindo seu nome de domínio em uma barra de URL do navegador com o prefixo
https://. Seu navegador deve carregar a página de teste via HTTPS sem gerar erros.
Etapa 3: testar e intensificar a configuração de segurança
Depois que o SSL/TLS estiver operacional e exposto ao público, você precisará testar se ele é realmente seguro. É fácil fazer isso usando serviços online, como o Qualys SSL Labs
Importante
Os testes no mundo real são cruciais para a segurança do servidor. Pequenos erros de configuração podem resultar em rupturas de segurança sérias e em perda de dados. Como as práticas de segurança recomendadas são alteradas constantemente em resposta a pesquisas e a ameaças emergentes, auditorias periódicas da segurança são essenciais para uma boa administração do servidor.
No site Qualys SSL Labswww.example.com. Depois de dois minutos, você recebe uma classificação (de A a F) para seu site e um detalhamento dos resultados. Embora a visão geral mostre que a configuração é mais sólida, o relatório detalhado sinaliza vários problemas possíveis. Por exemplo:
✗ A RC4 cifra é compatível com o uso de alguns navegadores mais antigos. Uma cifra é o núcleo matemático de um algoritmo de criptografia. RC4, uma cifra rápida usada para criptografar fluxos de dados TLS, é conhecida por ter várias fraquezas graves.
✗ Versões antigas do TLS são compatíveis. A configuração é compatível com o TLS 1.0 (já obsoleto) e o TLS 1.1 (em um caminho para a reprovação). Apenas o TLS 1.2 é recomendado desde 2018.
Para corrigir a configuração do TLS
-
Abra o arquivo de configuração
/etc/httpd/conf.d/ssl.confem um editor de texto e comente as seguintes linhas digitando "#" no início de cada uma:#SSLProtocol all -SSLv3 #SSLProxyProtocol all -SSLv3 -
Adicione as seguintes diretivas:
SSLProtocol -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2 SSLProxyProtocol -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 +TLSv1.2Essas diretivas desativam explicitamente as versões 2 e 3 do SSL, bem como as versões 1.0 e 1.1 do TLS. O servidor agora se recusa a aceitar conexões criptografadas com clientes que não estejam usando o TLS 1.2. A expressão detalhada na diretriz comunica mais claramente, para um leitor humano, para que o servidor está configurado.
nota
Desabilitar as versões 1.0 e 1.1 do TLS dessa forma bloqueia o acesso ao seu site de uma pequena porcentagem de navegadores da web desatualizados.
Para modificar a lista de cifras permitidas
-
Abra o arquivo de configuração
/etc/httpd/conf.d/ssl.confe localize a seção com exemplos comentados para a configuração deSSLCipherSuiteeSSLProxyCipherSuite.#SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 #SSLProxyCipherSuite HIGH:MEDIUM:!aNULL:!MD5Deixe-os como estão e, abaixo deles, adicione as seguintes diretrizes:
nota
Embora sejam mostradas em várias linhas aqui para facilitar a leitura, cada uma dessas diretrizes deve estar em uma única linha sem espaços entre os nomes das cifras.
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384: ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES:!aNULL:!eNULL:!EXPORT:!DES: !RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA SSLProxyCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384: ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES:!aNULL:!eNULL:!EXPORT:!DES: !RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHAEssas cifras são um subconjunto da lista muito mais longa de cifras com suporte na OpenSSL. Foram selecionadas e ordenadas de acordo com os seguintes critérios:
-
Suporte para forward secrecy
-
Força
-
Velocidade
-
Cifras específicas antes das famílias de cifras
-
Cifras permitidas antes das cifras negadas
As cifras com classificações elevadas têm ECDHE nos seus nomes, para Elliptic Curve Diffie-Hellman Ephemeral (Curva elíptica de Diffie-Hellman efêmera); o termo efêmera indica o forward secrecy (sigilo de encaminhamento). Além disso, agora RC4 está entre as cifras proibidas perto do fim.
Recomendamos que você use uma lista explícita de cifras em vez de confiar em padrões ou em diretrizes concisas cujo conteúdo não é visível. A lista de cifras mostrada aqui é apenas uma das muitas listas possíveis. Por exemplo, você pode desejar otimizar uma lista para velocidade em vez de forward secrecy.
Se você antecipar a necessidade de oferecer suporte a clientes mais antigos, você pode permitir o pacote de criptografia DES- CBC3 -SHA.
Cada atualização do OpenSSL introduz novas cifras e torna obsoletas as cifras antigas. Mantenha sua instância EC2 Amazon Linux atualizada, fique atento aos anúncios de segurança do OpenSSL
e fique atento às denúncias de novas falhas de segurança na imprensa técnica. -
-
Exclua o comentário da linha a seguir removendo o "#":
#SSLHonorCipherOrder onEsse comando força o servidor a preferir cifras de alta classificação incluindo (neste caso) aquelas que oferecem suporte a forward secrecy. Com essa diretriz ativada, o servidor tenta estabelecer uma conexão altamente segura antes de voltar a usar cifras permitidas com menos segurança.
-
Reinicie o Apache. Se você testar o domínio novamente no Qualys SSL Labs
, verá que a RC4 vulnerabilidade desapareceu.
Solução de problemas
-
Meu servidor da web do Apache não será iniciado, a menos que eu digite uma senha.
Esse é comportamento esperado se você tiver instalado uma chave privada de servidor criptografada e protegida por senha.
Você pode remover a criptografia e a solicitação de senha da chave. Supondo que você tenha uma chave RSA criptografada privada chamada
custom.keyno diretório padrão e que a senha nela estejaabcde12345, execute os comandos a seguir na sua EC2 instância para gerar uma versão não criptografada da chave.[ec2-user ~]$cd /etc/pki/tls/private/[ec2-user private]$sudo cp custom.key custom.key.bak[ec2-user private]$sudo openssl rsa -in custom.key -passin pass:abcde12345 -out custom.key.nocrypt[ec2-user private]$sudo mv custom.key.nocrypt custom.key[ec2-user private]$sudo chown root.root custom.key[ec2-user private]$sudo chmod 600 custom.key[ec2-user private]$sudo service httpd restartO Apache agora deve iniciar sem solicitar uma senha a você.