pyOpenSSL を使用して読み込んだ X.509 証明書のすべての拡張機能を取得できます。例えば:
>>> from OpenSSL import crypto as c
>>> cert = c.load_certificate(c.FILETYPE_PEM, file('server.pem').read())
>>> cert.get_extension_count()
4L
>>> ext = cert.get_extension(0)
>>> ext.get_short_name()
'basicConstraints'
>>> ext.get_data()
'0\x00'
>>>
データはそのままの形式で出力されます (おそらく特定の拡張子に応じて、ASN.1 の一部のエンコード)。
拡張機能を追加することもできます。
>>> newext = c.X509Extension('nsComment', 0, 'tacos are delicious')
>>> cert.add_extensions([newext])
>>> cert.get_extension_count()
5L
>>> cert.get_extension(4)
<X509Extension object at 0x7f74db7c2290>
>>> cert.get_extension(4).get_data()
'\x16\x13tacos are delicious'
>>>
ただし、わずかな非対称性に注意してください。拡張データは文字列である必要があり、ASN.1 を使用して自動的にエンコードされます。これにより、任意の非文字列拡張データを追加する可能性が排除されるようです。