Olá caros leitores deste humilde blog para jovens hackudos!!! (HAUEHAUEH)

No post de hoje compartilho com vocês uma dica muito legal para quem trabalha com desenvolvimento web e passou a ter dificuldade com certas extensões de domínios (.TLD) em navegadores grandes, como Chrome, Firefox, Edge e demais que utilizam a mesma engine, para continuar utilizando as extensões que facilitam muito o desenvolvimento eu optei então por gerar um certificado SSL  auto assinado e importá-lo no navegador, assim posso acessar o domínio local, com extensão TLD e conexão HTTPS sem ser incomodado.

Criando um certificado Root (Certificate Authority)

Primeiro crie um arquivo com o nome root.cnf e cole o conteúdo abaixo dentro dele.

# OpenSSL configuration for Root CA

[ req ]

prompt = no
string_mask = default

# The size of the keys in bits:
default_bits = 2048
distinguished_name = req_distinguished_name
x509_extensions = x509_ext

[ req_distinguished_name ]

# Note that the following are in 'reverse order' to what you'd expect to see.

countryName = gb
organizationName = Fsociety
commonName = Fsociety Root CA

[ x509_ext ]

basicConstraints=critical,CA:true,pathlen:0
keyUsage=critical,keyCertSign,cRLSign

 

Salve o arquivo e vamos para o próximo passo.

Agora vamos criar a requisição com o seguinte comando:

$ openssl req -x509 -new -keyout root.key -out root.cer -config root.cnf

o comando acima vai criar o seu certificado Root CA (root.cer) e a sua chave privada Root CA (root.key) que você deve manter privada. O comando também vai solicitar uma senha para a sua chave privada. — certifique-se de escolher uma bem grande hehehe.

Agora vamos criar o arquivo de configuração para gerar posteriormente o certificado do servidor:

# OpenSSL configuration for end-entity cert

[ req ]

prompt = no
 string_mask = default

# The size of the keys in bits:
 default_bits = 2048
 distinguished_name = req_distinguished_name

x509_extensions = x509_ext

[ req_distinguished_name ]

# Note that the following are in 'reverse order' to what you'd expect to see.

countryName = gb
 organizationName = Fsociety Brasil
 commonName = fsocietybrasil.dev

[ x509_ext ]

keyUsage=critical,digitalSignature,keyAgreement

subjectAltName = @alt_names

# Multiple Alternate Names are possible
 [alt_names]
 DNS.1 = fsocietybrasil.dev
 # DNS.2 = exemplo.dev

Salve ele como server.cnf e altere o texto fsocietybrasil.dev pelo endereço que você deseja utilizar no seu servidor local, agora vamos gerar a requisição do certificado com o comando:

$ openssl req -nodes -new -keyout server.key -out server.csr -config server.cnf

O comando acima vai gerar outra chave privada (server.key) que você também deve proteger. Neste caso não será necessário uma senha para gerar a chave.

Finalmente, vamos assinar a requisição do certificado com o seu novo Root CA e as extensões do arquivo server.cnf (por conveniência).

$ openssl x509 -req -in server.csr -CA root.cer -CAkey root.key -set_serial 123 -out server.cer -extfile server.cnf -extensions x509_ext

Nota: insira um número aleatório na opção -set_serial, o comando acima vai solicitar a senha que você utilizou a criar o seu Root CA. Um certificado para o servidor, chamado server.cer, também será gerado com o comando acima.

Uma vez que os procedimentos tenham sido executados, é hora de importar o seu Root CA no seu navegador (no meu caso, o Firefox Quantum), após importar, você pode rodar um teste com o comando abaixo:

$ sudo openssl s_server -key server.key -cert server.cer -accept 443 -www

Nota: Caso você esteja rodando um servidor web na porta 443, poderá ter alguns erros ao executar o teste acima.

Para finalizar, você deve copiar os seus arquivos server.cer e server.key para um local seguro e depois incluir eles no arquivo de configuração do seu servidor WEB, como é feito em servidores em produção.