生成 公钥私钥 笔记

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

使用 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 天前
Java开发者视角:深入理解Node.js异步编程模型
java·后端·node.js
智通2 天前
Node.js事件循环核心机制
node.js
初圣魔门首席弟子2 天前
Node.js 详细介绍(知识库版)
windows·qt·node.js·知识库
糖拌西瓜皮2 天前
Java 开发者如何快速上手 Node.js:一份从入门到进阶的学习路线
node.js
yspwf2 天前
NestJS 配置管理完整方案
后端·架构·node.js
网络点点滴2 天前
Node.js事件驱动架构
架构·node.js
weixin_471383032 天前
Node.js + Express 入门实战笔记-01-基础
node.js·lua·express
Rain5093 天前
2.2 数据基础:数据库集成与 ORM(TypeORM / Prisma)
数据库·人工智能·ai·数据分析·node.js·自动化·ai编程
大家的林语冰3 天前
npm 不忍了,正式上线“阶段式发布“的新功能,进一步对抗频繁的供应链攻击!
前端·javascript·node.js