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

2024-09-25 00:24:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个HTTP触发的Python Azure函数。承载此功能的应用程序服务设置为Require客户端证书,并且仅使用HTTPS

Azure通过X-ARR-ClientCert头自动将每个HTTP请求中的客户端证书传递给函数代码

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

示例:

  • 使用Postman进行测试时,我通过Settings/Certificates上传.crt格式的证书
  • Postman将其编码为.der(二进制)文件,并将其传递给函数端点
  • Azure(负载平衡器?)接收请求并通过X-ARR-ClientCert头将证书转发给我的Python函数代码
    • Azure不会更改证书的原始形式(?)
    • 如果客户端使用Python而不是Postman来生成请求,并且他们通过网络发送了一个.pem文件(而不是.der文件),那么函数将收到一个.pem文件

如何确定证书文件类型,以便以编程方式从文件中解析属性(IssuerCommon Namenot_valid_before/after,等等?


Tags: 文件函数代码功能应用程序http客户端postman
1条回答
网友
1楼 · 发布于 2024-09-25 00:24:28

恐怕您无法使用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:错误:0906D06C:PEM例程:PEM_read_bio:无起始行:PEM_lib.c:647:应为:受信任证书 查看DER编码证书

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

相关问题 更多 >