英文:
why the issuer name is reversed when i get it using python?
问题
I have a certificate and when I use Python to get the issuer name of the certificate, I get the issuer name reversed:
The correct issuer name: CN=PEZEINVOICESCA2-CA,DC=extgazt,DC=gov,DC=local
The issuer name that I get: DC=local,DC=gov,DC=extgazt,CN=PEZEINVOICESCA2-CA
This is the code that I use to get the issuer name:
import cryptography.x509
your_Certificate = open("cert.txt","rb")
Certificate = your_Certificate.read().decode()
your_Certificate.close()
the_certificate = cryptography.x509.load_pem_x509_certificate("-----BEGIN CERTIFICATE-----\n{}\n-----END CERTIFICATE-----".format(Certificate).encode())
issuer_name = (str(the_certificate.issuer).split("(")[-1].split(")")[0])
print(issuer_name)
And this is the website that I get the correct issuer name from: https://certlogik.com/
This is my certificate:
MIIFGTCCBMCgAwIBAgITbQAABwotIOM7hEGkOwAAAAAHCjAKBggqhkjOPQQDAjBiMRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxEzARBgoJkiaJk/IsZAEZFgNnb3YxFzAVBgoJkiaJk/IsZAEZFgdleHRnYXp0MRswGQYDVQQDExJQRVpFSU5WT0lDRVNDQTItQ0EwHhcNMjMwNTIxMDkxMjE3WhcNMjMwODA4MTIyNjQ2WjBZMQswCQYDVQQGEwJTQTEhMB8GA1UEChMYTW9oYW1tZWQgYWxtYWxraSBjb21wYW55MREwDwYDVQQLEwhtb2hhbW1lZDEUMBIGA1UEAxMLZGV2aWNlIG11c2EwVjAQBgcqhkjOPQIBBgUrgQQACgNCAAStYLyBf9nWo3vWtzUkM2itMt/8euVz4Kao8fqz8SqUKl46RzqyhUUjR4gij3HvA6gBbHT1ai2O5JaAeaj1/4G3o4IDXzCCA1swJwYJKwYBBAGCNxUKBBowGDAKBggrBgEFBQcDAjAKBggrBgEFBQcDAzA8BgkrBgEEAYI3FQcELzAtBiUrBgEEAYI3FQiBhqgdhND7EobtnSSHzvsZ08BVZoGc2C2D5cVdAgFkAgETMIHNBggrBgEFBQcBAQSBwDCBvTCBugYIKwYBBQUHMAKGga1sZGFwOi8vL0NOPVBFWkVJTlZPSUNFU0NBMi1DQSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1leHRnYXp0LERDPWdvdixEQz1sb2NhbD9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlvbkF1dGhvcml0eTAdBgNVHQ4EFgQUDQdY1rouelOIOWWyJ8ByNGfyKeQwDgYDVR0PAQH/BAQDAgeAMIHOBgNVHREEgcYwgcOkgcAwgb0xVTBTBgNVBAQMTDEta2FyYWZldGFfcHJncmFtfDItdGhlX2RldmljZV9uYW1lX2lzX2RldmljZSBtdXNhfDMtdGhlX2RldmljZV9udW1iZXJfaXNfNTAxHzAdBgoJkiaJk/IsZAEBDA8zMTExOTAyOTM3MDAwMDMxDTALBgNVBAwMBDExMDAxDjAMBgNVBBoMBWphemFuMSQwIgYDVQQPDBt0ZWNobm9sb2d5IGFuZCBjb25zdWx0YXRpb24wgeEGA1UdHwSB2TCB1jCB06CB0KCBzYaBymxkYXA6Ly8vQ049UEVaRUlOVk9JQ0VTQ0EyLUNBLENOPVBFWkVpbnZvaWNlc2NhMixDTj1DRFAsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1leHRnYXp0LERDPWdvdixEQz1sb2NhbD9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0P2Jhc2U/b2JqZWN0Q2xhc3M9Y1JMRGlzdHJpYnV0aW9uUG9pbnQwHwYDVR0jBBgwFoAUh6XbAr13zUdvaQF7eC0a9e7HwFEwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMDMAoGCCqGSM49BAMCA0cAMEQCIHu3KKPhtrWF86EyD1p5GZ0fDzrRIrAVQpO0S4HYZEyfAiArNL/YVPyE+QdNH5AF4CGqIA+wpBYe9vVngMdGlvOwJA==
I know that I can write it reversed again, but I want it to come out correctly from Python itself.
英文:
i have a certificate and when i use python to get the issuer name of the certificate i get the issuer name reversed :
the correct issuer name : CN=PEZEINVOICESCA2-CA,DC=extgazt,DC=gov,DC=local
the issuer name that i get : DC=local,DC=gov,DC=extgazt,CN=PEZEINVOICESCA2-CA
this is the code that i use to get the issuer name :
import cryptography.x509
your_Certificate = open("cert.txt","rb")
Certificate = your_Certificate.read().decode()
your_Certificate.close()
the_certificate = cryptography.x509.load_pem_x509_certificate("-----BEGIN CERTIFICATE-----\n{}\n-----END CERTIFICATE-----".format(Certificate).encode())
issuer_name = (str(the_certificate.issuer).split("(")[-1].split(")")[0])
print(issuer_name)
and this is the website that i get the correct issuer name from : https://certlogik.com/
this is my certificate :
> MIIFGTCCBMCgAwIBAgITbQAABwotIOM7hEGkOwAAAAAHCjAKBggqhkjOPQQDAjBiMRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxEzARBgoJkiaJk/IsZAEZFgNnb3YxFzAVBgoJkiaJk/IsZAEZFgdleHRnYXp0MRswGQYDVQQDExJQRVpFSU5WT0lDRVNDQTItQ0EwHhcNMjMwNTIxMDkxMjE3WhcNMjMwODA4MTIyNjQ2WjBZMQswCQYDVQQGEwJTQTEhMB8GA1UEChMYTW9oYW1tZWQgYWxtYWxraSBjb21wYW55MREwDwYDVQQLEwhtb2hhbW1lZDEUMBIGA1UEAxMLZGV2aWNlIG11c2EwVjAQBgcqhkjOPQIBBgUrgQQACgNCAAStYLyBf9nWo3vWtzUkM2itMt/8euVz4Kao8fqz8SqUKl46RzqyhUUjR4gij3HvA6gBbHT1ai2O5JaAeaj1/4G3o4IDXzCCA1swJwYJKwYBBAGCNxUKBBowGDAKBggrBgEFBQcDAjAKBggrBgEFBQcDAzA8BgkrBgEEAYI3FQcELzAtBiUrBgEEAYI3FQiBhqgdhND7EobtnSSHzvsZ08BVZoGc2C2D5cVdAgFkAgETMIHNBggrBgEFBQcBAQSBwDCBvTCBugYIKwYBBQUHMAKGga1sZGFwOi8vL0NOPVBFWkVJTlZPSUNFU0NBMi1DQSxDTj1BSUEsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1leHRnYXp0LERDPWdvdixEQz1sb2NhbD9jQUNlcnRpZmljYXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlvbkF1dGhvcml0eTAdBgNVHQ4EFgQUDQdY1rouelOIOWWyJ8ByNGfyKeQwDgYDVR0PAQH/BAQDAgeAMIHOBgNVHREEgcYwgcOkgcAwgb0xVTBTBgNVBAQMTDEta2FyYWZldGFfcHJncmFtfDItdGhlX2RldmljZV9uYW1lX2lzX2RldmljZSBtdXNhfDMtdGhlX2RldmljZV9udW1iZXJfaXNfNTAxHzAdBgoJkiaJk/IsZAEBDA8zMTExOTAyOTM3MDAwMDMxDTALBgNVBAwMBDExMDAxDjAMBgNVBBoMBWphemFuMSQwIgYDVQQPDBt0ZWNobm9sb2d5IGFuZCBjb25zdWx0YXRpb24wgeEGA1UdHwSB2TCB1jCB06CB0KCBzYaBymxkYXA6Ly8vQ049UEVaRUlOVk9JQ0VTQ0EyLUNBLENOPVBFWkVpbnZvaWNlc2NhMixDTj1DRFAsQ049UHVibGljJTIwS2V5JTIwU2VydmljZXMsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1leHRnYXp0LERDPWdvdixEQz1sb2NhbD9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0P2Jhc2U/b2JqZWN0Q2xhc3M9Y1JMRGlzdHJpYnV0aW9uUG9pbnQwHwYDVR0jBBgwFoAUh6XbAr13zUdvaQF7eC0a9e7HwFEwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMDMAoGCCqGSM49BAMCA0cAMEQCIHu3KKPhtrWF86EyD1p5GZ0fDzrRIrAVQpO0S4HYZEyfAiArNL/YVPyE+QdNH5AF4CGqIA+wpBYe9vVngMdGlvOwJA==
i know that i can write it reversed agin but i want it comes correct from python itself.
答案1
得分: 2
你可以使用rfc4514_string()
来获得所需的顺序,它根据RFC 4514,sec. 2.1(逆序,逗号分隔)返回数据:
print(the_certificate.issuer.rfc4514_string())
得到的结果是:
CN=PEZEINVOICESCA2-CA,DC=extgazt,DC=gov,DC=local
英文:
You get the desired order with rfc4514_string()
, which returns the data according to RFC 4514, sec. 2.1 (reverse order, comma separated):
print(the_certificate.issuer.rfc4514_string())
gives
CN=PEZEINVOICESCA2-CA,DC=extgazt,DC=gov,DC=local
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论