我的 Python Web 应用程序从 Web 服务器接收客户端的专有名称(取自客户端的证书)格式(可能是 X509 标准格式?):
/C=BR/ST=Minas Gerais/O=Internet Widgits Pty Ltd/CN=www.test.com
这是某种标准吗?我可以(安全地)用 pyOpenSSL 解析这个字符串并从中构建一个 X509Name 吗?或者也许是其他图书馆?我只是对CN感兴趣...
似乎 python-ldap 可以使用 dn 模块(DN = Distinguished Name)解析这些类型的字符串:
>>> ldap.dn.str2dn('cn=Michael Str\xc3\xb6der,dc=stroeder,dc=com',flags=ldap.DN_FORMAT_LDAPV3)
[[('cn', 'Michael Str\xc3\xb6der', 4)], [('dc', 'stroeder', 1)], [('dc', 'com', 1)]]
确实这是一个标准。该符号在RFC 4514中定义。您可以根据 RFC 对其进行解析,提取 CN 部分然后使用其值。不幸的是,我不能告诉你关于这个的 python 库。