Add PKCS#12 support to the requests library in a clean way, without monkey patching or temporary files
This library adds PKCS#12 support to the Python requests library.
It is a clean implementation: it uses neither monkey patching nor temporary files. Instead, it is integrated into requests as recommended by its authors: creating a custom TransportAdapter, which provides a custom SSLContext.
This library is meant to be a transitional solution until this functionality is provided by requests directly. However, that will take some time. See the corresponding issue for more details.
For simple one-off requests you can use this library as a drop-in replacement for the requests library:
from requests_pkcs12 import get r = get('https://example.com/test', pkcs12_filename='clientcert.p12', pkcs12_password='correcthorsebatterystaple')
If you are using requests sessions, use the Pkcs12Adapter:
from requests import Session from requests_pkcs12 import Pkcs12Adapter with Session() as s: s.mount('https://example.com', Pkcs12Adapter(pkcs12_filename='clientcert.p12', pkcs12_password='correcthorsebatterystaple')) r = s.get('https://example.com/test')
This library is available as PyPI package:
pip install requests-pkcs12
Alternatively, you can retrieve the latest development version via Git:
git clone https://github.com/m-click/requests_pkcs12
The following keyword arguments are supported:
- pkcs12_filename is a byte string or unicode string that contains the file name of the encrypted PKCS#12 certificate.
- Either this argument or pkcs12_data must be provided.
- pkcs12_data is a byte string that contains the encrypted PKCS#12 certificate data.
- Either this argument or pkcs12_filename must be provided.
- pkcs12_password is a byte string or unicode string that contains the password.
- This argument must be provided whenever pkcs12_filename or pkcs12_data is provided.
If you use these parameters, don’t use the built-in cert parameter of requests at the same time. However, do use the other parameters. In particular, do use the “verify” parameter to verify the server-side certificate.
Release history Release notifications
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size requests_pkcs12-1.7-py2.py3-none-any.whl (4.7 kB)||File type Wheel||Python version py2.py3||Upload date||Hashes View|
|Filename, size requests_pkcs12-1.7.tar.gz (3.9 kB)||File type Source||Python version None||Upload date||Hashes View|
Hashes for requests_pkcs12-1.7-py2.py3-none-any.whl