在Python的所有OpenSSL封装里,这个库是最好用最完全的。
其中的 M2Crypto.X509
则是对X509的一个封装,下面就来看看如何使用M2Crypto操作X509证书。
关于M2Crypto,完整的API可以看这里:http://www.heikkitoivonen.net/m2crypto/api/
一般来说,产生一张X509证书的过程如下:
- 申请者生成非对称加密算法的密钥,如RSA,DSA还有最新流行的ECC等。
- 申请者生成电子证书请求文件(X509_Request)。其中包含申请者的身份信息、公钥,并且用自己的私钥签名。
- CA读取电子证书请求文件。核查身份信息是否正确。如果身份信息正确就对电子证书进行签名。其中包含CA的身份信息、申请者的身份信息、申请者的公钥、电子证书的起始有效时间,电子证书的结束有效时间。通常还会记录这是CA所颁发的第几个证书。
产生私钥
可以使用OpenSSL命令产生私钥或者使用M2Crypto来产生:
其中的 2048
指的是密钥位数,65537是生成因子,据OpenSSL的文档说,这个函数通常是三个奇数 3
, 17
, 65537
之一,而在使用OpenSSL命令生成私钥的时候,可以看出往往使用的是65537。
生成证书请求
可以使用OpenSSL来生成证书请求或者使用M2Crypto来生成
CA签发证书
关于如何产生一个CA
接下来我们就可以看到一张由我们的CA签发的证书了。