Como proteger o nginx com SSL e vamos criptografar em FreeBSD

Como proteger o nginx com SSL e vamos criptografar em FreeBSD

Neste guia, discutiremos como garantir Nginx servidor da web em FreeBSD com TLS/SSL certificados oferecidos por Vamos criptografar a autoridade de certificado. Também mostraremos como renovar automaticamente os certificados de criptografia de Lets antes da data de vencimento.

TLS, um acrônimo para Segurança da camada de transporte, é um protocolo que corre em Http protocolo e usa certificados e chaves para encapsular os pacotes e criptografar os dados trocados entre um servidor e um cliente, ou neste caso entre Nginx O servidor da Web e o navegador do cliente, a fim de garantir a conexão, para que terceiros, que possam interceptar o tráfego, não possam descriptografar a transmissão.

Leia também: Instale, vamos criptografar para o Apache no FreeBSD

O processo de obtenção de um livre Vamos criptografar certificado em FreeBSD pode ser bastante simplificado pela instalação Certboot Utilitário Client, que é o cliente oficial Let's Encrypt usado para gerar e baixar certificados.

Requisitos

  1. Instale a pilha FBEMP (NGINX, MARIADB e PHP) em FreeBSD

Etapa 1: Configurar Nginx TLS/SSL

1. Por padrão, o TLS/SSL A configuração do servidor não está ativada em FreeBSD porque o TLS As instruções de bloco de servidor são comentadas em Nginx arquivo de configuração padrão.

Para ativar o TLS servidor in Nginx, abrir nginx.conf arquivo de configuração, procure a linha que define o início de Ssl servidor e atualize o bloco inteiro para parecer na amostra abaixo.

# nano/usr/local/etc/nginx/nginx.conf 

Trecho do bloco HTTPS nginx:

Configuração HTTPS nginx
servidor Ouça 443 SSL default_server; nome do servidor www.seu domínio.com; access_log/var/log/nginx/acesso.registro; error_log/var/log/nginx/erro.registro; error_page 500 502 503 504 /50x.html; Localização = /50x.html root/usr/local/www/nginx-dist;  localização/root/usr/local/www/nginx; ÍNDICE ÍNDICE.Índice HTML.htm; try_files $ uri $ uri / / Índice.php?$ args;  ssl_certificate "/usr/local/etc/letSencrypt/Live/www.seu domínio.com/cert.PEM "; ssl_certificate_key"/usr/local/etc/letSencrypt/Live/www.seu domínio.com/Privkey.PEM "; ssl_protocols tlsv1 tlsv1.1 TLSV1.2; ssl_dhparam/usr/local/etc/nginx/dhparam.PEM; ssl_session_cache compartilhado: ssl: 1m; ssl_session_timeout 10m; SSL_CIPHERS HIGH:!Anull:!Md5; ssl_prefer_server_ciphers on; # Use Gzip Compression Gzip; gzip_disable "msie6"; gzip_vary on; gzip_proxied qualquer; gzip_comp_level 5; gzip_buffers 16 8k; gzip_http_version 1.0; # Defina uma variável para contornar a falta de condicionais aninhados definir $ cache_uri $ request_uri; Localização ~ / / /.bem conhecido permitir tudo;  localização ~ \.php $ root/usr/local/www/nginx; fastcgi_pass 127.0.0.1: 9000; Índice FastCGI_Index.php; #fastcgi_param script_filename /scripts $ fastcgi_script_name; fastcgi_param script_filename $ request_filename; incluir fastcgi_params;  

O bloco acima, além de Ssl Block, também contém algumas declarações para ativar a compactação GZIP e Gerenciador de processos FastCGI, usado para passar o código PHP para PHP-FPM Gateway para executar aplicativos dinâmicos da Web.

Depois de adicionar o código acima para Nginx Arquivo de configuração principal, não reinicie o daemon ou aplique as configurações antes de instalar e obter um Vamos criptografar Certificado para seu domínio.

Etapa 2: Instale o cliente CertBot em FreeBSD

2. O processo de instalação, vamos criptografar CertBot o utilitário cliente em FreeBSD envolve baixar o código -fonte para PY-CERTBOT e compilá -lo localmente, emitindo os comandos abaixo.

# CD/usr/portas/segurança/py-certbot # Torne a instalação limpa 

3. Compilando o PY-CERTBOT O utilitário leva muito tempo em comparação com a instalação de um pacote binário regular. Durante esse período, uma série de dependências deve ser baixada em compilado localmente em FreeBSD.

Além disso, uma série de avisos aparecerá na sua tela, exigindo que você selecione quais pacotes serão usados ​​no tempo de compilação para cada dependência. Na primeira tela, selecione as seguintes ferramentas, pressionando [espaço] chave, para compilar o Python27 dependência, conforme ilustrado na imagem abaixo.

  • IPv6
  • Libffi
  • NLS
  • Pymalloc
  • TÓPICOS
  • UCS4 para suporte Unicode
Ativar UCS4 para unicode

4. Em seguida, selecione Documentos e TÓPICOS para getText-tools dependência e prensa OK Para continuar como mostrado na imagem abaixo.

Instalar documentação

5. Na próxima tela, deixe o Testes opção desativada para libffi-3.2.1 e pressione OK para avançar mais.

Desativar testes para libffi

6. Em seguida, acerte espaço selecionar Documentos para PY27-enum34 dependência, que instalará a documentação para esta ferramenta e pressionará OK para continuar, conforme ilustrado na captura de tela abaixo.

Instale a documentação para PY27

7. Finalmente, escolha instalar exemplos de amostras para PY27-Openssl dependência pressionando [espaço] chave e acerte OK Para terminar o processo de compilação e instalação para PY-CERTBOT cliente.

Instale o PY27 OpenSSL

8. Após o processo de compilação e instalação PY-CERTBOT Acabamentos utilitários, execute o comando abaixo para atualizar a ferramenta na versão mais recente do pacote, conforme ilustrado nas capturas de tela abaixo.

# pkg install py27-chertbot 
Atualize a ferramenta Py-CertBot

9. Para evitar alguns problemas, pode ocorrer enquanto obtém um livre Vamos criptografar certificado, o erro mais comum sendo “pkg_resources.Distribuição não”, Verifique se as duas dependências a seguir também estão presentes no seu sistema: PY27-Salt e PY27-ACME.

# pkg install py27-sal # pkg install py27-acme 

Etapa 3: Instale o certificado Let's Crypt para Nginx no FreeBSD

10. Para obter um certificado autônomo Let's Crypty para seu domínio, execute o seguinte comando e forneça o nome de domínio e todos os subdomínios para os quais você deseja obter certificados, implicando o -d bandeira.

# CertBot Certonly -Standalone -D seu domínio.com -d www.seu domínio.com 
Instalar Lets Encrypt for Nginx

11. Ao gerar o certificado, você será solicitado a inserir seu endereço de e -mail e concordar com os termos de serviço Let's Crypt. Tipo a Do teclado para concordar e continuar e você também será perguntado se você está disposto a compartilhar seu endereço de e -mail com os parceiros Let's Crypt.

Caso você não queira compartilhar seu endereço de e -mail, basta digitar não palavra no prompt e pressione [digitar] chave para continuar. Depois que os certificados para o seu domínio foram obtidos com sucesso, você receberá algumas notas importantes que informarão onde os certificados são armazenados em seu sistema e quando eles expirarem.

Vamos criptografar resumo

12. Caso você queira obter um certificado Let's Crypty usando o “Webroot”Plugin adicionando o Webroot Diretório do servidor nginx para o seu domínio, emita o seguinte comando com o --Webroot e -c bandeiras. Por padrão, se você não mudou o caminho do nginx webroot, ele deve estar localizado em /usr/local/www/nginx/ caminho do sistema.

# CertBot Certonly -Webroot -w /usr/local/www/nginx/ -d seu domínio.com -d www.seu domínio.com 

Como no --Strandalone procedimento para obter um certificado, o --Webroot O procedimento também solicitará que você forneça um endereço de e -mail para avisos de renovação e segurança de certificação, para pressionar a concordar com os termos e condições Let's Crypt e não ou sim Para compartilhar ou não o endereço de e -mail, vamos criptografar parceiros, conforme ilustrado na amostra abaixo.

Esteja ciente de que o cliente CertBot pode detectar um endereço de e -mail falso e não permitirá que você continue gerando um certificado até fornecer um endereço de e -mail real.

Amostra de cerbot:
Salvando o log de depuração para/var/log/letSencrypt/letsencrypt.Log Enter Endereço de email (usado para avisos urgentes de renovação e segurança) (digite 'c' para cancelar):[Email protegido] #Um endereço de e -mail falso será detectado, parece haver problemas com esse endereço. Digite o endereço de email (usado para avisos urgentes de renovação e segurança) Se você realmente deseja pular isso, poderá executar o cliente com-registrador-insenciosamente com e-mail, mas certifique-se de fazer backup de sua chave de conta de/etc/letSencrypt/ Contas (digite 'c' para cancelar): [email protegido] ------------------------------------------ --------------------------------------------- Por favor, leia os termos de serviço em https: // LetSencrypt.org/documentos/le-sa-v1.1.1 de agosto-1-2016.pdf. Você deve concordar para se registrar no servidor ACME em https: // acme-v01.API.LetSencrypt.org/diretório --------------------------------------------- ---------------------------------- (a) gree/(c) Ancho: a ------------------------------------------------------------------------------- Você estaria disposto a compartilhar seu endereço de e-mail com a Electronic Frontier Foundation, um parceiro fundador do projeto Let's Encrypt e a organização sem fins lucrativos que desenvolve o CERTBOT? Gostaríamos de enviar e -mails sobre a eff e nosso trabalho para criptografar a web, proteger seus usuários e defender os direitos digitais. ------------------------------------------------------------------------------- (Sim não: n Obtenção de um novo certificado executando os seguintes desafios: HTTP-01 Desafio para www.domínio.com o uso do Webroot Path/usr/local/www/nginx/para todos os domínios incomparáveis. Aguardando a verificação… Limpar desafios notas importantes: - Parabéns! Seu certificado e cadeia foram salvos em/usr/local/etc/letsencrypt/Live/www.seu domínio.com/fullchain.PEM. Seu certificado expirará em 2017-12-28. Para obter uma versão nova ou ajustada deste certificado no futuro, basta executar o certbot novamente. Para renovar de forma interativa * todos * de seus certificados, execute "CertBot Renow" - suas credenciais de conta foram salvas no seu diretório de configuração de certbot em/usr/local/etc/letsencrypt. Você deve fazer um backup seguro desta pasta agora. Este diretório de configuração também conterá certificados e chaves privadas obtidas pelo certbot, portanto, fazer backups regulares desta pasta é ideal. - Se você gosta do CERTBOT, considere apoiar nosso trabalho: Doando para ISRG/Let's Encrypt: https: // LetSencrypt.org/doar doação para eff: https: // eff.org/doar-le

Etapa 4: Atualize os certificados Nginx TLS

13. A localização de obtidos certificados e chaves de let's criptografar /usr/local/etc/letSencrypt/Live/www.seu domínio.coma caminho do sistema. Emitir comando ls para exibir os componentes do seu certificado Let's Encrypt: The Chain File, The FullChain File, a chave privada e o arquivo de certificado, conforme ilustrado no exemplo a seguir.

# ls/usr/local/etc/letSencrypt/Live/www.seu domínio.coma 
Lista permite criptografar o domínio SSL-KEYS

14. Para instalar os certificados Let's Crypt para seu domínio no Nginx Web Server, abra o arquivo de configuração principal do nginx ou o arquivo de configuração para o servidor Nginx TLS, caso seja um arquivo separado e modifique as linhas abaixo para refletir o caminho do Certificados de Let's Encrypt como ilustrado abaixo.

# nano/usr/local/etc/nginx/nginx.conf 

Atualize as seguintes linhas para se parecer nesta amostra:

ssl_certificate "/usr/local/etc/letsencrypt/vive/www.seu domínio.com/cert.PEM "; ssl_certificate_key"/usr/local/etc/letSencrypt/Live/www.seu domínio.com/Privkey.PEM "; 
Configure SSL para Nginx

15. Além disso, se a linha SSL_DHPARAM está presente em Nginx ssl Configuração, você deve gerar um novo 2048 pedaço Diffie-Hellman Chave com o seguinte comando:

# OpenSSL dhparam -out/usr/local/etc/nginx/dhparam.PEM 2048 

16. Finalmente, para ativar a configuração do Nginx TLS, verifique primeiro o NGINX Global Configuration para obter possíveis erros de sintaxe e, em seguida, reinicie o serviço Nginx para aplicar a configuração SSL, emitindo os seguintes comandos.

# nginx -t # serviço nginx reiniciar 

17. Confirme se o daemon nginx está ligando 443 Port, emitindo os seguintes comandos que podem listar todos os soquetes de rede abertos no sistema no estado de escuta.

# netstat -an -p tcp | Grep Ouça # Sockstat -4 
Verifique as portas nginx

18. Você também pode visitar seu endereço de domínio via Https Protocolo abrindo um navegador e digite o seguinte endereço para confirmar que os certificados Let's Crypt estão funcionando como esperado. Como você está usando certificados gerados por uma autoridade de certificado válida, nenhum erro deve ser exibido no navegador.

https: // www.seu domínio.com 

19. O utilitário OpenSSL também pode ajudá -lo a encontrar informações sobre um certificado obtido da Let's Encrypt CA, executando o comando com as seguintes opções.

# OpenSSL S_Client -Connect www.seu domínio.com: 443 
Verifique o certificado SSL

Caso você queira forçar o Nginx a direcionar todos os solicitações HTTP para HTTPS recebidas pelo seu domínio na porta 80 para Https, Abra o arquivo de configuração do nginx, localize a diretiva do servidor para a porta 80 e adicione a linha abaixo da linha após o servidor_name, conforme ilustrado no exemplo abaixo.

reescrever ^(.*) https: // www.seu domínio.com $ 1 permanente; 
Nginx redireciona http para https

20. A configuração de renovação automática para certificado emitida pela Let's Encrypt Authority antes que eles expirem podem ser feitos programando um trabalho de cron a ser executado uma vez por dia, emitindo o seguinte comando.

# Crontab -e 

Tarefa Cron para renovar o certificado.

0 0 * * * CERTBOT RENOVA >>/VAR/LOG/LETSENCRYPT.registro 

Isso é tudo! O NGINX agora pode servir aplicativos da Web seguros aos seus visitantes usando certificados Let's Crypt Free.