2017-06-12 7 views
0

私は基本的にカスタムのpythonスクリプトを書いてセキュリティ証明書データを解析し、その値をテーブルにロードしています。しかし、Pythonで私のために同じ作業をするライブラリがあるかどうかを知りたいと思います。私の考えは、それを行うカスタムスクリプトよりもデータを解析するためにlibを使うほうが良いでしょう。(または)このデータをテーブルに読み込むための他のよりよい方法がありますか?/データを解析してください。データ、セキュリティ証明書X509v3の拡張を解析する

スクリプトのロジック:データは文字列のようなYAMLのように見えるので、データをYAMLのような文字列にフォーマットしました。それから、CSVに変換してテーブルにロードするのは簡単でした。

データは以下の通りである証明書のフォーマット(ウィキから取られた例)

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はこれについて何かを教えていますが、ドキュメントは十分にはっきりしていません –

関連する問題