go-pki-est¶
go-pki-est is a Go library for Enrollment over Secure Transport (EST), the certificate enrollment protocol of RFC 7030. It contains:
- an EST client for Go programs,
est.Client - an EST server as an
http.Handlerin front of your CA, built byest.NewRouterfrom your implementation of theCAinterface estclient, a command line client built on the libraryestserver, a test server with a mock CA for development
Clients sign in with TLS client certificates, HTTP Basic, bearer tokens or TLS-SRP passwords. Certificates can carry post-quantum ML-DSA keys. The support matrix lists what is covered.
Install¶
go get github.com/misiektoja/go-pki-est
The module needs Go 1.27.3 or newer. The package is imported as est. The command line tools
install with:
go install github.com/misiektoja/go-pki-est/cmd/estclient@latest
go install github.com/misiektoja/go-pki-est/cmd/estserver@latest
Start here¶
Getting started starts estserver, enrolls and renews with estclient
and then does the same from Go.
Where to go next¶
| I want to | Page |
|---|---|
| Know which operations, algorithms and peers are covered | Support matrix |
| Understand how the client, the router and my CA fit together | Architecture |
| Enroll, renew or get a server-generated key from Go | Enrollment and renewal |
| Sign in with a certificate, a password, a token or TLS-SRP | Signing in |
| Use a proxy, trace requests or raise limits | Connections and hooks |
| Serve EST in front of my CA | Embedding the server and The CA interface |
| Decide who may enroll and renew | Server authentication |
| Use ML-DSA, SLH-DSA, composite ML-DSA or ML-KEM keys | Post-quantum algorithms |
| Look up a command line flag or configuration key | estclient and estserver |
| Look up a field | Client fields and ServerConfig fields |
| Fix something that does not work | Troubleshooting |
| See which servers the client was tested with | Interoperability |
| Understand what is not implemented | Known limitations |
| Check a downloaded release | Verifying a release |
| Look up a type or function | Package documentation |
| See what changed in a release | Changelog |
| Ask for help or report a problem | Support |
Design and security¶
- Security model - what the library checks and what remains with the host
- Errors - the statuses and messages the server sends and how the client reports them
- Compatibility policy - what may change between releases
Contributing¶
- Development, Testing and Release process
- Source and issues: github.com/misiektoja/go-pki-est
Credits¶
This project began as a fork of globalsign/est by GMO GlobalSign. The protocol implementation, both command line tools and the test server come from that project. The first fixes made here were offered upstream in globalsign/est#59 to globalsign/est#66. This fork is maintained separately so fixes and new features ship in its own releases. Changes that suit upstream are still offered there. NOTICE records the attribution.
Related projects¶
Other PKI projects from the same maintainer:
- certrally: a command line client for certificate enrollment over CMP, EST and SCEP
- cmp-issuer: a cert-manager external issuer for CMP servers
- go-acme-server: an embeddable ACME server library for Go (RFC 8555)
- go-pki-cmp: a Go library for the Certificate Management Protocol (CMP) with a client and a server
- go-pki-scep: a Go library for SCEP (RFC 8894) with a client and a server handler
- go-pkcs7: a Go library for PKCS #7 and CMS (RFC 5652) signed and enveloped data
- go-composite-mldsa: a Go library for post-quantum composite ML-DSA signatures
- go-tls-srp: TLS 1.2 with SRP password authentication (RFC 5054) for Go