Header Ads

Como criar e usar SSL autoassinado no Apache

A assinatura de seus próprios certificados SSL geralmente é feita como uma alternativa fácil às autoridades de certificação para comunicações internas ou sites não direcionados a usuários que ainda precisam de criptografia. Veja como configurar um com o Apache.

Gere e assine automaticamente um certificado SSL

Usaremos o utilitário openssl para gerar o certificado e a chave privada correspondente. Você provavelmente já tem isso instalado, pois é uma dependência do Apache, mas se estiver de alguma forma ausente, você pode instalá-lo a partir do gerenciador de pacotes da sua distribuição. Para sistemas baseados no Debian como o Ubuntu, isso seria:

 sudo apt-get install openssl 

Após a instalação do openssl, você pode gerar o certificado com o seguinte comando:

 sudo openssl req -x509 -nodes -days 365 -newkey rsa: 2048 -keyout /etc/ssl/private/apache. key -out /etc/ssl/certs/apache. crt

openssl solicitará algumas informações sobre sua organização. Você pode deixar a maior parte desse espaço em branco, mas a única coisa importante que precisará preencher é o "Nome comum", ” que você deseja definir para o endereço IP ou nome de domínio do seu servidor.

 Nome do país (código de 2 letras) []: Nome do estado ou província (nome completo) []: Nome da localidade (por exemplo, cidade) []: Nome da organização (por exemplo, empresa) []: Nome da unidade organizacional (por exemplo, seção) []: Nome comum (por exemplo, nome completo do host) []: your_ip_address Endereço de e-mail []: 

O openssl levará um segundo para executar e gerar uma nova chave RSA privada, usada para assinar o certificado e armazená-lo em /etc/ssl/private/apache. key. O certificado em si é armazenado em /etc/ssl/certs/apache. crt e será válido por um ano.

Nós também queremos gerar um grupo Diffie-Hellman. Isso é usado para o perfeito sigilo de encaminhamento, que gera chaves efêmeras de sessão para garantir que as comunicações passadas não possam ser descriptografadas se a chave da sessão for comprometida. Isso não é totalmente necessário para comunicações internas, mas se você deseja ser o mais seguro possível, não deve pular esta etapa. Observe que isso requer que você tenha o Apache versão 2.4.8 ou superior, portanto, verifique se você está atualizado.

 sudo openssl dhparam -out /etc/ssl/certs/dhparam. pem 4096 

Demora um tempo cerca de uma hora, dependendo da velocidade do seu servidor. Pegue um almoço e volte um pouco ao seu terminal para configurar o Apache.

Configure o Apache para usar seu certificado autoassinado

Para facilitar as coisas, faremos toda a nossa configuração em um arquivo de trecho. Crie um novo no diretório disponível nos sites do Apache:

 sudo touch /etc/apache2/conf-available/ssl-params. conf

Abra-o no seu editor de texto favorito e cole na seguinte configuração:

 SSLCipherSuite EECDH + AESGCM: EDH + AESGCM: AES256 + EECDH: AES256 + EDH SSLProtocolo Tudo -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLHonorCipherOrder No cabeçalho sempre defina X-Frame-Opções DENY Opções de tipo de conteúdo nosniff SSLCompression off SSLUseStapling on SSLStaplingCache "shmcb: logs / cache de grampeamento (150000)" SSLSessionTickets Off SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam. pem""/PRE]

O primeiro bloco define alguns parâmetros SSL padrão e a última linha configura o Apache para usar o grupo Diffie-Hellman. Você pode omitir esta linha se você pular essa etapa.

Em seguida, abra o arquivo host virtual SSL padrão, geralmente localizado em /etc/apache2/sites-available/default-ssl. conf. Altere as seguintes linhas para apontar para o seu certificado e arquivo de chave:

 SSLCertificateFile /etc/ssl/certs/apache. crt SSLCertificateKeyFile /etc/ssl/private/apache. key

O SSL agora deve estar funcionando, mas você provavelmente precisará copiar algumas configurações do seu arquivo de configuração atual, porque acabou de modificar uma em branco. Você precisará garantir que as diretivas ServerName, ServerAdmin e DocumentRoot estejam apontando para os locais corretos.

Além disso, você desejará configurar um redirecionamento para encaminhar o tráfego HTTP para o HTTPS criptografado. Abra a configuração padrão do Apache em /etc/apache2/apache2. conf e adicione as seguintes linhas para reescrever o tráfego HTTP:

 RewriteEngine On RewriteCond% 80 RewriteRule ^ (. *) $ https://www. seudominio. com/$1 [R, L] 

Você também deseja garantir que o seu firewall esteja aberto. O HTTPS usa a porta 443, em vez da porta 80, portanto, você precisará abri-la para se conectar ao servidor. Se você estiver usando o iptables ou o UFW, poderá abrir portas a partir da linha de comando. Se você estiver hospedando seu servidor em um serviço como o AWS, seu provedor poderá fornecer uma interface da web para abrir portas.

Os certificados autoassinados são mais comumente usados ​​para servidores privados, portanto, não é uma má idéia colocar na lista branca o acesso apenas à sua LAN privada e usar um servidor VPN para conectar-se a ela.

Quando as portas estiverem abertas, você poderá testar suas configurações de SSL navegando para o seu site no seu navegador. Se tudo funcionou corretamente, você verá este aviso:

Isso é normal, então não se preocupe. Você precisará selecionar manualmente que confia neste certificado, razão pela qual não pode usar certificados autoassinados para sites públicos.

O aviso não significa que seu site é inseguro. O SSL ainda está ativado e criptografa o tráfego. Se sua chave privada estiver comprometida, a comunicação poderá ser descriptografada, mas será perfeitamente segura se você configurar o sigilo de encaminhamento Diffie-Hellman, o que nega esse vetor de ataque. O problema aqui é com a identidade. O Chrome não pode verificar se você é quem diz ser ou que é o proprietário do domínio, do qual precisará de um “ real ” CA para.

Via: How to Geek

Nenhum comentário