Automatizando a geração de certificados SSL locais para ambientes de desenvolvimento \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 15 Horas 

 49 Min 

 27 Seg 

   Tempo restante da oferta: 15 49 27 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Automatizando a geração de certificados SSL locais para ambientes de desenvolvimento  [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) 

# Automatizando a geração de certificados SSL locais para ambientes de desenvolvimento

 Veja como automatizar a geração de certificados SSL e usar no servidor do seu ambiente de desenvolvimento.

 [ Kennedy Tedesco ](https://www.treinaweb.com.br/blog/autor/kennedy-tedesco) 7 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/09/17130351/HTTPS-DEV-TEST.png)  

Sabe aquele projeto que você está iniciando o desenvolvimento e já deixou tudo configurado pra ser acessado apenas via [HTTPS](https://www.treinaweb.com.br/blog/termos-comuns-de-seguranca-https/ "HTTPS") no intuito de refletir como será em produção? Aí você configura um virtualhost para acessá-lo, mas ao entrar:

![Erro do Navegador de conexão privada](https://dkrn4sk0rn31v.cloudfront.net/2019/09/16183816/ssl-error.png)

[  ![IA Para Devs -  Cursor AI](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/ia-para-devs.svg)   Curso IA Para Devs - Cursor AI Conhecer o curso ](https://www.treinaweb.com.br/curso/ia-para-devs-cursor-ai)

Essa é a imagem que melhor define o sentimento de “*a pain in the ass*”. A primeira coisa que a gente pensa é: e se eu gerar um certificado [self-signed](https://en.wikipedia.org/wiki/Self-signed_certificate)? Bem, pode resolver o problema no sentido do navegador te permitir acessar o domínio (com você colocando uma exceção pra ele), mas ainda assim, ele continua dizendo que a conexão não é segura:

![Erro de SSL](https://dkrn4sk0rn31v.cloudfront.net/2019/09/16184549/chrome-ssl-error.png)

E isso é uma coisa que incomoda pra caramba (pelo menos a mim :P). O problema é que os navegadores não conseguem reconhecer a [autoridade de certificação](https://pt.wikipedia.org/wiki/Autoridade_de_certifica%C3%A7%C3%A3o) de um certificado *self-signed* gerado da forma tradicional.

E, para criar uma CA (*certificate authority*) e adicioná-la na *root store* do sistema (onde os certificados são gerenciados. No caso do macOS isso é feito no software *Keychain*), não é algo tão trivial de se fazer, como você pode visualizar nesse tutorial aqui:

[https://gist.github.com/KennedyTedesco/143576402fd7d9b49fbdedc9e417e5f9](https://gist.github.com/KennedyTedesco/143576402fd7d9b49fbdedc9e417e5f9 "https://gist.github.com/KennedyTedesco/143576402fd7d9b49fbdedc9e417e5f9")

Mas, e se eu te contar que tem uma ferramenta que abstrai toda essa dificuldade? Pois é! É o que veremos a seguir.

Antes, entretanto, é bom pontuar que esse artigo foi escrito para quem já tem o servidor web configurado com uma virtualhost, com o domínio em questão em `/etc/hosts` apontando para o host *127.0.0.1* e que agora precisa fazer um certificado local ser devidamente validado nos navegadores. O artigo não entrará em detalhes de configuração de servidor, configuração de aplicações etc.

## Gerando certificados SSL locais assinados com a mkcert

![SSL localhost exemplo](https://dkrn4sk0rn31v.cloudfront.net/2019/09/16191022/ssl-chrome1.png)

A [mkcert](https://github.com/FiloSottile/mkcert) é uma daquelas ferramentas indispensáveis para se montar um ambiente de desenvolvimento que dê gosto de trabalhar. Ela abstrai toda a dificuldade e complexidade de gerar certificados, como também de gerar uma CA (*certificate authority*) local. A única coisa que a *mkcert* não faz é instalar o certificado no seu servidor local, mas isso nem é algo tão complicado de se fazer.

Primeiro de tudo temos que instalar a ferramenta. Se você usa macOS, o [Homebrew](https://brew.sh/) pode ser utilizado:

```bash
$ brew install mkcert

```

Se você usa Windows, você pode usar o gerenciador de pacotes [Chocolatey](https://chocolatey.org/):

```bash
$ choco install mkcert

```

Se você usa Linux, na [documentação](https://github.com/FiloSottile/mkcert#linux) da mkcert mostra como pode ser feito.

[  ![Nginx - Fundamentos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/nginx.svg)   Curso Nginx - Fundamentos Conhecer o curso ](https://www.treinaweb.com.br/curso/ngnix-fundamentos)

**Instalando a CA:**

Para instalar a CA na root store, basta executar uma única vez:

```bash
$ mkcert -install

```

**Criando o certificado:**

```bash
$ mkcert teste.test "*.teste.test" www.teste.test

```

Nesse exemplo a ferramenta criará um certificado que será válido para o domínio *teste.test* e para todos os sub-domínios de primeiro nível dele.

O resultado da execução será:

```text
~> mkcert teste.test "*.teste.test" www.teste.test
Using the local CA at "/Users/kennedytedesco/Library/Application Support/mkcert" ✨

Created a new certificate valid for the following names 📜
 - "teste.test"
 - "*.teste.test"
 - "www.teste.test"

Reminder: X.509 wildcards only go one level deep, so this won't match a.b.teste.test ℹ️

The certificate is at "./teste.test+2.pem" and the key at "./teste.test+2-key.pem" ✅

```

Tanto o certificado quanto a chave privada foram salvos no diretório do meu usuário. Tendo o certificado `teste.test+2.pem` e a chave privada dele `teste.test+2-key.pem`, já conseguimos configurar, por exemplo, o nginx para servi-los.

**Configurando os certificados no Nginx**

Agora, é preciso que você copie o certificado e a chave privada para o local onde o seu nginx consiga ter acesso para carregá-los. Você pode até renomeá-los se quiser.

No final do bloco `server` do virtualhost do seu projeto, basta adicionar o caminho para eles:

```nginx
ssl_certificate /etc/nginx/ssl/teste.test.pem;
ssl_certificate_key /etc/nginx/ssl/teste.test.key.pem;  

```

Por exemplo:

```nginx
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    index index.php;
    root /var/www/teste;

    server_name teste.test www.teste.test;
    access_log off;

	location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

	location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-fpm:9000;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    ssl_certificate /etc/nginx/ssl/teste.test.pem;
    ssl_certificate_key /etc/nginx/ssl/teste.test.key.pem;  
}

```

No **Apache** seria algo como:

```nginx
SSLEngine on
SSLCertificateFile "/private/etc/apache2/ssl/teste.test.pem"
SSLCertificateKeyFile "/private/etc/apache2/ssl/teste.test.key.pem"

```

Exemplo em funcionamento no Firefox:

![Certificado ssl funcionando](https://dkrn4sk0rn31v.cloudfront.net/2019/09/16192143/Screen-Shot-2019-09-16-at-19.20.52.png)

Use e abuse da mkcert. Happy coding!

Ah, se você precisa gerar certificados SSL para o seu servidor em produção, veja esse artigo: [Gerando certificados SSL gratuitos com Certbot](https://www.treinaweb.com.br/blog/gerando-certificados-ssl-gratuitos-com-certbot/ "Gerando certificados SSL gratuitos com Certbot").

[  ![Desenvolvedor PHP Júnior](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/php.svg)   Formação Desenvolvedor PHP Júnior Conhecer a formação ](https://www.treinaweb.com.br/formacao/desenvolvedor-php-junior)

- [ #chrome ](https://www.treinaweb.com.br/blog/tag/chrome)
- [ #nginx ](https://www.treinaweb.com.br/blog/tag/nginx)
- [ #certificado ](https://www.treinaweb.com.br/blog/tag/certificado)
- [ #SSL ](https://www.treinaweb.com.br/blog/tag/ssl)
- [ #apache ](https://www.treinaweb.com.br/blog/tag/apache)
- [ #firefox ](https://www.treinaweb.com.br/blog/tag/firefox)

Autor

 ![Kennedy Tedesco](//secure.gravatar.com/avatar/236c86e9469327ba7a9250ff15fef424?d=mm)

## Kennedy Tedesco

 Head de desenvolvimento. Vasta experiência em desenvolvimento Web com foco em PHP. Graduado em Sistemas de Informação. Pós-graduando em Arquitetura de Software Distribuído pela PUC Minas. Zend Certified Engineer (ZCE) e Coffee Addicted Person (CAP). [@KennedyTedesco](https://twitter.com/KennedyTedesco) 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/kennedy-tedesco)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/12/04134730/CERTIFICADO-SSL-CERTBOT-400x280.png)  [ Infraestrutura e Sistemas Operacionais ](https://www.treinaweb.com.br/blog/categoria/infraestrutura-e-sistemas-operacionais) 

     7 anos atrás

    ##  [ Gerando certificados SSL gratuitos com Certbot ](https://www.treinaweb.com.br/blog/gerando-certificados-ssl-gratuitos-com-certbot) 

     Acessar um site que tenha HTTPS é quase um pré requisito hoje em dia. Além de ser recomendável pelos principais navegadores, acessar um site com HTTPS te dá mais segurança e até ajuda no rankeamento do seu site nos resultados de busca do Google, porém geralmente esse certificado é pago. Vamos conhecer nesse artigo como funciona o Certbot e como ele pode ser utilizado para gerar um certificado de forma gratuita.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/02/gerando-apis-clients-com-as-ferramentas-de-openapi-do-net-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     6 anos atrás

    ##  [ Gerando APIs clients com as ferramentas de OpenAPI do .NET ](https://www.treinaweb.com.br/blog/gerando-apis-clients-com-as-ferramentas-de-openapi-do-net) 

     Aprenda como gerar APIs clientes com a global tool Microsoft.dotnet-openapi.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/09/04112944/DJANGO-PROJETOS-PYCHARM-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     3 anos atrás

    ##  [ Como criar comandos customizados no Django ](https://www.treinaweb.com.br/blog/como-criar-comandos-customizados-no-django) 

     Aprenda a criar comandos customizados no Django para automatizar tarefas, personalizar funcionalidades e integrar sistemas externos!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/03/principais-ides-para-desenvolvimento-dart-400x280.png)  [ Dart ](https://www.treinaweb.com.br/blog/categoria/dart) 

     6 anos atrás

    ##  [ Principais IDEs para desenvolvimento Dart ](https://www.treinaweb.com.br/blog/principais-ides-para-desenvolvimento-dart) 

     Veja neste artigo as principais IDEs para desenvolvimento Dart.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/04/24104644/O-QUE-É-IDE-400x280.png)  [ Tecnologia ](https://www.treinaweb.com.br/blog/categoria/tecnologia) 

     7 anos atrás

    ##  [ O que é uma IDE (Ambiente de Desenvolvimento Integrado)? ](https://www.treinaweb.com.br/blog/o-que-e-uma-ide-ambiente-de-desenvolvimento-integrado) 

     Veja neste artigo o que é uma IDE e suas principais características.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2017/09/automatizando-tarefas-de-um-projeto-csharp-com-o-cake-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     9 anos atrás

    ##  [ Automatizando tarefas de um projeto C# com o Cake ](https://www.treinaweb.com.br/blog/automatizando-tarefas-de-um-projeto-csharp-com-o-cake) 

     Veja como o Cake pode auxiliar na automação de tarefas de um projeto .NET Core.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/05/NEST-JS-UPLOAD-ARQUIVOS-400x280.png)  [ Node ](https://www.treinaweb.com.br/blog/categoria/node-js) 

     3 anos atrás

    ##  [ Cron jobs, timeouts e intervals com NestJS ](https://www.treinaweb.com.br/blog/cron-jobs-timeouts-e-intervals-com-nestjs) 

     Neste artigo vamos utilizar o módulo nativo scheduler do NestJS para trabalhar com tarefas automatizadas com cron jobs, timeouts e intervals

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/05/11154235/diferencas-cursos-superiores-TI-400x280.jpg)  [ Estudos ](https://www.treinaweb.com.br/blog/categoria/estudos) 

     9 anos atrás

    ##  [ Diferenças entre os cursos superiores na área de TI ](https://www.treinaweb.com.br/blog/diferencas-entre-os-cursos-superiores-na-area-de-ti) 

     Existem diversos cursos de graduação na área de TI. Você sabe qual é foco de cada um deles?

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/10/Como_instalar_e_utilizar_o_Bootstrap_via_npm-400x280.png)  [ Desenvolvimento Front-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-front-end) 

     5 anos atrás

    ##  [ Como instalar e utilizar o Bootstrap via npm ](https://www.treinaweb.com.br/blog/como-instalar-e-utilizar-o-bootstrap-via-npm) 

     Instalar Bootstrap via npm e alterar suas variáveis, é mais simples do que imagina. Hoje iremos juntos fazer o download do Bootstrap 5.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/03/01154207/capa-testes-automatizados-400x280.png)  [ Testes e Projetos ](https://www.treinaweb.com.br/blog/categoria/testes-e-projetos) 

     8 anos atrás

    ##  [ Por que escrever testes automatizados? ](https://www.treinaweb.com.br/blog/por-que-escrever-testes-automatizados) 

     Veja mais sobre a importância do teste de software automatizado e o porquê de você fazê-lo.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/04/conhecendo-o-gerenciador-de-pacotes-chocolatey-400x280.png)  [ Ferramentas ](https://www.treinaweb.com.br/blog/categoria/ferramentas) 

     6 anos atrás

    ##  [ Conhecendo o Gerenciador de Pacotes Chocolatey ](https://www.treinaweb.com.br/blog/conhecendo-o-gerenciador-de-pacotes-chocolatey) 

     Neste artigo conheceremos o Gerenciador de Pacotes Chocolatey.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/01/10162055/asp-net-beanstalk-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     7 anos atrás

    ##  [ Publicando uma aplicação .NET Core 3.0 no AWS Elastic Beanstalk ](https://www.treinaweb.com.br/blog/publicando-uma-aplicacao-net-core-3-0-no-aws-elastic-beanstalk) 

     Nesse artigo vamos aprender como publicar e configurar um projeto desenvolvido em ASP.NET Core 3.0 no Elastic Beanstalk, o serviço do tipo plataforma como serviço da AWS especializado para aplicações web.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **15h 49min 27s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
