如何验证 Microsoft 证书
How to verify a Microsoft certificate
这是证书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 从不知道从哪里下载了这个文件,您需要一些方法来验证它 的真实性。
您会注意到它也列出了颁发者,因此您可以递归地执行此过程以获得整个证书链,返回到您已经信任的根证书。通常,我们信任我们系统上 pre-installed 的证书。但是,理论上,攻击者可能已经破坏了该集合,因此人们有时确实会找到 out-of-band 方法来验证他们的根 CA 证书。什么适合您取决于您的应用程序。
您在前往信任锚的过程中下载的证书链是“中间”证书;您不必直接信任它们,因为您将验证从您系统上的锚点之一开始的链。
将 PEM-encoded 证书(包括页眉和页脚)串联在一个不受信任的证书文件中。在我的例子中,颁发“Microsoft IT TLS CA 2”中间证书的“Baltimore CyberTrust Root”证书是 pre-installed 作为我系统上的根 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
这是证书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 从不知道从哪里下载了这个文件,您需要一些方法来验证它 的真实性。
您会注意到它也列出了颁发者,因此您可以递归地执行此过程以获得整个证书链,返回到您已经信任的根证书。通常,我们信任我们系统上 pre-installed 的证书。但是,理论上,攻击者可能已经破坏了该集合,因此人们有时确实会找到 out-of-band 方法来验证他们的根 CA 证书。什么适合您取决于您的应用程序。
您在前往信任锚的过程中下载的证书链是“中间”证书;您不必直接信任它们,因为您将验证从您系统上的锚点之一开始的链。
将 PEM-encoded 证书(包括页眉和页脚)串联在一个不受信任的证书文件中。在我的例子中,颁发“Microsoft IT TLS CA 2”中间证书的“Baltimore CyberTrust Root”证书是 pre-installed 作为我系统上的根 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