- Fixed a thread-safety issue when configuring the internal
ssl.SSLContextobject.
- Added support for the system certificate bundle in Fedora 43 and later.
- Release failed to publish to PyPI due to outdated build tools.
Created new release (0.10.3) after updating
buildto 1.2.2.post1.
- Fixed the patching of Requests' globally-cached
ssl.SSLContextobject to work automagically withtruststore.inject_into_ssl()regardless of import-order. - Speed up import times by skipping feature-checking for known Python implementations (CPython and PyPy).
- Added support for macOS 10.13 and earlier using the
SecTrustEvaluateAPI. 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_hostnamewasFalse. 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
truststoremodule. 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.SSLSocketandssl.SSLObjectcertificate 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
OSErrorto anImportErrorto match the error raised in other situations where the module isn't supported.
- Fixed issue where a
RecursionErrorthat would be raised when settingSSLContext.minimum_versionor.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.SSLContextautomatically. - Added support for setting
check_hostname,verify_mode, andverify_flags. - Added pass-through implementations for many
ssl.SSLContextmethods 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
truststorewith urllib3, Requests, aiohttp, and pip. - Changed macOS SecureTransport error handling to raise as
ssl.SSLErrorwith message from the OS.
- Added more descriptive error messages to
ssl.SSLCertVerificationErrordetermined by the OS on macOS and Windows. - Changed Windows to follow
SSLContext.verify_flagsfor 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
TruststoreSSLContexttoSSLContext. - 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.