生成 公钥私钥 笔记

生成非对称加密的公钥和私钥的过程记录。

使用 OpenSSL 生成私钥和公钥密钥对,最常用的是 RSA 算法,基本流程分为两步:

  • 首先生成私钥
  • 然后从私钥中提取出公钥

核心步骤:生成 RSA 密钥对

  1. 生成 RSA 私钥

    在终端中执行以下命令:

    bash 复制代码
    openssl genrsa -out private_key.pem 2048
    • genrsa:这是生成 RSA 私钥的命令。
    • -out private_key.pem:指定输出的私钥文件名
    • 2048:指定密钥的长度(位数)。2048位是当前广泛接受的安全标准,你也可以根据需要选择 4096 以获得更高安全性
  2. 生成对应的公钥

    使用上一步生成的私钥文件来提取公钥:

    bash 复制代码
    openssl rsa -in private_key.pem -pubout -out public_key.pem
    • rsa:这是处理 RSA 密钥的命令。
    • -in private_key.pem:指定输入的私钥文件
    • -pubout:指示命令输出公钥
    • -out public_key.pem:指定输出的公钥文件名

执行完成后,你会得到两个文件:private_key.pem(私钥)和 public_key.pem(公钥)

其他密钥类型

除了 RSA,OpenSSL 也支持生成其他类型的密钥对。

  • 生成 EC(椭圆曲线)密钥对

    EC 密钥在提供相同安全级别时,通常比 RSA 密钥更短、效率更高。

    1. 生成私钥 (以 secp256k1 曲线为例):

      bash 复制代码
      openssl ecparam -name secp256k1 -genkey -noout -out private_key.pem

    2. 生成公钥

      bash 复制代码
      openssl ec -in private_key.pem -pubout -out public_key.pem

  • 生成 DSA(数字签名算法)密钥对

    DSA 通常用于数字签名。

    1. 生成 DSA 参数

      bash 复制代码
      openssl dsaparam -out dsaparam.pem 2048
    2. 生成私钥

      bash 复制代码
      openssl gendsa -out private_key.pem dsaparam.pem
    3. 生成公钥

      bash 复制代码
      openssl dsa -in private_key.pem -pubout -out public_key.pem

重要注意事项

  • 私钥安全 :私钥是身份和所有权的核心凭证,必须严格保密 ,绝不要分享给任何人

  • 文件权限 :为确保安全,建议将私钥文件的权限设置为仅所有者可读写(例如在 Linux/macOS 上使用命令 chmod 600 private_key.pem

  • 密码保护(可选) :生成私钥时,可以为其添加密码保护,防止私钥文件被盗用。如需此功能,可以在 genrsa 命令中加入 -aes256 选项。

    bash 复制代码
    openssl genrsa -aes256 -out private_key.pem 2048

    执行此命令后,系统会提示你输入并确认一个密码。

相关推荐
赖龙1 天前
pnpm vs npm
前端·npm·node.js
烂蜻蜓2 天前
Node.js入门教程(三十一):Express 框架
node.js·express
小屁孩你滑稽掉了2 天前
prisma操作数据库的方法使用教程(简洁版)
数据库·node.js·prisma·fastify
__zRainy__2 天前
Node系列 · Node基础:https 模块
后端·网络协议·http·https·node.js
__zRainy__2 天前
Node.js Web 框架选型指南:从 Express 到 Hono 的全景对比
前端·node.js·express·koa·nestjs·egg·fastify
烂蜻蜓2 天前
Node.js入门教程(二十八):GET/POST请求
node.js
__zRainy__2 天前
Node系列 · Node基础:net 模块
后端·node.js
嘟嘟07173 天前
从浏览器到 hello world:Docker + nginx 反向代理 + Node 最小服务器一次讲清
docker·容器·node.js
禁止摆烂_才浅3 天前
Node.js 高频面试题
前端·面试·node.js
FungLeo3 天前
Node 后端实战 · 老系统数据迁移怎么不出乱子?V1→V2 重构实战与 3 个生产坑
node.js·serverless·数据库迁移·d1 数据库