Openssl 如何从其他证书中提取颁发者证书

Openssl 如何从其他证书中提取颁发者证书,openssl,Openssl,我有一张X.509格式的证书。使用openssl,我想将颁发者的证书提取到一个文件中,同样是X.509格式的文件(这样我就可以在我的web服务中列出颁发者的白名单) 我该怎么做?以下命令不起作用,它仅以文本形式打印发卡机构信息 opensslx509-in cert.x509-issuer-out issuer.x509 openssl x509-in cert.x509-text查找签名证书的URL curl(url)>signer.der将签名证书下载到一个文件中(在我的例子中是der格式)

我有一张X.509格式的证书。使用openssl,我想将颁发者的证书提取到一个文件中,同样是X.509格式的文件(这样我就可以在我的web服务中列出颁发者的白名单)

我该怎么做?以下命令不起作用,它仅以文本形式打印发卡机构信息

opensslx509-in cert.x509-issuer-out issuer.x509

  • openssl x509-in cert.x509-text
    查找签名证书的URL
  • curl(url)>signer.der
    将签名证书下载到一个文件中(在我的例子中是der格式)
  • openssl x509-通知der-in-signer.der-out signer.pem
    将签名证书转换为pem(X.509)格式
  • openssl x509-in signer.pem-text
    确认您的结果。如有必要,在证书链的整个过程中重复此过程

  • 可以接受的答案是正确的,但我可以进一步阐述

    证书通常有一个AIA字段,该字段提供可下载颁发者证书的URL,根据CA必须遵循的标准,它们通常也是DER格式

    对于1。在上面“查找签名证书的URL”的地方,可以运行
    issuer\u URL=$(openssl x509-noout-text-in$filename | grep“Authority Information Access”-A 3 | grep“CA Issuers”| head-1 | tr spaces | sed's/CA Issuers-URI://g'| sed's///g')

    该命令基本上在证书上运行openssl,并剪断证书中的CA Issuer-URI:链接(假设有),并将其放入Issuer\u url变量中。您可以将$filename替换为/path/to/your/pem/certificate。如果您的证书是DER格式,则需要在第一个openssl命令中包含
    -inform DER

    完成此操作后,可以使用wget获取它:
    wget$issuer\u url-O outputfile.crt

    这将获取颁发者文件。该文件通常采用DER格式,因此您可以从她那里获得该文件或将其转换为PEM:


    常见openssl命令上的openssl x509-inform DER-in outputfile.crt-out pem_outputfile.crt包含有关这些命令的更多详细信息。如果内部没有颁发者证书URL怎么办?例如,来自的所有中间证书都由根证书签名,但它们的证书颁发机构信息访问扩展不包含CA颁发者的证书URI。我认为您应该就此提出一个新问题。浏览器一定是不知怎么做的。也许浏览器可以从其根证书列表中识别根级别签名证书的指纹,而无需通过url检索。