代码之家  ›  专栏  ›  技术社区  ›  Seki

从csr检索发出的证书

  •  0
  • Seki  · 技术社区  · 6 年前

    在证书颁发机构的上下文中,我正在尝试从ca检索有效的实时证书(如果有的话) index.txt 以便在将其从初始CSR更新之前将其撤销。

    在我的 索引文件 我要找的是

    V       200605120159Z           D486D9E32C4DE4BA        unknown /C=LU/ST=Luxembourg/L=Luxembourg/O=My Org/OU=My Unit/CN=myhost.fqdn/emailAddress=ca@initech.com
    

    我可以在CSR中找到这个主题

    openssl req -noout -subject -in sub/csr/myhost.csr.pem
    

    得到

    subject=C = LU, ST = Luxembourg, L = Luxembourg, O = My Org, OU = My Unit, emailAddress = ca@initech.com, CN = myhost.fqdn
    

    我可以用 sed

    openssl req -noout -subject -in sub/csr/myhost.csr.pem \
    | sed -e 's/subject=/\//' -e 's/ = /=/g' -e 's/, /\//g'
    

    但是结果

    /C=LU/ST=Luxembourg/L=Luxembourg/O=My Org/OU=My Unit/emailAddress=ca@initech.com/CN=myhost.fqdn
    

    与中的行不匹配 索引文件 因为字段的顺序不同。

    有没有可能有一个证书的主题和一个企业社会责任在一个可比的方式?

    1 回复  |  直到 6 年前
        1
  •  1
  •   oliv    6 年前

    如果要修复csr中字段的顺序,可以尝试使用 awk :

    openssl req -noout -subject -in sub/csr/myhost.csr.pem  | awk -F', ' -v OFS='/' '{sub(/^subject=/,"");gsub(" = ","=");print $1,$2,$4,$5,$7,$6}'
    

    -F', ' 设置输入字段分隔符和 -v OFS='/' 设置输出字段分隔符。

    第一 sub 命令删除 subject= 字符串和第二个命令 gsub 挤压周围的空间 = 性格。

    然后打印行。注意第6和第7个字段的反转。


    但最好根据openssl配置文件确定主题字段的顺序 openssl.cnf (通常位于 /etc/ssl /usr/ssl [ req_distinguished_name ] 部分。