生成 公钥私钥 笔记

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

使用 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

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

相关推荐
wno70416 小时前
node.js中使用jquery
前端·node.js·jquery
damoluomu1 天前
Node 的 Headless 出厂没有前台,Java 的 Headless 是从门户里长出来的
java·开发语言·node.js
Dumbness1 天前
一个手机号验证码登录接口的五个坑:无限发码、无限试码,传个数字就让 Express 进程退出
node.js·express
怒放的生命19911 天前
本地用 pnpm 省磁盘,团队继续用 npm:极简实践
前端·npm·node.js
Hone2 天前
我把「自动发文章到掘金」做成了一个 Agent 技能:juejin-skills
node.js·ai编程·前端工程化
Dumbness3 天前
二十行手写的 SKILL.md 头部解析,遇到 YAML 的折叠写法、单引号和嵌套键就读错:和 js-yaml 逐条对照
node.js·ai编程
只睡四小时3 天前
MCP 弃用 SSE?Node 分帧漏 81.7% 事件
node.js·webassembly·实时通信·mcp·streamable http
hey you~4 天前
个体户门店办理400电话,如何对接订单系统实现来电弹窗
node.js·webhook·400电话·门店数字化·来电弹窗·订单系统对接
YIAN5 天前
RAG 学到最后,我真正学会的不是“检索”,而是让系统知道自己缺什么
langchain·node.js·llm