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.
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ção | Serve para | Onde aparece |
|---|---|---|
| RSASSA-PKCS1-v1_5 | Assinar | JWT RS256, certificados TLS; o mais compatível |
| RSA-PSS | Assinar | JWT PS256, TLS 1.3; recomendado para sistemas novos |
| RSA-OAEP | Cifrar | Proteger 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ódulo | Força aproximada | Situação segundo o NIST |
|---|---|---|
| 2048 bits | 112 bits | Mínimo aceito hoje; previsto para ser descontinuado após 2030 |
| 3072 bits | 128 bits | Recomendado para proteção além de 2030 |
| 4096 bits | entre 128 e 192 bits | Margem 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çalho | Formato | Conteúdo |
|---|---|---|
-----BEGIN PRIVATE KEY----- | PKCS#8 | Chave 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#1 | Chave privada, só RSA (formato “tradicional” do OpenSSL) |
-----BEGIN RSA PUBLIC KEY----- | PKCS#1 | Chave pública, só RSA |
-----BEGIN ENCRYPTED PRIVATE KEY----- | PKCS#8 cifrado | Chave privada protegida por senha |
-----BEGIN OPENSSH PRIVATE KEY----- | OpenSSH | Formato 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.pemO 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.