我不确定如何准确表达这一点,但我有一个脚本可以从 Web 服务器下载 SSL 证书以检查其到期日期。
为此,我需要下载 CA 证书。目前,我将它们写入/tmp 目录中的一个临时文件,稍后再读回,但我确信必须有一种方法可以在不写入磁盘的情况下执行此操作。
这是下载证书的部分
CA_FILE = '/tmp/ca_certs.txt'
root_cert = urllib.urlopen('https://www.cacert.org/certs/root.txt')
class3_cert = urllib.urlopen('https://www.cacert.org/certs/class3.txt')
temp_file = open(CA_FILE, 'w')
temp_file.write(root_cert.read())
temp_file.write(class3_cert.read())
temp_file.close()
编辑
这里是使用文件获取证书的部分
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ssl_sock = ssl.wrap_socket(s, ca_certs=CA_FILE, cert_reqs=ssl.CERT_REQUIRED)
ssl_sock.connect(('mail.google.com', 443))
date = ssl_sock.getpeercert()['notAfter']
请您参考如下方法:
urllib 的响应是一个文件对象。只需在您使用实际文件的任何地方使用它们即可。这是假设使用文件对象的代码当然不需要写入它们。
