示例#1
0
    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)
示例#2
0
    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()
示例#3
0
 def dataReceived(self, data):
     certificate = ssl.Certificate(self.transport.getPeerCertificate())
     print("OK:", certificate)
     self.transport.abortConnection()
示例#4
0
 def dataReceived(self, data):
     certificate = ssl.Certificate(self.transport.getPeerCertificate())
     print(certificate)
     self.transport.loseConnection()
示例#5
0
 def connectionMade(self):
     if self._certificate is None:
         with suppress(AttributeError):
             self._certificate = ssl.Certificate(
                 self.transport._producer.getPeerCertificate())