You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于OpenSSL命令中|$的作用及公钥信息过滤逻辑的技术咨询

关于OpenSSL命令中|$的作用及公钥信息过滤逻辑的技术咨询

嘿,我来帮你拆解这个OpenSSL命令的过滤逻辑,搞清楚它是怎么精准抓出那些公钥相关内容的:

先拆分整条命令的各个环节

咱们把这条长命令拆成三段来看,每一段各司其职:

  1. 第一段:导出证书文本详情
    openssl x509 -in cacert.pem -noout -text
    这部分的作用是读取cacert.pem里的CA证书,只输出证书的可读文本详情(-noout参数是告诉OpenSSL别输出证书本身的二进制内容,只返回人类能看懂的文本信息)。

  2. 第二段:核心过滤逻辑(重点是|$)
    grep -Ei ".*public.*|$"
    这是过滤的关键,咱们拆解这个正则表达式:

    • -Ei:-E表示使用扩展正则语法,-i表示忽略大小写,所以不管是Public还是public都会被匹配到。
    • .*public.*:匹配任何包含“public”(大小写无关)的行,比如你示例里的Subject Public Key Info:、Public Key Algorithm: rsaEncryption、RSA Public-Key: (4096 bit)这些行都符合条件。
    • |$:这里的|是正则里的“或”逻辑,$匹配空行(也就是行首到行尾没有任何字符的行)。所以这部分的作用是同时保留所有包含public的行,以及所有空行。
      为什么要保留空行?因为证书的文本详情里,不同信息区块是用空行分隔的,保留空行能让过滤后的公钥区块更清晰,不会挤成一团难读。
  3. 第三段:优化阅读体验
    less -Rx
    -R是让less工具保留输出里的颜色(如果OpenSSL输出带颜色标记的话),-x是把制表符转换成空格,让排版更整齐,方便你滚动查看内容。

为什么能得到你展示的加粗内容?

你给出的示例里,Technical College, CN = Jim's Root CA这行因为不包含“public”,也不是空行,所以被grep过滤掉了;而那些和公钥相关的行(就是你加粗的部分)因为包含“public”被保留,同时公钥区块前后的空行也被保留,最终就得到了干净的公钥信息区块。

备注:内容来源于stack exchange,提问作者Johnny Garcia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 10:43:03