Python新手在这里!正如标题所暗示的那样,我正在寻找一种从序列号中撤销CA证书的方法。
我想通过使用pyopenssl的库(OpenSSL.crypto)来实现这一目标。使用此库可以使加载证书成为梦想。但是撤销它们完全不同。
以下是我的尝试:
import OpenSSL.crypto as crypto
def revoke_certificate(self, serial):
crl = crypto.CRL()
try:
if not serial == self.get_ca_certificate().get_serial()
filename = self.get_certificate_filename(serial)
with open(filename, "r") as certificate_file:
certificate_text = certificate_file.read()
certificate = cr.load_certificate(crypto.FILETYPE_PEM, certificate_text)
# Note: the certificate is type X509, so it gets properly loaded
# So... this is not going to work
crl.set_revoked(certificate)
# irrelevant lines of code
# ...
except CustomError, e:
# irrelevant logging lines of code
# ...
revoked = crl.get_revoked()
# obviously, revoked is going to be None
revoked.set_serial(serial)
now = self.get_current_time()
revoked.set_rev_date(now)
# the rest is also irrelevant
# ...
# ...
对于那些想知道的人,序列号确实是一个整数,而不是None
对象。
我取消了不相关的代码行(与撤销无关)。
我很清楚,revoked = crl.get_revoked()
会使revoked
成为None
个对象。
关于如何set_revoked
OpenSSL.crypto.Revoked
对象的任何想法?是否可以从certificate
(来自with
块)执行此操作?由于此certificate
对象是OpenSSL.crypto.X509
对象,因此不能将类型转换作为OpenSSL.crypto.Revoked
对象。
谢谢你的帮助