UFOZoo

RSA/ECDSA密钥 — SSH/TLS/PEM在线生成器

在线生成 RSA/ECDSA 密钥对,用于 SSH、TLS、JWT 和 OpenSSL。PEM 格式导出,浏览器本地处理,密钥不上传服务器。

功能特性

  • 两种算法模式 — RSA(2048/4096 位)和 ECDSA(P-256/P-384/P-521),满足不同加密需求
  • 标准 PEM 输出 — 公钥导出为 SPKI 格式,私钥导出为 PKCS#8 格式,兼容 OpenSSL 和主流加密库
  • 安全密钥生成 — 使用 Web Crypto API(crypto.subtle.generateKey)生成密码学安全的随机密钥
  • 一键复制 — 每条密钥独立复制,附带视觉反馈
  • 保存为 .pem 文件 — 公钥和私钥分别保存为独立 PEM 文件
  • 100% 浏览器端处理 — 所有密钥生成在本地完成,私钥永不离开设备或网络
  • 密钥详情面板 — 显示每次生成密钥的算法名称、曲线/尺寸、格式元数据
  • 生成进度条 — RSA 素数搜索期间实时显示进度(4096 位密钥时特别有用)

使用方法

  1. 1选择密钥算法:RSA 适用于非对称加密,ECDSA 适用于数字签名和现代应用。
  2. 2选择密钥长度:RSA 可选 2048(默认推荐)或 4096 位;ECDSA 可选 P-256、P-384 或 P-521 曲线。
  3. 3点击生成按钮 — 工具使用浏览器的 Web Crypto API 创建密码学安全的密钥对。
  4. 4查看 PEM 格式的公钥和私钥。点击复制按钮复制到剪贴板。
  5. 5点击保存按钮保存为 .pem 文件,用于 OpenSSL、SSH 或服务器配置。
  6. 6查看密钥详情面板了解算法类型、密钥尺寸/曲线和格式信息。
  7. 7RSA 密钥生成时观察进度条——2048 位约 2-5 秒,4096 位在慢速设备上可能需要 10-30 秒。
  8. 8将公钥用于 TLS/SSL 证书:用私钥生成 CSR,然后提交给证书颁发机构。
  9. 9将密钥对用于 JWT 签名:配置认证服务器用私钥签名 Token,分发公钥用于验证。

常见问题

RSA 和 ECDSA 有什么区别?

RSA 是最广泛使用的非对称加密算法,适用于加密、数字签名和密钥交换。兼容性最好但需要较大的密钥(2048-4096 位)。ECDSA(椭圆曲线数字签名算法)在同等安全性下密钥小得多——P-256 与 RSA 3072 安全性相当。ECDSA 签名速度更快,是区块链、JWT、TLS 证书等现代应用的首选。

应该使用什么密钥长度?

RSA 推荐 2048 位(行业标准)。4096 位安全性更高,但密钥生成和加密操作明显变慢。ECDSA 推荐 P-256(secp256r1),兼容性最好。P-384 被某些政府标准要求(NSA Suite B)。P-521 安全性最高但兼容性有限。

PEM 格式是什么,如何使用这些密钥?

PEM 是基于 Base64 编码的标准格式,带标题/结尾行。公钥使用 BEGIN PUBLIC KEY / END PUBLIC KEY(SPKI 格式,RFC 5280),私钥使用 BEGIN PRIVATE KEY / END PRIVATE KEY(PKCS#8 格式,RFC 5208)。这些文件兼容 OpenSSL、OpenSSH、Node.js crypto、Python cryptography、TLS 服务器、JWT 等。

生成的密钥安全吗?

是的。工具使用 Web Crypto API(crypto.subtle.generateKey),它是内置于每个现代浏览器的密码学安全伪随机数生成器(CSPRNG)。与浏览器用于 HTTPS/TLS 的是同一 API。生成的密钥与 OpenSSL 创建的密钥不可区分。所有生成在本地完成——密钥永远留在你的浏览器中。

这些密钥可以用于 SSH 吗?

RSA PEM 密钥经过转换后可用于 SSH。你可能需要用 ssh-keygen -f public-key.pem -i -m PKCS8 提取 SSH 格式的公钥。ECDSA 密钥(尤其是 P-256)也被 OpenSSH 6.5+ 支持。

可以将这些密钥导入其他系统吗?

可以。PEM 格式被普遍支持。Node.js 用 crypto.createPublicKey() 和 crypto.createPrivateKey()。Python 用 cryptography 库的 load_pem_private_key() 和 load_pem_public_key()。OpenSSL 用 openssl pkey -in key.pem。JWT 可用公钥验证签名、私钥签名。

为什么密钥生成有时很慢?

RSA 密钥生成需要寻找大素数,2048 位需要几秒,4096 位需要更久。这是正常现象,说明真的在做随机数生成。ECDSA 通常快得多(一秒以内),因为它不需要素数搜索。

你们会存储我的私钥吗?

不会。私钥完全在浏览器内存中生成。永远不会传输到任何服务器、不会被存储在任何数据库中。关闭或刷新页面后密钥永久消失。你有责任保存私钥——如果丢失,包括我们在内的任何人都无法恢复。

这些密钥可以用于 SSH 认证吗?

RSA PEM 密钥经过格式转换后可配合 SSH 使用。提取 SSH 公钥格式:ssh-keygen -f public-key.pem -i -m PKCS8。私钥可能需要转换为 OpenSSH 格式:ssh-keygen -p -m PEM -f private-key.pem。ECDSA P-256 密钥原生支持 OpenSSH 6.5+。

PKCS#8 和 SPKI PEM 格式有什么区别?

PKCS#8(RFC 5208)是私钥的标准格式,将密钥数据与算法标识打包。SPKI(RFC 5280)是公钥的标准格式,包含算法和密钥数据。两者都被 OpenSSL、Node.js、Python、Java、Go 原生支持。

相关工具