# EC 密钥生成器

生成用于 ES256、ES384 或 ES512 签名、ECDH 和 TLS 证书的椭圆曲线密钥对，可选择 P-256、P-384 或 P-521。结果包含未加密的 PKCS #8 PEM 私钥、SPKI PEM 公钥、带有 SHA-256 指纹的 OpenSSH ecdsa-sha2 公钥行，以及 RFC 7638 JWK 指纹。每对密钥都通过 Node 的 crypto 模块全新生成，绝不存储。

## 常见问题

### 应该选择哪条曲线？

P-256（也称为 prime256v1 或 secp256r1）是支持最广泛的曲线，提供约 128 位安全性。P-384 提供约 192 位安全性，一些政府配置文件（如 CNSA）要求使用该曲线。P-521 是最大的 NIST 曲线，支持较少，因此只有系统要求时才选择它。

### 每条曲线对应哪种 JWT 算法？

P-256 密钥用于签署 ES256，P-384 密钥用于签署 ES384，P-521 密钥用于签署 ES512。JOSE 将每种算法与唯一一条曲线绑定，因此 JWT Generator 会拒绝使用曲线不匹配的密钥。结果中会列出与你的密钥匹配的算法。

### 会返回哪些格式？

私钥为 PEM 编码的 PKCS #8 格式（BEGIN PRIVATE KEY），公钥为带有命名曲线的 PEM 编码 SubjectPublicKeyInfo 格式（BEGIN PUBLIC KEY）。你还会获得 OpenSSH 在 authorized_keys 中所需的 ecdsa-sha2-nistp256、nistp384 或 nistp521 行。

### 如何获取 SEC1 格式（BEGIN EC PRIVATE KEY）？

有些工具仍需要较旧的 SEC1 编码。使用 OpenSSL 3 运行 openssl pkey -in key.pem -traditional -out key-ec.pem，或 openssl ec -in key.pem -out key-ec.pem。密钥本身保持不变。

### 我可以使用此密钥创建证书签名请求吗？

可以。保存私钥 PEM 并运行 openssl req -new -key key.pem -subj "/CN=example.com" -out request.csr，然后使用 CSR Decoder 检查请求。证书颁发机构接受用于 TLS 证书的 P-256 和 P-384 密钥。

### 为什么 EC 密钥比 RSA 密钥小？

椭圆曲线密码学用短得多的密钥即可达到相同的安全性，因此 P-256 密钥的安全性相当于 3072 位 RSA。签名更短，签署速度也更快。P-256 公钥仅占 65 字节。

### 私钥是否受口令短语保护？

不，私钥会以未加密形式返回，方便其他工具直接读取。请运行 openssl pkey -in key.pem -aes256 -out key-encrypted.pem 对其加密后再存储。切勿将未加密的私钥提交到代码库。

### JWK 指纹有什么用途？

RFC 7638 指纹是对密钥的 crv、kty、x 和 y 成员进行 SHA-256 哈希后得到的 base64url 值。它是稳定的密钥标识符，不受 PEM 或 JWK 格式影响，适合作为 JWT 标头和 JWKS 文档中的 kid 值。

### 密钥对会被存储吗？

不会。密钥对会根据你的请求在内存中生成，只返回一次，且绝不会记录或保存。离开页面前请复制两把密钥，因为之后无法再次查看。

### 注释字段会更改什么？

它只会在 OpenSSH 公钥行末尾添加标签，例如 user@laptop，方便你在 authorized_keys 中识别密钥。指纹和密钥材料都保持不变。注释最多可包含 200 个字符。

在这里投放广告？

[给我们发邮件](mailto:hi@dennn.is?subject=%E5%9C%A8%20OneClick%20Pro%20%E4%B8%8A%E6%8A%95%E6%94%BE%E5%B9%BF%E5%91%8A)

[广告 适用于 WordPress 的智能体就绪型插件套件。](https://sleekwp.com/?ref=oneclickpro)
