Gerador de Par de Chaves RSA (PEM) Online

Gere um par de chaves RSA de 2048, 3072 ou 4096 bits em PEM (PKCS#8 e SPKI) e JWK, direto no navegador. A chave privada não é enviada a nenhum servidor.

Gerador de chaves RSA online

Escolha o tamanho e o uso, clique em gerar e receba a chave privada e a chave pública em formato PEM, prontas para copiar ou baixar, além do JWK e da impressão digital SHA-256. A chave é criada no seu navegador pela Web Crypto API e não é enviada a nenhum servidor.

A chave é gerada no seu navegador e não sai dele. A página usa a Web Crypto API (crypto.subtle): nenhuma chave é enviada, salva ou registrada em servidor.

Use para testes, estudo e desenvolvimento. Para chaves de produção (servidores, SSH, certificados, assinatura de código), gere na própria máquina com openssl ou ssh-keygen — os comandos equivalentes aparecem abaixo do resultado.

Assinatura RSA clássica, a mais compatível: é o RS256 dos JWT e a usada em certificados TLS. O arquivo PEM é o mesmo para qualquer uso de RSA; a escolha muda os campos “alg” e “key_ops” do JWK.

Comandos para gerar a mesma chave no seu computador
OpenSSL — chave privada (PKCS#8)
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out chave-privada.pem
OpenSSL — extrair a chave pública (SPKI)
openssl pkey -in chave-privada.pem -pubout -out chave-publica.pem
SSH — par de chaves no formato OpenSSH
ssh-keygen -t rsa -b 2048 -C "[email protected]"

Para que serve (e para que não serve)

Esta página é boa para testes, estudo e desenvolvimento: montar um ambiente local, assinar um JWT de exemplo, escrever um teste automatizado, aprender como é um arquivo PEM.

Para chaves de produção — servidor, SSH, certificado TLS, assinatura de código —, gere a chave na máquina onde ela será usada. Mesmo sem envio, um navegador não é o ambiente ideal para uma chave crítica: extensões instaladas conseguem ler a página, o conteúdo passa pela área de transferência e pela pasta de downloads, e você depende de confiar no código que o site entregou naquele dia. Os comandos equivalentes são curtos:

# Chave privada RSA de 3072 bits, em PKCS#8
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:3072 -out chave-privada.pem

# Chave pública correspondente, em SPKI
openssl pkey -in chave-privada.pem -pubout -out chave-publica.pem

# Par de chaves para SSH
ssh-keygen -t ed25519 -C "[email protected]"

Como funciona o par de chaves

No RSA, criado em 1977 por Rivest, Shamir e Adleman, cada pessoa tem duas chaves matematicamente ligadas:

  • a chave pública pode ser distribuída à vontade. Com ela, qualquer um cifra uma mensagem para você ou confere uma assinatura sua;
  • a chave privada fica em segredo. Só ela decifra o que foi cifrado com a pública e cria assinaturas.

A segurança vem da dificuldade de fatorar o módulo, um número enorme que é o produto de dois primos secretos. O “tamanho da chave” é o tamanho desse módulo em bits. O expoente público é sempre 65537, o valor padrão em praticamente todas as implementações.

Qual uso escolher

OpçãoServe paraOnde aparece
RSASSA-PKCS1-v1_5AssinarJWT RS256, certificados TLS; o mais compatível
RSA-PSSAssinarJWT PS256, TLS 1.3; recomendado para sistemas novos
RSA-OAEPCifrarProteger uma chave simétrica (JWE RSA-OAEP-256)

Na Web Crypto API, uma chave nasce presa a um único uso — por isso a pergunta. Mas o arquivo PEM exportado é uma chave RSA genérica: o mesmo arquivo pode ser importado depois para qualquer um dos três usos. A escolha só muda os campos alg e key_ops do JWK. A boa prática é não usar o mesmo par para assinar e para cifrar.

RSA não cifra textos longos: com 2048 bits e OAEP com SHA-256, o limite é de 190 bytes por operação. Na prática, o RSA cifra uma chave AES, e o AES cifra o conteúdo. Para proteger um texto com senha, use o criptografador de texto AES-256.

Tamanhos recomendados

MóduloForça aproximadaSituação segundo o NIST
2048 bits112 bitsMínimo aceito hoje; previsto para ser descontinuado após 2030
3072 bits128 bitsRecomendado para proteção além de 2030
4096 bitsentre 128 e 192 bitsMargem extra; geração e assinatura mais lentas

As equivalências de 2048 e 3072 bits são da NIST SP 800-57 Parte 1 (revisão 5, de 2020); o calendário de transição para o mínimo de 128 bits depois de 2030 foi proposto na SP 800-131A revisão 3 (rascunho de 2024). Chaves de 1024 bits são consideradas inseguras e não são oferecidas aqui.

PKCS#1, PKCS#8 e SPKI: que arquivo é esse?

Todos são o mesmo tipo de embrulho — dados binários (DER) em Base64, com 64 caracteres por linha, entre linhas BEGIN e END. O que muda é o conteúdo:

CabeçalhoFormatoConteúdo
-----BEGIN PRIVATE KEY-----PKCS#8Chave privada de qualquer algoritmo, com o identificador do algoritmo
-----BEGIN PUBLIC KEY-----SPKI (X.509)Chave pública de qualquer algoritmo, com o identificador
-----BEGIN RSA PRIVATE KEY-----PKCS#1Chave privada, só RSA (formato “tradicional” do OpenSSL)
-----BEGIN RSA PUBLIC KEY-----PKCS#1Chave pública, só RSA
-----BEGIN ENCRYPTED PRIVATE KEY-----PKCS#8 cifradoChave privada protegida por senha
-----BEGIN OPENSSH PRIVATE KEY-----OpenSSHFormato próprio do ssh-keygen

Esta ferramenta gera PKCS#8 (privada) e SPKI (pública), os formatos que a Web Crypto API exporta e que as bibliotecas atuais esperam. Ela não gera PKCS#1 nem OpenSSH; se precisar, converta localmente:

# PKCS#8 → PKCS#1 ("BEGIN RSA PRIVATE KEY"), no OpenSSL 3
openssl rsa -in chave-privada.pem -traditional -out chave-pkcs1.pem

# Chave pública SPKI → linha "ssh-rsa AAAA…" do authorized_keys
ssh-keygen -i -m PKCS8 -f chave-publica.pem

# Proteger a chave privada com senha
openssl pkey -in chave-privada.pem -aes256 -out chave-privada-cifrada.pem

O JWK (JSON Web Key, RFC 7517) guarda os mesmos números em JSON e é o formato usado por JWT, JWKS e OAuth. Para inspecionar um token assinado, veja o decodificador de JWT.

Impressão digital

A impressão digital é o SHA-256 dos bytes DER da chave pública (SPKI). Serve para confirmar que duas pessoas estão olhando para a mesma chave sem comparar o arquivo inteiro. Ela não é igual à impressão que o ssh-keygen -l mostra, calculada sobre o formato do SSH.

Ed25519: a alternativa moderna

Para assinatura, o Ed25519 (RFC 8032) costuma ser melhor escolha que o RSA em projetos novos: segurança na faixa de 128 bits com chave pública de 32 bytes e assinatura de 64 bytes, e geração instantânea. É o padrão recomendado para chaves SSH. As limitações: ele só assina (não cifra) e alguns sistemas antigos aceitam apenas RSA.

A ferramenta gera Ed25519 quando o navegador oferece o algoritmo na Web Crypto API — Chrome 137, Firefox 129 e Safari 17 em diante — e desabilita a opção quando não oferece.

Vale saber: tanto RSA quanto Ed25519 seriam quebrados por um computador quântico de grande porte. Os primeiros padrões pós-quânticos do NIST (FIPS 203, 204 e 205) saíram em agosto de 2024, e a migração está em andamento.

Perguntas frequentes

A chave privada é enviada para algum servidor?

Não. Ela é gerada por crypto.subtle.generateKey dentro do seu navegador e só existe na memória da página até você fechá-la ou gerar outra. Depois de carregar a página, dá para desligar a internet e continuar gerando.

Posso usar a chave gerada aqui em produção?

Tecnicamente a chave é tão forte quanto a do OpenSSL: os números aleatórios vêm do gerador criptográfico do sistema. A recomendação de gerar localmente é sobre o ambiente: no navegador há extensões, área de transferência e arquivo baixado sem senha no caminho. Para algo crítico, use os comandos acima.

Por que 4096 bits demora mais?

Gerar uma chave RSA é procurar dois números primos aleatórios com metade do tamanho do módulo, e eles ficam mais raros e mais caros de testar conforme crescem. Como é uma busca aleatória, o tempo varia a cada geração: 2048 bits costuma sair em menos de um segundo; 4096 pode levar alguns segundos.

Como converto a chave para usar no SSH?

Para a chave pública, ssh-keygen -i -m PKCS8 -f chave-publica.pem imprime a linha ssh-rsa … do authorized_keys. Mas, para SSH, o mais simples e seguro é criar o par direto com ssh-keygen.

A chave privada tem senha?

Não. O arquivo chave-privada.pem sai sem criptografia (cabeçalho BEGIN PRIVATE KEY). Para protegê-lo, use o comando openssl pkey … -aes256 mostrado acima, com uma senha forte.

Qual a diferença entre criptografia simétrica e assimétrica?

Na simétrica (AES), a mesma chave cifra e decifra, então as duas partes precisam combiná-la antes. Na assimétrica (RSA), a chave que cifra é pública e só a privada decifra. A assimétrica é muito mais lenta; por isso os sistemas reais combinam as duas. Para autenticar mensagens com um segredo compartilhado, existe ainda o HMAC.