实用工具

RSA / ECDSA / Ed25519 密钥对生成器

在浏览器里生成 RSA 2048–4096、ECDSA P-256/P-384 或 Ed25519 密钥对,同时输出 PEM 和 OpenSSH 格式。

浏览器本地运行哈希与加密3.1万
免费

结果

结果会显示在这里。

有时候马上就需要一对密钥:签测试用的 JWT、给预发环境配 TLS、给 CI 任务单独发一个 SSH 部署密钥——而手边这台电脑偏偏没装 OpenSSL。本页用浏览器自带的 WebCrypto 生成密钥,也就是浏览器跑 TLS 时用的那套实现,私钥在你的设备上产生,其他任何地方都不存在。输出包括 PKCS#8 PEM 私钥(或 OpenSSH 私钥文件)、SPKI PEM 公钥,以及可以直接放进 authorized_keys 的单行 OpenSSH 公钥。对应的命令行工具是 OpenSSL(openssl/openssl,30k+ star,Apache-2.0),本工具写出的每个 PEM 文件它都能直接读取。

它是怎么工作的

  • 密钥由 crypto.subtle.generateKey 生成:RSA 公钥指数固定为 65537,ECDSA 使用 NIST 曲线,Ed25519 取决于浏览器是否支持。
  • PEM 部分是标准容器 BEGIN PRIVATE KEY(PKCS#8)和 BEGIN PUBLIC KEY(SPKI),OpenSSL、Node.js、Java、Go 以及各种 JWT 库都能直接加载,无需转换。
  • OpenSSH 公钥按 RFC 4253、5656、8709 编码,测试中与 ssh-keygen 生成的密钥逐字节比对过,SHA256 指纹也与 ssh-keygen -l 的输出一致。
  • 私钥格式选 OpenSSH 时,写出未加密的 openssh-key-v1 文件,这是 OpenSSH 7.8 起 ssh-keygen 的默认格式。

你的数据去了哪里

哪也没去。本工具完全在你的浏览器里运行:你粘贴的文本由页面处理,不会传输到任何服务器,也不会写进任何日志。

本工具会接触密钥和凭证,因此任何一次运行都不会被保存,连你自己的历史里也不会有。

它要花多少

本工具完全免费,不需要登录,也不消耗积分。

常见问题

该选哪种密钥类型?
SSH 用 Ed25519,并把私钥格式选为 OpenSSH:密钥短、速度快,没有容易选错的参数;而且部分 ssh 版本(包括 macOS 自带的)无法加载 PKCS#8 格式的 Ed25519 私钥。TLS 证书和 JWT 选 ECDSA P-256,现代客户端支持最广。只有老旧或要求严格的系统才需要 RSA;NIST SP 800-57 认为 2048 位 RSA 到 2030 年都够用,之后建议 3072 位。4096 位在浏览器里生成可能要好几秒。
私钥没有密码保护,怎么加?
保存为 OpenSSH 格式后运行 ssh-keygen -p -f 你的私钥文件,就能原地设置口令。PKCS#8 文件可以用 openssl pkcs8 -topk8 -v2 aes-256-cbc -in key.pem -out key.enc.pem 输出一个加密副本。保存 SSH 私钥后记得 chmod 600,否则 ssh 会拒绝使用。
我需要的是 BEGIN RSA PRIVATE KEY,不是 BEGIN PRIVATE KEY。
那是更早的 PKCS#1 容器,里面是同样的数字。OpenSSL 3 下用 openssl rsa -in key.pem -traditional -out key.rsa.pem 即可转换。不过包括 OpenSSH 在内的大多数现有软件都直接接受 PKCS#8,先确认是否真的需要旧格式。
怎么确认这对密钥没问题?
对 OpenSSH 私钥运行 ssh-keygen -y -f 私钥文件,会打印出由私钥推导的公钥,应当与页面上那行完全一致。PEM 私钥可以用 openssl pkey -in key.pem -pubout 输出 SPKI 公钥,应与 PUBLIC KEY 块逐字节相同。
选 Ed25519 报错怎么办?
Ed25519 进入 WebCrypto 比 RSA 和 ECDSA 晚,版本过旧的浏览器可能不支持;当前版本的 Chrome、Edge、Firefox、Safari 都已支持。升级浏览器即可,或者改用最接近的 ECDSA P-256。

背后的开源项目

本工具是独立实现,并未打包第三方库。openssl/openssl(Apache-2.0)在代码层面做的是同一件事——如果你需要在自己的程序里实现它,从那里开始,而不是调用一个网页。

openssl/openssl

也常被称作

  • rsa密钥生成
  • 在线生成ssh密钥
  • rsa公钥私钥生成
  • ed25519密钥生成
  • pem密钥生成
  • ssh-keygen在线