如何验证Microsoft证书



这是证书https://gist.github.com/larytet/2fb447e875831577584592cd99980fd1(x5t VjWIUjS5JS3eAFdm2dnydlZfY-I(

我在做

openssl verify -verbose -x509_strict certificate.pen

我得到

CN = estsclient.coreauth.outlook.com
error 20 at 0 depth lookup: unable to get local issuer certificate
error certificate.pem: verification failed

我在哪里可以找到应该安装在我的系统中的证书、整个链或根?

您需要提供CA证书,大多数真实的CA会在其颁发的每个证书的扩展中列出其证书所在的位置。

使用OpenSSL,您可以查看以下扩展:

openssl x509 -text -noout < certificate.pem

寻找";权威信息访问扩展";,并且其";CA发行人";字段以查找URL并从Microsoft下载证书。

由于此文件是用DER编码的,因此需要将其转码为PEM,以便与openssl verify:一起使用

openssl x509 -inform der < Microsoft IT TLS CA 2.crt > Microsoft IT TLS CA 2.pem

因为您刚刚通过HTTP从不知从何处下载了此文件,所以您需要一些方法来验证的真实性。

你会注意到它也列出了一个颁发者,所以你可以递归地执行这个过程,将整个证书链获取回你已经信任的根证书。通常,我们信任预先安装在系统上的证书。但是,理论上,攻击者可能已经破坏了该集,因此人们有时确实会找到带外方法来验证他们的根CA证书。什么适合你取决于你的申请。

你在去信任锚点的路上下载的证书链是";中间体";证书;您不必直接信任它们,因为您将从系统上的一个锚点开始验证链。

将PEM编码的证书(包括页眉和页脚(连接在一个不受信任的证书文件中。在我的情况下;Baltimore CyberTrust Root";颁发";Microsoft IT TLS CA 2";中间证书是作为根CA预先安装在我的系统上的,所以我只需要下载Microsoft证书,它是我的文件"中唯一的证书;不可信";证书。

现在你有了必要的信息来尝试你原来的命令:

openssl verify --verbose -untrusted Microsoft IT TLS CA 2.pem  -x509_strict certificate.pem

如果有人发现这个问题,我最终会得到这样的东西+很多评论

RUN curl --silent https://outlook.com/autodiscover/metadata/json/1 > ./outlook.com.autodiscover.metadata.json.1
RUN pem_file=certificate.pem 
    && echo "-----BEGIN CERTIFICATE-----" > $pem_file 
    && cat ./outlook.com.autodiscover.metadata.json.1 | jq --raw-output '.keys[0].keyvalue.value' >> $pem_file 
    && echo "-----END CERTIFICATE-----" >> $pem_file 
    && cat $pem_file 
    && openssl x509 -text -noout  < $pem_file | grep "CA Issuers" 
    && curl https://cacerts.digicert.com/BaltimoreCyberTrustRoot.crt.pem > rootCA.pem  
    && curl http://www.microsoft.com/pki/mscorp/Microsoft%20IT%20TLS%20CA%202.crt | openssl x509 -inform der >> rootCA.pem 
    && curl https://cacerts.digicert.com/DigiCertCloudServicesCA-1.crt | openssl x509 -inform der >> rootCA.pem 
    && cat rootCA.pem 
    && cat certificate.pem
RUN pem_file=certificate.pem && openssl verify -verbose -x509_strict -untrusted rootCA.pem $pem_file

最新更新