- Added support for macOS 10.13 and earlier using the
SecTrustEvaluate
API. Note that this API doesn't return fine-grained errors likeSecTrustEvaluateWithError
(requires macOS 10.14+). - Added
SSLContext.set_default_verify_paths()
method. - Changed method for disabling hostname verification for macOS and Windows.
Previously would ignore hostname verification errors if
SSLContext.check_hostname
wasFalse
. Now for both macOS and Windows the certificate verification policy is configured to not check certificate hostname. This should have no effect on users.
- Fixed an issue where implementations supporting Python 3.10 but not the peer certificate chain APIs
would fail during the handshake instead of when importing the
truststore
module. The module now raises an error immediately instead of on first handshake. This was added for the GraalPy implementation specifically, but there may be others.
- Fixed an issue for CPython 3.13 where
ssl.SSLSocket
andssl.SSLObject
certificate chain APIs would return different types.
- Added support for Python 3.13.
- Fixed loading additional certificates on macOS.
- Changed error message for Windows when peer offers no certificates
and verification is enabled. Previously was
IndexError
, now isSSLCertVerificationError
.
- Added support for PyPy 3.10 and later.
- Changed the error raised when using an unsupported macOS version (10.7 or earlier) from an
OSError
to anImportError
to match the error raised in other situations where the module isn't supported.
- Fixed issue where a
RecursionError
that would be raised when settingSSLContext.minimum_version
or.maximum_version
.
- Truststore is now beta! Truststore will be made the default in a future pip release.
- Added
inject_into_ssl()
andextract_from_ssl()
to enable Truststore for all packages usingssl.SSLContext
automatically. - Added support for setting
check_hostname
,verify_mode
, andverify_flags
. - Added pass-through implementations for many
ssl.SSLContext
methods likeload_cert_chain()
,set_alpn_protocols()
, etc.
- Support for using truststore was released with pip v22.2! You can read more here about how to help us test truststore.
- Added David Glick as an author in packaging metadata.
- Added documentation for how to use
truststore
with urllib3, Requests, aiohttp, and pip. - Changed macOS SecureTransport error handling to raise as
ssl.SSLError
with message from the OS.
- Added more descriptive error messages to
ssl.SSLCertVerificationError
determined by the OS on macOS and Windows. - Changed Windows to follow
SSLContext.verify_flags
for strictly checking CRLs instead of checking CRLs strictly by default.
- Added support for loading extra CA certificates via
SSLContext.load_verify_locations()
. - Added type hints.
- Changed the name of
TruststoreSSLContext
toSSLContext
. - Changed certificate hostname verification to rely on macOS and Windows instead of OpenSSL.
- Fixed the order default certificates are loaded for OpenSSL backend.
- Added support for Windows via the CryptoAPI.
- Initial release with support for macOS and Linux.