Olá Flávia. Tudo bem?
Veja se as informações abaixo podem te ajudar.
Opções confiáveis (comumente usadas):
- Site oficial do OpenSSL (https://www.openssl.org) — fornece código‑fonte; não distribui oficialmente binários Windows. Útil se você quiser compilar.
- Shining Light Productions (Win32/Win64 OpenSSL) — pacotes pré‑compilados populares para Windows (procure “Win64 OpenSSL” no site do autor). Muito usado.
- Gerenciadores de pacote para Windows:
- Chocolatey (
choco
) — choco install openssl.light
ou choco install openssl
(precisa ter Chocolatey instalado). - Scoop —
scoop install openssl
. - MSYS2 / pacman —
pacman -S mingw-w64-x86_64-openssl
se você usa ambiente MSYS2 (bom para devs).
- MSI/EXE de terceiros: prefira Shining Light ou gerenciadores de pacote ao invés de binários aleatórios. Sempre baixe de sites conhecidos e verifique assinatura/MD5 quando disponível.
Se quer a forma mais simples e segura para a maioria dos usuários Windows, usar o instalador Win64 OpenSSL do Shining Light (ou choco install openssl.light
) é geralmente a maneira mais direta.
Abaixo eu mostro comandos que você pode executar no Prompt de Comando (CMD) , não PowerShell ,supondo que openssl
já esteja no PATH
. Se estiver usando PowerShell, os comandos funcionam também, mas atenção às aspas e expansão de variável.
Esse comando cria key.pem
e cert.pem
em um único passo:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout key.pem -out cert.pem -subj "/C=BR/ST=Sao Paulo/L=Sao Paulo/O=MinhaEmpresa/OU=Dev/CN=localhost"
-x509
→ gera certificado autoassinado em vez de somente CSR.-nodes
→ sem criptografia na chave privada (útil para servidores que precisam ler a chave sem senha).-days 365
→ validade em dias (mude conforme precisar).-subj
→ define os campos do DN (modifique para seus valores). Para CN
use o hostname (ex.: localhost
ou meudominio.com
).- Se você precisa importar no Windows Certificate Store ou no IIS, converta para
.pfx
:
openssl pkcs12 -export -out cert.pfx -inkey key.pem -in cert.pem -passout pass:MinhaSenhaSegura
- Troque
MinhaSenhaSegura
por uma senha real; ou use -passout pass:
vazio (não recomendado). - Depois importe
cert.pfx
no Windows (MMC → Certificados) ou via IIS.
O -subj
não define SANs. Para ter SANs é preciso usar um arquivo de configuração. Exemplo:
- Crie um arquivo
openssl-san.cnf
(pode usar Notepad). Conteúdo mínimo:
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
req_extensions = v3_req
[ dn ]
C = BR
ST = Sao Paulo
L = Sao Paulo
O = MinhaEmpresa
OU = Dev
CN = localhost
[ v3_req ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = localhost
DNS.2 = meusite.local
IP.1 = 127.0.0.1
- No CMD, gere chave + CSR usando o config:
openssl req -new -nodes -newkey rsa:2048 -keyout key.pem -out csr.pem -config openssl-san.cnf
- Assine a CSR para gerar o certificado com as extensões SAN (autoassinando):
openssl x509 -req -in csr.pem -signkey key.pem -out cert.pem -days 365 -extensions v3_req -extfile openssl-san.cnf
Agora cert.pem
contém o SAN e key.pem
a chave.
- PEM para CRT (às vezes
.crt
é só .pem
com outro sufixo):
copy cert.pem cert.crt
- Se precisar de
key
sem cabeçalho ou outra forma, normalmente o key.pem
já é legível.
Dicas:
- Adicionar
openssl
ao PATH: durante instalação selecione a opção para adicionar ao PATH, ou adicione manualmente %ProgramFiles%\OpenSSL-Win64\bin
(ou onde instalou). - Executar CMD como administrador só é necessário para instalar/importar em locais protegidos. Geração de arquivos não precisa.
- Para uso local (desenvolvimento),
CN=localhost
e SAN com localhost
e 127.0.0.1
resolvem os erros de certificado nos navegadores. - Navegadores podem ainda rejeitar o certificado se não for confiável — para desenvolvimento você pode importar o .pfx para o armazenamento de Autoridades de Certificação Confiáveis (Root) no Windows (apenas para devs em máquina local; não faça isso em produção sem entender implicações de segurança).
Se tiver alguma duvida comente ai e envie um feedback de qualquer maneira.
Bons estudos.
Até...
:)