go-spiffe

module
v2.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 21, 2025 License: Apache-2.0

README

go-spiffe (v2)

This library is a convenient Go library for working with SPIFFE.

It leverages the SPIFFE Workload API, providing high level functionality that includes:

  • Establishing mutually authenticated TLS (mTLS) between workloads powered by SPIFFE.
  • Obtaining and validating X509-SVIDs and JWT-SVIDs.
  • Federating trust between trust domains using SPIFFE bundles.
  • Bundle management.

Documentation

See the Go Package documentation.

Quick Start

Prerequisites:

  1. Running SPIRE or another SPIFFE Workload API implementation.
  2. SPIFFE_ENDPOINT_SOCKET environment variable set to address of the Workload API (e.g. unix:///tmp/agent.sock). Alternatively the socket address can be provided programatically.

To create an mTLS server:

listener, err := spiffetls.Listen(ctx, "tcp", "127.0.0.1:8443", tlsconfig.AuthorizeAny())

To dial an mTLS server:

conn, err := spiffetls.Dial(ctx, "tcp", "127.0.0.1:8443", tlsconfig.AuthorizeAny())

The client and server obtain X509-SVIDs and X.509 bundles from the SPIFFE Workload API. The X509-SVIDs are presented by each peer and authenticated against the X.509 bundles. Both sides continue to be updated with X509-SVIDs and X.509 bundles streamed from the Workload API (e.g. secret rotation).

Examples

The examples directory contains rich examples for a variety of circumstances.

Supported Go Versions

This library tracks the minimum officially supported Go version (i.e. N-1). The only exception to this policy will be in response to a security issue affecting a dependency that forces a premature upgrade. This action is expected to be rare, will not be taken lightly, and not until reasonable efforts to mitigate the security issue while maintaining this policy are pursued.

Reporting Security Vulnerabilities

If you've found a vulnerability or a potential vulnerability in go-spiffe, please let us know at security@spiffe.io. We'll send a confirmation email to acknowledge your report, and we'll send an additional email when we've identified the issue positively or negatively.

Directories

Path Synopsis
bundle
jwtbundle
Package jwtbundle provides JWT bundle related functionality.
Package jwtbundle provides JWT bundle related functionality.
spiffebundle
Package spiffebundle provides SPIFFE bundle related functionality.
Package spiffebundle provides SPIFFE bundle related functionality.
x509bundle
Package x509bundle provides X.509 bundle related functionality.
Package x509bundle provides X.509 bundle related functionality.
examples
spiffe-watcher command
internal
test/errstrings
OS specific error strings
OS specific error strings
proto
spiffegrpc
svid

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL