def connectionMade(self): if self._certificate is None: with suppress(AttributeError): self._certificate = ssl.Certificate(self.transport._producer.getPeerCertificate()) if self._ip_address is None: self._ip_address = ipaddress.ip_address(self.transport._producer.getPeer().host)
def handshakeCompleted(self): values = [] cert = ssl.Certificate(self.transport.getPeerCertificate()) if cert is not None: cert = x509.load_pem_x509_certificate( cert.dumpPEM(), default_backend() ) values.append(("sha1", cert.fingerprint(hashes.SHA1()).hex())) subject = _cert_dict(list(cert.subject)) issuer = _cert_dict(list(cert.issuer)) extensions = _cert_dict(list(cert.extensions)) for match_key, oid in CERT_KEYS: if oid in subject: values.append((f's{match_key}', subject[oid])) if oid in issuer: values.append((f'i{match_key}', issuer[oid])) sans = extensions.get(ExtensionOID.SUBJECT_ALTERNATIVE_NAME, []) for san in sans: values.append(("san", san.value)) for pattern, description in self.bad: for k, v in values: key = f'{k}:{v}' if pattern.fullmatch(key): d = self.deferred self.deferred = None d.callback(f"{description} ({key})") break self.transport.loseConnection()
def dataReceived(self, data): certificate = ssl.Certificate(self.transport.getPeerCertificate()) print("OK:", certificate) self.transport.abortConnection()
def dataReceived(self, data): certificate = ssl.Certificate(self.transport.getPeerCertificate()) print(certificate) self.transport.loseConnection()
def connectionMade(self): if self._certificate is None: with suppress(AttributeError): self._certificate = ssl.Certificate( self.transport._producer.getPeerCertificate())