python-truststore
Subpackage Descriptions
| single |
# Truststore
[PyPI]
[CI]
Truststore is a library which exposes native system certificate stores (ie
"trust stores")
through an `ssl.SSLContext`-like API. This means that Python applications
no longer need to
rely on certifi as a root certificate store. Native system certificate
stores
have many helpful features compared to a static certificate bundle like
certifi:
- Automatically update certificates as new CAs are created and removed
- Fetch missing intermediate certificates
- Check certificates against certificate revocation lists (CRLs) to avoid
monster-in-the-middle (MITM) attacks
- Managed per-system rather than per-application by a operations/IT team
- PyPI is no longer a CA distribution channel 🥳
Right now truststore is a stand-alone library that can be installed
globally in your
application to immediately take advantage of the benefits in Python 3.10+.
Truststore
has also been integrated into pip 24.2+ as the default method for verifying
HTTPS
certificates (with a fallback to certifi).
Long-term the hope is to add this functionality into Python itself. Wish us
luck!
## Installation
Truststore is installed from [PyPI] with pip:
```{code-block} shell
$ python -m pip install truststore
```
Truststore **requires Python 3.10 or later** and supports the following
platforms:
- macOS 10.8+ via [Security framework]
- Windows via [CryptoAPI]
- Linux via OpenSSL
## User Guide
> **Warning**
> **PLEASE READ:** `inject_into_ssl()` **must not be used by libraries or
packages** as it will cause issues on import time when integrated with
other libraries.
> Libraries and packages should instead use `truststore.SSLContext`
directly which is detailed below.
>
> The `inject_into_ssl()` function is intended only for use in applications
and scripts.
You can inject `truststore` into the standard library `ssl` module so the
functionality is used
by every library by default. To do so use the
`truststore.inject_into_ssl()` function:
```python
import truststore
truststore.inject_into_ssl()
# Automatically works with urllib3, requests, aiohttp, and more:
import urllib3
http = urllib3.PoolManager()
resp = http.request("GET", "https://example.com")
import aiohttp
http = aiohttp.ClientSession()
resp = await http.request("GET", "https://example.com")
import requests
resp = requests.get("https://example.com")
```
If you'd like finer-grained control or you're developing a library or
package you can create your own `truststore.SSLContext` instance
and use it anywhere you'd use an `ssl.SSLContext`:
```python
import ssl
import truststore
ctx = truststore.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
import urllib3
http = urllib3.PoolManager(ssl_context=ctx)
resp = http.request("GET", "https://example.com")
```
You can read more in the [user guide in the documentation].
## License
MIT
|
Configuration Switches (platform-specific settings discarded)
PY313 ON Build using Python 3.13
PY314 OFF Build using Python 3.14
Package Dependencies by Type
Download groups
| main |
mirror://PYPIWHL/19/97/56608b2249fe206a67cd573bc93cd9896e1efb9e98bce9c163bcdc704b88 |
Distribution File Information
adaeaecf1cbb5f4de3b1959b42d41f6fab57b2b1666adb59e89cb0b53361d981 18660 python-src/truststore-0.10.4-py3-none-any.whl
Ports that require python-truststore:v13