跳转到正文

RSA 密钥生成器

生成新的 RSA 密钥对,模数为 2048 或 3072 位,公钥指数为 65537。你会获得未加密的 PKCS #8 PEM 格式私钥、SPKI PEM 格式公钥、与其匹配并带有 SHA-256 指纹的 OpenSSH ssh-rsa 行、它支持签名的 RS 和 PS 算法,以及可用作密钥 ID 的 RFC 7638 JWK 指纹。每个密钥对都使用 Node 的 crypto 模块为本次请求生成,绝不保存。

重置

常见问题

应该选择 2048 位还是 3072 位?

2048 位 RSA 仍是常见的最低标准,且各处都接受,包括拒绝较小密钥的 JWT 库。3072 位对应 NIST SP 800-57 建议的 128 位安全级别,可用于 2030 之后的场景,但代价是签名更大、签署更慢。不提供 4096 位等更大尺寸,因为在共享服务器上,其生成时间难以预测。

结果采用哪些格式?

私钥采用 PEM 编码的 PKCS #8 格式(BEGIN PRIVATE KEY),公钥采用 PEM 编码的 SubjectPublicKeyInfo 格式(BEGIN PUBLIC KEY)。OpenSSL、Java、.NET、Go、Node、jose 和大多数其他库都可以读取这两种格式。结果还会附上 OpenSSH 公钥行,供 authorized_keys 文件使用。

私钥经过加密吗?

不,私钥会直接返回,不带口令短语,因此可以直接粘贴到其他工具中。若要保护静态存储的私钥,请运行 openssl pkey -in key.pem -aes256 -out key-encrypted.pem,并只保存加密后的文件。请勿将未加密的副本纳入版本控制。

如何获取 PKCS #1 格式(BEGIN RSA PRIVATE KEY)?

某些较旧的软件需要传统的 PKCS #1 格式。使用 OpenSSL 3 运行 openssl pkey -in key.pem -traditional -out key-rsa.pem,即可转换 PKCS #8 文件。密钥材料相同,只有封装格式不同。

我可以将此密钥用于 SSH 吗?

可以。将 ssh-rsa 行放入服务器上的 ~/.ssh/authorized_keys,并将私钥 PEM 保存为身份文件,权限设为 600,因为 OpenSSH 可以读取 PEM 编码的 RSA 密钥。如今许多服务器更倾向于使用 Ed25519 密钥,可通过 Ed25519 Key Generator 创建。

什么是 JWK 指纹?

它是对公钥必需的 JWK 成员进行 RFC 7638 SHA-256 哈希后,以 base64url 编码得到的值。它能够独立于密钥格式标识密钥,因此很适合作为 JWT 和 JWKS 文档中的 kid 值。JWK Converter 会显示此密钥的相同值。

此密钥可以签署哪些 JWT 算法?

RSA 密钥可签署 RS256、RS384 和 RS512(PKCS #1 v1.5),以及 PS256、PS384 和 PS512(RSA-PSS)。请在 JWT Generator 中使用私钥 PEM,并向验证方提供公钥 PEM 或其 JWK。算法属于签名的属性,因此同一密钥可用于多种算法。

生成的密钥会存储在某处吗?

不会。密钥对会根据你的请求在内存中创建,在结果中返回一次,且绝不会记录或保存。如果密钥丢失,请重新生成一对,因为没有人能帮你找回。

注释选项有什么作用?

注释会附加到 OpenSSH 公钥行末尾,通常是 user@host 或 deploy-2026 这样的标签,方便你在 authorized_keys 中识别密钥。它不会更改密钥或其指纹。注释最多为 200 个字符,空白字符会合并为单个空格。

密钥的随机性如何?

这些素数由操作系统的密码学安全随机数生成器通过 OpenSSL 生成,来源与服务器生成自身密钥时相同。每次请求都会生成新的独立密钥对。公钥指数始终为 65537,这是标准值。

关于 OneClick Pro

OneClick Pro 是一个免费的工具集合,包含超过 150 种网络工具,助你处理日常工作:转换图像和单位、格式化和验证代码、检查域名和 SEO,以及处理文本、日期和数字。所有工具均可免注册、免订阅使用;你输入的内容仅用于计算结果,绝不会被存储。你可以将它用作处理临时任务的快捷工具箱,也可以收藏每天都会用到的工具。