То, что я пытаюсь сделать, это написать этот код, который будет извлекать сертификат с устройства и анализировать его. Этот код работает против некоторых устройств, но против других я получаю эту ошибку
PS C:\NetDevOps> & "C:/Program Files (x86)/Python38-32/python.exe" c:/NetDevOps/Cert/test6a.py
Traceback (most recent call last):
File "c:/NetDevOps/Cert/test6a.py", line 17, in <module>
pull = ssl.get_server_certificate((phoneip, 443))
File "C:\Program Files (x86)\Python38-32\lib\ssl.py", line 1484, in get_server_certificate
with context.wrap_socket(sock) as sslsock:
File "C:\Program Files (x86)\Python38-32\lib\ssl.py", line 500, in wrap_socket
return self.sslsocket_class._create(
File "C:\Program Files (x86)\Python38-32\lib\ssl.py", line 1040, in _create
self.do_handshake()
File "C:\Program Files (x86)\Python38-32\lib\ssl.py", line 1309, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: SSLV3_ALERT_BAD_RECORD_MAC] sslv3 alert bad record mac (_ssl.c:1108)
, и вот мой код:
import ssl
import OpenSSL.crypto
phonelist = ["10.129.157.30"]
for phoneip in phonelist:
pull = ssl.get_server_certificate((phoneip, 443))
x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, pull)
output = open(str('C:/NetDevOps/Cert/certs.txt'), 'a+')
output.write(str(phoneip) + ' Certificate' + '\n')
output.write('Issuer: ' + str(x509.get_issuer()) + '\n')
output.write('Serial Number (cert): ' + str(x509.get_serial_number()) + '\n')
output.write('Subject: ' + str(x509.get_subject()) + '\n')
output.write('Not Valid Before: ' + str(x509.get_notBefore()) + '\n')
output.write('Not Valid After: ' + str(x509.get_notAfter()) + '\n')
output.write('\n')
Я прочитал кучу SO статей о подобных для проверки сертификата не удается, однако приведенный выше код использует метод, описанный в качестве исправления этой проблемы. По сути, получение сертификата с использованием ssl.get_server_certificate, но затем анализ pem с помощью OpenSSL.crypto.load_certificate, но, увы, не повезло на устройствах с ошибками, даже если код работает с некоторыми устройствами.
Есть мысли?