如何使用 pyca/cryptography 访问 CSR challengePassword?

How does one access CSR challengePassword with pyca/cryptography?

我已经通过 openssl cli 创建了一个带有 challengePassword 属性 (oid 1.2.840.113549.1.9.7) 的 CSR:

openssl req  -nodes -new -newkey rsa:4096 -out www.example.com.csr -keyout www.example.com.key

我通过

验证challengePassword是否存在
openssl req -noout -text -in www.example.com.csr

当我用cryptography.x509.load_pem_x509_csr()读入时,我找不到'Attributes'或这个特定oid的记录,例如

   csr = x509.load_pem_x509_csr(csr_data, default_backend())
   print(csr.subject) # Lists expected subject info; countryName, etc.
   CHALLENGE_OID = "1.2.840.113549.1.9.7"
   challenge_att = x509.oid.ObjectIdentifier(CHALLENGE_OID)
   challenge = csr.subject.get_attributes_for_oid(challenge_att) # challenge is []

这个属性在结果对象的任何地方都可见吗? pyca/cryptography docs 没有帮助我。

质询密码是编码到 CSR 中的一个属性。不幸的是,pyca/cryptography 目前不支持任意属性。目前 GitHub 上有一个 open issue,但还没有人实现它。