python自动openssl ch

2024-10-01 04:47:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用我的脚本检查来自不同web服务的多个SSL证书。每个服务的url都应该从一个文件中读取。如果我在get_server_certificate函数中使用adr,它会工作,但是如果我想使用list_adr,它会产生下面的错误。
我的代码:

import OpenSSL
import ssl

class certcheck_test:
#adr = ('www.google.com', 443)
    while 1:
        f = open("C:/tmp/test.txt", "r")
        list_adr = f.readline()
        f.close()
        print list_adr
        cnt = 0
        cert = ssl.get_server_certificate(list_adr)
        x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert)
        data = x509.get_notAfter()

那个测试.txt文件:

('www.google.com',443)
('www.google.com',443)
('www.google.com',443)

错误:

  File "####/PycharmProjects/Zertifikat/certcheck_test.py", line 4, in <module>
    class certcheck_test:
  File "####/certcheck_test.py", line 12, in certcheck_test
    cert = ssl.get_server_certificate(list_adr)
  File "####\Python27\Lib\ssl.py", line 1008, in get_server_certificate
    host, port = addr
ValueError: too many values to unpack

Tags: pytestcomsslgetcertserverwww
1条回答
网友
1楼 · 发布于 2024-10-01 04:47:06
  1. 逐行读取文件。你知道吗
  2. 从行中提取服务器和端口名
  3. 对于每个服务器和端口,运行所需的命令

with open("C:/tmp/test.txt", "r") as f:
    for line in f:
        server = line.split("'")[1]
        port = line.split(",")[1].split(")")[0]
        list_adr=(server, port)
        cert = ssl.get_server_certificate(list_adr)
        x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert)
        data = x509.get_notAfter()

相关问题 更多 >