- 文档
- 教程
- 知识库
【免费下载链接】tldr
Collaborative cheatsheets for console commands 📚.
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 申请流程通常分为三步,其中前两步会用到本文的命令:
- 生成私钥:先使用 pages/common/openssl.md 中的
openssl genpkey -algorithm rsa -out private.key -aes256生成 RSA(或 EC)私钥。如果尚未有私钥,req -new也可以结合-newkey现场生成(见下一节)。 - 生成 CSR:执行上面的
req -new -sha256 -key命令。交互模式下 OpenSSL 会依次询问国家(C)、省份、城市、组织名、通用名(CN)等 DN(Distinguished Name)字段,也可以后续直接用-subj免交互指定。 - 提交给 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 📚.
相关推荐
free-domains性能优化:提升DNS配置部署速度的7个技巧
free domains性能优化:提升DNS配置部署速度的7个技巧 在当今快速发展的互联网环境中,DNS配置管理对于网站性能和可用性至关重要。free doma
curl证书管理:自签名证书、CA证书、客户端证书
curl证书管理:自签名证书、CA证书、客户端证书 你是否曾经在使用curl进行HTTPS请求时遇到过证书验证错误?是否对如何正确处理自签名证书、CA证书和客户
CLI网络通信HTTP Prompt中的证书管理:处理HTTPS自签名证书
HTTP Prompt中的证书管理:处理HTTPS自签名证书 在API测试过程中,你是否经常遇到"SSL证书验证失败"的错误?特别是在内部系统或开发环境中使用自
开发工具接口测试
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考