コード例 #1
0
 def test_resolve_cert_reqs(self):
     self.assertEqual(resolve_cert_reqs(None), ssl.CERT_NONE)
     self.assertEqual(resolve_cert_reqs(ssl.CERT_NONE), ssl.CERT_NONE)
     self.assertEqual(resolve_cert_reqs(ssl.CERT_REQUIRED),
                      ssl.CERT_REQUIRED)
     self.assertEqual(resolve_cert_reqs('REQUIRED'), ssl.CERT_REQUIRED)
     self.assertEqual(resolve_cert_reqs('CERT_REQUIRED'), ssl.CERT_REQUIRED)
コード例 #2
0
ファイル: test_util.py プロジェクト: JasonRepo/urllib3
    def test_resolve_cert_reqs(self):
        self.assertEqual(resolve_cert_reqs(None), ssl.CERT_NONE)
        self.assertEqual(resolve_cert_reqs(ssl.CERT_NONE), ssl.CERT_NONE)

        self.assertEqual(resolve_cert_reqs(ssl.CERT_REQUIRED), ssl.CERT_REQUIRED)
        self.assertEqual(resolve_cert_reqs('REQUIRED'), ssl.CERT_REQUIRED)
        self.assertEqual(resolve_cert_reqs('CERT_REQUIRED'), ssl.CERT_REQUIRED)
コード例 #3
0
    def connect(self):
        # Add certificate verification
        conn = self._new_conn()

        resolved_cert_reqs = ssl_.resolve_cert_reqs(self.cert_reqs)
        resolved_ssl_version = ssl_.resolve_ssl_version(self.ssl_version)

        hostname = self.host
        if getattr(self, '_tunnel_host', None):
            # _tunnel_host was added in Python 2.6.3
            # (See:
            # http://hg.python.org/cpython/rev/0f57b30a152f)
            #
            # However this check is still necessary in 2.7.x

            self.sock = conn
            # Calls self._set_hostport(), so self.host is
            # self._tunnel_host below.
            self._tunnel()
            # Mark this connection as not reusable
            self.auto_open = 0

            # Override the host with the one we're requesting data from.
            hostname = self._tunnel_host

        # Wrap socket using verification with the root certs in trusted_root_certs
        self.sock = ssl_.ssl_wrap_socket(
            conn,
            self.key_file,
            self.cert_file,
            cert_reqs=resolved_cert_reqs,
            ca_certs=self.ca_certs,
            server_hostname=hostname,
            ssl_version=resolved_ssl_version,
            ciphers=self.ciphers,
        )

        if self.assert_fingerprint:
            ssl_.assert_fingerprint(self.sock.getpeercert(binary_form=True),
                                    self.assert_fingerprint)
        elif resolved_cert_reqs != ssl.CERT_NONE and self.assert_hostname is not False:
            cert = self.sock.getpeercert()
            if not cert.get('subjectAltName', ()):
                warnings.warn(
                    ('Certificate has no `subjectAltName`, falling back to check for a `commonName` for now. '
                     'This feature is being removed by major browsers and deprecated by RFC 2818. '
                     '(See https://github.com/shazow/urllib3/issues/497 for details.)'
                     ),
                    SecurityWarning,
                )
            match_hostname(cert, self.assert_hostname or hostname)

        self.is_verified = resolved_cert_reqs == ssl.CERT_REQUIRED or self.assert_fingerprint is not None
コード例 #4
0
ファイル: custom_http.py プロジェクト: chengboliber/AutoTest
    def connect(self):
        conn = self._new_conn()
        self._prepare_conn(conn)

        if self.ssl_context is None:
            self.ssl_context = create_urllib3_context(
                ssl_version=resolve_ssl_version(None),
                cert_reqs=resolve_cert_reqs(None),
            )

        self.sock = ssl_wrap_socket(sock=conn,
                                    keyfile=self.key_file,
                                    certfile=self.cert_file,
                                    ssl_context=self.ssl_context,
                                    server_hostname=self.server_hostname)
コード例 #5
0
ファイル: test_util.py プロジェクト: zhangyangyu/urllib3
 def test_resolve_cert_reqs(self, candidate, requirements):
     assert resolve_cert_reqs(candidate) == requirements
コード例 #6
0
ファイル: test_util.py プロジェクト: encodeltd/urllib3
 def test_resolve_cert_reqs(self, candidate, requirements):
     assert resolve_cert_reqs(candidate) == requirements
コード例 #7
0
ファイル: custom_http.py プロジェクト: chengboliber/AutoTest
    def connect(self):
        # Add certificate verification
        conn = self._new_conn()
        hostname = self.host

        if self._tunnel_host:
            self.sock = conn
            # Calls self._set_hostport(), so self.host is
            # self._tunnel_host below.
            self._tunnel()
            # Mark this connection as not reusable
            self.auto_open = 0

            # Override the host with the one we're requesting data from.
            hostname = self._tunnel_host

        server_hostname = hostname
        if self.server_hostname is not None:
            server_hostname = self.server_hostname

        is_time_off = datetime.date.today() < RECENT_DATE
        if is_time_off:
            warnings.warn(
                ('System time is way off (before {0}). This will probably '
                 'lead to SSL verification errors').format(RECENT_DATE),
                SystemTimeWarning)

        # Wrap socket using verification with the root certs in
        # trusted_root_certs
        if self.ssl_context is None:
            self.ssl_context = create_urllib3_context(
                ssl_version=resolve_ssl_version(self.ssl_version),
                cert_reqs=resolve_cert_reqs(self.cert_reqs),
            )

        context = self.ssl_context
        context.verify_mode = resolve_cert_reqs(self.cert_reqs)
        self.sock = ssl_wrap_socket(sock=conn,
                                    keyfile=self.key_file,
                                    certfile=self.cert_file,
                                    ca_certs=self.ca_certs,
                                    ca_cert_dir=self.ca_cert_dir,
                                    server_hostname=server_hostname,
                                    ssl_context=context)

        if self.assert_fingerprint:
            assert_fingerprint(self.sock.getpeercert(binary_form=True),
                               self.assert_fingerprint)
        elif context.verify_mode != ssl.CERT_NONE \
                and not getattr(context, 'check_hostname', False) \
                and self.assert_hostname is not False:
            # While urllib3 attempts to always turn off hostname matching from
            # the TLS library, this cannot always be done. So we check whether
            # the TLS Library still thinks it's matching hostnames.
            cert = self.sock.getpeercert()
            if not cert.get('subjectAltName', ()):
                warnings.warn((
                    'Certificate for {0} has no `subjectAltName`, falling back to check for a '
                    '`commonName` for now. This feature is being removed by major browsers and '
                    'deprecated by RFC 2818. (See https://github.com/shazow/urllib3/issues/497 '
                    'for details.)'.format(hostname)), SubjectAltNameWarning)
            _match_hostname(cert, self.assert_hostname or server_hostname)

        self.is_verified = (context.verify_mode == ssl.CERT_REQUIRED
                            or self.assert_fingerprint is not None)
コード例 #8
0
 def test_resolve_cert_reqs(self, candidate: Optional[Union[int, str]],
                            requirements: int) -> None:
     assert resolve_cert_reqs(candidate) == requirements