TLS Support using SPIFFE
Project description
spiffe-tls
package (experimental)
Overview
The spiffe-tls
package, part of the py-spiffe
library, is designed to simplify the creation of secure TLS
connections by leveraging SPIFFE IDs for authentication. Utilizing the capabilities
of pyOpenSSL, this package offers
straightforward utilities for both TLS client and server configurations. Currently in its experimental phase,
spiffe-tls
enables integration of SPIFFE-based authentication, facilitating automatic management
of X.509 certificates and CA trusted bundles through an X509Source
from the spiffe
package.
Key Features
- TLS connections with SPIFFE ID validation.
- Mutual TLS (MTLS) support for authenticated client-server communication.
- Customizable server and client TLS configurations.
Quick Start
Server Setup
# Create a TLS server with SPIFFE-based MTLS
from spiffetls import listen, ListenOptions
from spiffe import SpiffeId, X509Source
from spiffetls.mode import ServerTlsMode
from spiffetls.tlsconfig.authorize import authorize_id
x509_source = X509Source()
options = ListenOptions(
tls_mode=ServerTlsMode.MTLS,
authorize_fn=authorize_id(SpiffeId("spiffe://example.org/client-service")),
)
listener = listen("localhost:8443", x509_source, options)
Client Connection
# Establish a secure connection to a TLS server
from spiffetls import dial
from spiffe import SpiffeId, X509Source
from spiffetls.tlsconfig.authorize import authorize_id
x509_source = X509Source()
conn = dial(
"localhost:8443",
x509_source,
authorize_fn=authorize_id(SpiffeId("spiffe://example.org/server")),
)
Authorization Functions
The package supports custom authorization functions for additional certificate validation:
authorize_any()
: Accepts any SPIFFE ID.authorize_id()
: Validates a specific SPIFFE ID.authorize_one_of()
: Allows any ID from a set of allowed SPIFFE IDs.authorize_member_of()
: Permits any ID from a specific trust domain.
Contributing
We welcome contributions to the spiffe-tls
package! Please see
our contribution guidelines for more
details. For feedback and issues, please submit them through
the GitHub issue tracker.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for spiffe_tls-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28acc7fbaabceb10817b674a6b24f9c5773e5516c3b7fdbcae4559e62163e92f |
|
MD5 | b76236aa10b3614f4264e6757452d844 |
|
BLAKE2b-256 | d38b41491408b2030a65292213587a9a3ba8c0577194f83012766c3bdf75e177 |