如何使用 Python 确定客户端证书类型?

How to determine client certificate type using Python?

我有一个 HTTP-triggered Python Azure 函数。托管此功能的应用服务设置为 Require 客户端证书并且仅使用 HTTPS。

Azure 通过 X-ARR-ClientCert header.

自动将来自每个 HTTP 请求的客户端证书传递给函数代码

如何使用 Python 确定传入证书的类型(.der、.crt、.pem、.cer)?

示例:

如何确定证书文件类型,以便以编程方式从文件?

恐怕您无法使用python自动确定证书,但您可以手动确定并直接查看编码的证书。

首先,打开txt格式的证书文件,如果有----BEGIN CERTIFICATE----这样的起始行,则为PEM格式,否则采用 DER 格式。

然后,这里是一些common OpenSSL certificate manipulations:

查看 PEM 编码证书 使用具有证书扩展名的命令,将 cert.xxx 替换为证书名称

openssl x509 -in cert.pem -text -noout
openssl x509 -in cert.cer -text -noout
openssl x509 -in cert.crt -text -noout

如果出现以下错误,则表示您正在尝试查看 DER 编码证书,需要使用“查看下面的 DER 编码证书”中的命令

无法加载证书 12626:error:0906D06C:PEM routines:PEM_read_bio:no 开始 line:pem_lib.c:647: 期待:可信证书 查看 DER 编码证书

openssl x509 -in certificate.der -inform der -text -noout