anúncios

quarta-feira, 18 de dezembro de 2019

Configurar certificado Self-Signed SSL no Nginx

O que é certificado SSL ?

Certificado SSL é uma maneira de criar uma conexão mais segura criptografando as informações transmitidas entre o cliente e o servidor onde o certificado está instalado. Este certificado ainda exibe informações de identificação do servidor diretamente no browser do usuário.

Certificados SSL normalmente são emitidos por empresas chamadas de Certificate Authorities que verifica os detalhes do servidor, mas também é possível emitir Self-signed SSL certificate.

O presente post explica os procedimentos de como criar self-signed certificate e configurar no Nginx com Debian/Ubuntu.

Requisitos:

Ter o Nginx instalado.

Instalação do Nginx

$ sudo apt install nginx
Reiniciar o serviço Nginx

$ sudo systemctl restart nginx

Criar o certificado Self-Signed SSL (não assinado)

$ sudo mkdir /etc/nginx/ssl
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt

O comando acima irá criar dois arquivos nginx.key e nginx.crt necessários para configurar Nginx HTTPS server.
Esse certificado tem validade por 1 ano.
Ao executar o comando acima irá perguntar conforme abaixo:

Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Nome do Estado
Locality Name (eg, city) []:Nome da Cidade
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Nome da Empresa fictícia
Organizational Unit Name (eg, section) []:Departamento de TI
Common Name (e.g. server FQDN or YOUR name) []: nome definido no ServerName do Vhost
Email Address []:seu_email@dominio.com.br

Configurar o Nginx HTTPS server com certificado SSL no Vhost

$ sudo vim /etc/nginx/sites-available/projeto-ssl.conf

PS: Substituir o destacado em vermelho para o seu cenário de projeto do Vhost
server {
  listen       443 ssl;
  server_name  projeto.local;
  ssl_certificate     /usr/local/nginx/ssl/nginx.crt;
  ssl_certificate_key /usr/local/nginx/ssl/nginx.key;
  ssl_protocols       SSLv3 TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers         HIGH:!aNULL:!MD5;

  root  /var/www/html/projeto;
  index index.php;

  charset utf-8;

  location ~ /(\.ht) {
    deny all;
    return 404;
  }

  location ~ ^(.+\.php)(.*)$ {
    try_files $fastcgi_script_name =404;
    include        /etc/nginx/fastcgi_params;
    fastcgi_split_path_info  ^(.+\.php)(.*)$;
    fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_param  PATH_INFO        $fastcgi_path_info;
  }
}

Reiniciar o Nginx

$ sudo systemctl restart nginx

Adicionar o Vhost no arquivo /etc/hosts

127.0.0.1 projeto.local

No browser acessa https://projeto.local

Feito!

Nenhum comentário:

Postar um comentário