拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

tldr 中文指南:使用 `openssl req` 管理 PKCS10 证书签名请求与自签名证书

tldr 中文指南:使用 `openssl req` 管理 PKCS10 证书签名请求与自签名证书
  • 文档
  • 教程
  • 知识库

【免费下载链接】tldr

Collaborative cheatsheets for console commands 📚.

项目地址:https://gitcode.com/GitHub_Trending/tl/tldr
点击查看免费下载

openssl req是 OpenSSL 中用于创建 PKCS#10 证书签名请求(CSR)的核心子命令,也是 tldr 项目在 pages.ar/common/openssl-req.md(及其英文原版 pages/common/openssl-req.md)中收录的常用命令页。本指南以该 tldr 页面为骨架,完整讲解如何生成提交给证书颁发机构(CA)的 CSR、如何一步生成自签名证书与密钥对,并深入每个参数的含义与适用场景。读完本文,你将掌握openssl req两条高频用法,理解 CSR 与自签名证书的完整生成链路,并知道如何在 tldr 仓库中查阅、复刻和校验这类命令文档。

一、openssl req是什么

在 tldr 的阿拉伯语页面中,openssl req被描述为:

أمر OpenSSL لإدارة طلبات توقيع الشهادات PKCS#10. (OpenSSL 中用于管理 PKCS#10 证书签名请求的命令。)

结合英文原版> Manage PKCS#10 Certificate Signing Requests.可知,req子命令的全部职责都围绕PKCS#10 格式的证书签名请求展开。PKCS#10 是公钥基础设施(PKI)中定义 CSR 结构的标准格式:证书申请者将公钥和身份信息(如国家、通用名)打包成请求,私钥则始终留在本地,最终由 CA 对请求完成签名后签发 X.509 证书。

在 tldr 仓库中,openssl系列被拆分为多个页面:

  • pages.ar/common/openssl.md 是总览页,明确指出“某些子命令(如req)有各自独立的使用文档”;
  • pages.ar/common/openssl-req.md 即本文讲解的 CSR 管理页;
  • pages.ar/common/openssl-x509.md 则负责 X.509 证书的查看、转换与公钥导出,与req正好构成“证书生成 → 证书管理”的完整闭环。

req子命令的官方参考文档链接为 https://docs.openssl.org/master/man1/openssl-req/(tldr 页面顶部“More information”行保留,便于读者查看 OpenSSL 官方手册)。

二、生成一个提交给 CA 的证书签名请求(CSR)

这是openssl req最常见的用途:生成 CSR 文件,随后将其提交给 CA 申请证书。tldr 页面给出的命令如下:

openssl req -new -sha256 -key {{filename.key}} -out {{filename.csr}}

各参数含义:

参数作用
req进入 PKCS#10 证书签名请求子命令
-new生成一个新的 CSR。此时必须提供密钥,可复用已有密钥或现场生成
-sha256指定 CSR 的签名摘要算法为 SHA-256,安全强度高于默认的 SHA-1
-key {{filename.key}}指定用于签署 CSR 的私钥文件,{{filename.key}}是 tldr 风格的用户占位符
-out {{filename.csr}}将 CSR 写入指定输出文件,通常使用.csr扩展名

实操链路:从私钥到 CSR 再到证书

完整的 CSR 申请流程通常分为三步,其中前两步会用到本文的命令:

  1. 生成私钥:先使用 pages/common/openssl.md 中的openssl genpkey -algorithm rsa -out private.key -aes256生成 RSA(或 EC)私钥。如果尚未有私钥,req -new也可以结合-newkey现场生成(见下一节)。
  2. 生成 CSR:执行上面的req -new -sha256 -key命令。交互模式下 OpenSSL 会依次询问国家(C)、省份、城市、组织名、通用名(CN)等 DN(Distinguished Name)字段,也可以后续直接用-subj免交互指定。
  3. 提交给 CA 验证:将{{filename.csr}}发送给证书颁发机构,CA 验签通过后签发证书;证书的查看、有效期检查与格式转换则由 pages.ar/common/openssl-x509.md 中的openssl x509命令负责。

整个链路中,私钥始终不离开申请方,提交给 CA 的只有 CSR,这是 PKI 体系最基本的安全边界。

三、一步生成自签名证书与密钥对

对于本地开发、测试环境或内部服务,通常不需要 CA,直接生成自签名证书即可。tldr 页面给出的命令:

openssl req -new -x509 -newkey rsa:4096 -keyout {{filename.key}} -out {{filename.cert}} -subj "/C=XX/CN=foobar" -days 365

各参数含义:

参数作用
-new生成新的证书请求(内部流程)
-x509关键开关:不输出 CSR,而是直接输出一个自签名 X.509 证书。与-new组合即“生成自签名证书”
-newkey {{rsa}}:{{4096}}同时生成一对新密钥,{{rsa}}表示算法(可为rsa或ec),{{4096}}表示位长/强度;此选项意味着无需预先准备私钥
-keyout {{filename.key}}将新生成的私钥写入该文件
-out {{filename.cert}}将自签名证书写入该文件,通常使用.cert、.crt或.pem扩展名
-subj "{{/C=XX/CN=foobar}}"以非交互方式直接指定证书主题 DN。/C=XX表示国家代码(XX为占位),/CN=foobar表示通用名
-days {{365}}证书有效天数,示例为 365 天,即有效期一年

参数取值与注意事项

  • 算法选择:{{rsa}}:{{4096}}中算法与强度是一对占位符。生产环境常见rsa:2048或rsa:4096;如果选择椭圆曲线,可写作ec并配合-pkeyopt ec_paramgen_curve:P-256指定曲线。
  • 免交互:-subj的存在让整条命令可以完全非交互执行,适合在脚本、CI 和容器初始化中直接复制运行。去掉-subj则会进入逐字段交互问答模式。
  • 自签名的含义:-x509生成的证书由命令中对应私钥自行签名,因此该证书的“CA”就是证书持有者自己。浏览器访问这类证书会提示不受信任,仅建议用于开发与测试,对外提供服务应改用第二节的 CSR 流程向正规 CA 申请。
  • 文件格式:-keyout与-out输出的均为 PEM 文本格式,这也是 tldr 页面与openssl x509转换示例(-inform der -outform pem)默认处理的格式。

四、tldr 文档风格:占位符与命令编排

openssl-req.md页面遵循 tldr 项目的 style-guide.md 规范:

  • 每页最多 8 个命令示例,本文页面包含 2 个,符合上限要求;
  • 描述使用祈使句:阿拉伯语版本使用命令式动词(“إنشاء طلب...”即“生成请求”),与英文版“Generate a certificate signing request...”一致;
  • 占位符语法:用户可替换的值一律用{{...}}包裹,如{{filename.key}}、{{filename.csr}}、{{rsa}}:{{4096}}、{{/C=XX/CN=foobar}},客户端据此对占位符做高亮;
  • 命令行位置排序:程序名 → 子命令 → 选项 → 输出重定向,两条示例均符合“openssl req+ 选项 + 输出文件”的顺序;
  • 阿拉伯语特例:根据 common-arguments.md 中的说明,阿拉伯语(ar)与波斯语(fa)页面的占位符保留英文原文(如path/to/file而非翻译形式),以避免阅读时文本翻转(RTL 方向导致的可读性问题),因此本文档中{{filename.key}}等占位符保持英文书写。

仓库通过npm install --global tldr-lint安装的tldr-lint在每次 PR 时自动校验页面格式;本地也可以用tldr --render path/to/tldr_page.md预览渲染效果(见 style-guide.md 的 General layout 章节)。这意味着本文所有命令与参数说明均可直接在真实环境中验证。

五、实战场景串联

将两条命令与仓库内相关页面组合,即可覆盖最常见的 PKI 实操场景:

场景 A:本地 HTTPS 开发环境(自签名)

# 一步生成私钥 + 自签名证书,有效期 365 天 openssl req -new -x509 -newkey rsa:4096 -keyout server.key -out server.crt -subj "/C=XX/CN=localhost" -days 365 # 查看生成的证书详情 openssl x509 -in server.crt -noout -text # 查看证书到期时间 openssl x509 -enddate -noout -in server.crt

场景 B:向 CA 申请正式证书(CSR)

# 先有私钥,再生成 CSR openssl genpkey -algorithm rsa -out domain.key -aes256 openssl req -new -sha256 -key domain.key -out domain.csr -subj "/C=XX/CN=example.com" # CA 签发后用 openssl x509 检查证书内容 openssl x509 -in domain.crt -noout -pubkey

其中openssl genpkey、openssl x509的具体用法可分别在 pages/common/openssl.md 与 pages.ar/common/openssl-x509.md 中查阅。

六、小结

openssl req是 OpenSSL 证书体系中“从零到证书”的第一站:-new -sha256 -key生成可提交给 CA 的 PKCS#10 CSR,-new -x509 -newkey一步生成自签名证书与密钥对。tldr 仓库的 pages.ar/common/openssl-req.md 用两条精简命令 + 占位符语法,把这两个高频场景沉淀为可复制、可脚本化的操作模板,并通过tldr-lint保证文档格式与命令顺序的规范性。读者若需进一步管理证书生命周期(查看、转换、导出公钥),可继续阅读 pages.ar/common/openssl-x509.md 与 pages.ar/common/openssl.md。

  • 文档
  • 教程
  • 知识库

【免费下载链接】tldr

Collaborative cheatsheets for console commands 📚.

项目地址:https://gitcode.com/GitHub_Trending/tl/tldr
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

返回列表