2017-06-12 54 views
0

我已經基本上編寫了一個自定義的python腳本來解析安全證書數據並將值加載到表中。但是我想知道python中是否有任何庫爲我完成了相同的工作。我的想法是使用lib解析數據比使用自定義腳本更好(或者)有沒有其他更好的方法可以將此數據加載到表中/解析數據解析數據,安全證書X509v3擴展

我的腳本的邏輯:由於數據看起來更像是一個類似YAML的字符串,因此我將數據格式化爲類似YAML的字符串。然後,我很容易轉換成CSV並加載到表格中。 CERT的數據

格式如下(從維基採取的示例)

Certificate: 
Data: 
    Version: 3 (0x2) 
    Serial Number: 
     10:e6:fc:62:b7:41:8a:d5:00:5e:45:b6 
Signature Algorithm: sha256WithRSAEncryption 
    Issuer: C=BE, O=GlobalSign nv-sa, CN=GlobalSign Organization Validation CA - SHA256 - G2 
    Validity 
     Not Before: Nov 21 08:00:00 2016 GMT 
     Not After : Nov 22 07:59:59 2017 GMT 
    Subject: C=US, ST=California, L=San Francisco, O=Wikimedia Foundation, Inc., CN=*.wikipedia.org 
    Subject Public Key Info: 
     Public Key Algorithm: id-ecPublicKey 
      Public-Key: (256 bit) 
      pub: 
       04:c9:22:69:31:8a:d6:6c:ea:da:c3:7f:2c:ac:a5: 
       af:c0:02:ea:81:cb:65:b9:fd:0c:6d:46:5b:c9:1e: 
       ed:b2:ac:2a:1b:4a:ec:80:7b:e7:1a:51:e0:df:f7: 
       c7:4a:20:7b:91:4b:20:07:21:ce:cf:68:65:8c:c6: 
       9d:3b:ef:d5:c1 
      ASN1 OID: prime256v1 
      NIST CURVE: P-256 
    X509v3 extensions: 
     X509v3 Key Usage: critical 
      Digital Signature, Key Agreement 
     Authority Information Access: 
      CA Issuers - URI:http://secure.globalsign.com/cacert/gsorganizationvalsha2g2r1.crt 
      OCSP - URI:http://ocsp2.globalsign.com/gsorganizationvalsha2g2 

     X509v3 Certificate Policies: 
      Policy: 1.3.6.1.4.1.4146.1.20 
       CPS: https://www.globalsign.com/repository/ 
      Policy: 2.23.140.1.2.2 

回答

0

是的,它看起來像一個YAML文件,但嚴重縮進給出。您需要重新縮進它。

您可以使用pyyaml庫來解析它。下面是一個示例:

import yaml 

content = """\ 
Certificate: 
    Data: 
     Version: 3 (0x2) 
     Serial Number: 10:e6:fc:62:b7:41:8a:d5:00:5e:45:b6 
Signature Algorithm: sha256WithRSAEncryption 
Issuer: C=BE, O=GlobalSign nv-sa, CN=GlobalSign Organization Validation CA - SHA256 - G2 
Validity: 
    Not Before: Nov 21 08:00:00 2016 GMT 
    Not After : Nov 22 07:59:59 2017 GMT 
""" 

obj = yaml.load(content) 

你得到:

{'Certificate': {'Data': {'Serial Number': '10:e6:fc:62:b7:41:8a:d5:00:5e:45:b6', 
          'Version': '3 (0x2)'}}, 
'Issuer': 'C=BE, O=GlobalSign nv-sa, CN=GlobalSign Organization Validation CA ' 
      '- SHA256 - G2', 
'Signature Algorithm': 'sha256WithRSAEncryption', 
'Validity': {'Not After': 'Nov 22 07:59:59 2017 GMT', 
       'Not Before': 'Nov 21 08:00:00 2016 GMT'}} 

您可以使用online YAML parser檢查數據。

+0

是的,這是我目前的解決方案。但我正在尋找一些圖書館來爲我做這項工作。由於數據可能具有可變列(某些列可能會或可能不會出現在某些證書中,因此我正在尋找更靈活的方法來執行此操作)例如https://stackoverflow.com/questions/143632/crypto-x509- certificate-parsing-libraries-for-python講述了一些關於這方面的內容,但是文檔還不夠清楚 –