跳到正文

密钥对生成

Key Pair Generator

生成 RSA、ECDSA 或 Ed25519 密钥对,导出为 PEM、JWK 或 OpenSSH。

在浏览器里生成公钥/私钥对,并导出为 OpenSSH、PEM(SPKI 和 PKCS#8)或 JWK。Ed25519、ECDSA P-256/P-384 和 RSA 2048/3072/4096,全部由浏览器自己的 WebCrypto 生成。

🔒 完全在你的浏览器里运行rsaed25519keyscrypto
算法

小、快、现代。2014 年起就是 SSH 的默认值。

会出现在 OpenSSH 公钥那一行的末尾。

密钥由这个浏览器自己的 WebCrypto(crypto.subtle.generateKey)在本标签页里生成,不会离开这里——不传输、不记录、不存储。输出格式在本项目的测试里与 OpenSSH 本身逐一核对过。条件允许的话,请在将要保管私钥的那台机器上生成;在浏览器标签页里存在过的密钥,就是在那个标签页的内存里存在过。

怎么用

  1. 选算法

    任何新东西都用 Ed25519——小、快,而且从 2014 年起就是 SSH 的默认。对面有东西要求的话再用 ECDSA 或 RSA。

  2. 生成并选格式

    OpenSSH 给你一行 `authorized_keys` 和一个 `openssh-key-v1` 私钥;PEM 给 SPKI 和 PKCS#8;JWK 给 JOSE 库用。同一把密钥,三种写法。

  3. 保存之后加口令

    私钥是未加密导出的。在本地:`ssh-keygen -p -f id_key` 加口令,`chmod 600` 让 ssh 肯用这个文件。

常见问题

在浏览器里生成私钥安全吗?

密钥从不离开标签页——WebCrypto 生成它,什么都不传输、不记录、不存储。但一把在浏览器标签页里存在过的密钥,就在那个标签页的内存里存在过,那比一个 shell 的暴露面更大。守护生产环境的密钥,请在将要持有它的机器上生成。

为什么 Ed25519 有时不见了?

因为那个浏览器的 WebCrypto 没有实现它。支持来得晚而且参差不齐;页面加载时会检查,并把选项藏起来,而不是提供一个会失败的东西。ECDSA P-256 是最接近的广泛支持的替代。

RSA 2048 还是 4096?

2048 仍然够用,生成和使用都快得多。4096 买的是应对一个没人能估量的未来的余量,代价是握手时间实实在在地变长。如果你选 RSA 是为了兼容,2048 通常本来就是对面想要的。

指纹是从哪里来的?

它是 OpenSSH 格式公钥的 SHA-256 指纹——和 `ssh-keygen -lf` 打印的是同一个字符串,所以两者可以直接比对。

可以从这些接进来

接下来

这些工具吃得下当前工具的产出,结果可以直接送过去。