2010/04/23

gnutls python

悪ノリも大概にしなさいという気がしないでもないですが
どうせならと思って gnutls も使ってみようと
Python であれば python-gnutls というのがあります
easy_install でも pip でも使えば入ってしまいます

example とかも揃っているので良く分かってなくても使えてしまいましたが
from gnutls import crypto

x509 = crypto.X509Certificate(open("google.crt").read())

print "version: %d" % x509.version
print "serial number: %s" % x509.serial_number
print "issuer: %s" % x509.issuer.title()
print "not before: %s" % time.ctime(x509.activation_time)
print "not after: %s" % time.ctime(x509.expiration_time)
print "subject: %s" % x509.subject.title()
とか
import socket
import time

from gnutls import connection

cred = connection.X509Credentials()

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
session = connection.ClientSession(sock, cred)

session.connect(('www.google.com', 443))
session.handshake()
x509 = session.peer_certificate
session.bye()
session.close()

print "version: %d" % x509.version
print "serial number: %s" % x509.serial_number
print "issuer: %s" % x509.issuer.title()
print "not before: %s" % time.ctime(x509.activation_time)
print "not after: %s" % time.ctime(x509.expiration_time)
print "subject: %s" % x509.subject.title()
とかすると
version: 3
serial number: 205024093581220934167709006090448199471
issuer: C=Za,O=Thawte Consulting (Pty) Ltd.,Cn=Thawte Sgc Ca
not before: Fri Dec 18 09:00:00 2009
not after: Mon Dec 19 08:59:59 2011
subject: C=Us,St=California,L=Mountain View,O=Google Inc,Cn=Www.Google.Com
こんなのが出ました

gnutls.constants.X509_FMT_DER とかあるので DER も読めたり
gnutls.library.functions ってのがあるんでガリガリ書いたり
できるのかな? 試していません

とりあえず証明書は読めました

0 件のコメント:

コメントを投稿