From d53bcaf830980ea18e958adf027fa4ec544f7e91 Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Fri, 2 Jul 2021 22:51:15 +0200 Subject: [PATCH 01/36] Add base logic for ACME revoke-cert --- acme/api/handler.go | 1 + acme/api/revoke.go | 79 +++++++++++++++++++++++++++++++++++++++++++++ acme/common.go | 2 ++ 3 files changed, 82 insertions(+) create mode 100644 acme/api/revoke.go diff --git a/acme/api/handler.go b/acme/api/handler.go index 2a6d3a02..06bd4bb4 100644 --- a/acme/api/handler.go +++ b/acme/api/handler.go @@ -111,6 +111,7 @@ func (h *Handler) Route(r api.Router) { r.MethodFunc("POST", getPath(AuthzLinkType, "{provisionerID}", "{authzID}"), extractPayloadByKid(h.isPostAsGet(h.GetAuthorization))) r.MethodFunc("POST", getPath(ChallengeLinkType, "{provisionerID}", "{authzID}", "{chID}"), extractPayloadByKid(h.GetChallenge)) r.MethodFunc("POST", getPath(CertificateLinkType, "{provisionerID}", "{certID}"), extractPayloadByKid(h.isPostAsGet(h.GetCertificate))) + r.MethodFunc("POST", getPath(RevokeCertLinkType, "{provisionerID}"), extractPayloadByKid(h.RevokeCert)) // TODO: check kid vs. jws; revoke can do both } // GetNonce just sets the right header since a Nonce is added to each response diff --git a/acme/api/revoke.go b/acme/api/revoke.go new file mode 100644 index 00000000..ab537007 --- /dev/null +++ b/acme/api/revoke.go @@ -0,0 +1,79 @@ +package api + +import ( + "crypto/x509" + "encoding/base64" + "encoding/json" + "fmt" + "net/http" + + "github.com/smallstep/certificates/api" + "github.com/smallstep/certificates/authority" +) + +func (h *Handler) RevokeCert(w http.ResponseWriter, r *http.Request) { + + // TODO: support the non-kid case, i.e. JWK with the public key of the cert + // base the account + certificate JWK instead of the kid (which is now the case) + // TODO: handle errors; sent the right ACME response back + + ctx := r.Context() + _, err := accountFromContext(ctx) + if err != nil { + api.WriteError(w, err) + return + } + + // TODO: do checks on account, i.e. is it still valid? is it allowed to do revocations? Revocations on the to be revoked cert? + + _, err = provisionerFromContext(ctx) + if err != nil { + fmt.Println(err) + } + + // TODO: let provisioner authorize the revocation? Necessary per provisioner? Or can it be done by the CA, like the Revoke itself. + + p, err := payloadFromContext(ctx) + if err != nil { + fmt.Println(err) + } + + type revokedCert struct { + Certificate string `json:"certificate"` + Reason int `json:"reason"` // TODO: is optional; handle accordingly + } + + var rc revokedCert + err = json.Unmarshal(p.value, &rc) + if err != nil { + fmt.Println("error:", err) + } + + c, err := base64.RawURLEncoding.DecodeString(rc.Certificate) + if err != nil { + fmt.Println("error:", err) + } + + certToBeRevoked, err := x509.ParseCertificate(c) + if err != nil { + fmt.Println("error: failed to parse certificate: " + err.Error()) + } + + // TODO: check reason code; should be allowed; otherwise send error + + options := &authority.RevokeOptions{ + Serial: certToBeRevoked.SerialNumber.String(), + Reason: "test", // TODO: map it to the reason based on code? + ReasonCode: rc.Reason, + PassiveOnly: false, + MTLS: true, // TODO: should be false, I guess, but results in error: authority.Revoke; error parsing token: square/go-jose: compact JWS format must have three parts (OTT) + Crt: certToBeRevoked, + OTT: "", + } + err = h.ca.Revoke(ctx, options) + if err != nil { + fmt.Println("error: ", err.Error()) // TODO: send the right error; 400; alreadyRevoked (or something else went wrong, of course) + } + + w.Write(nil) +} diff --git a/acme/common.go b/acme/common.go index 26552c61..77a219a0 100644 --- a/acme/common.go +++ b/acme/common.go @@ -5,12 +5,14 @@ import ( "crypto/x509" "time" + "github.com/smallstep/certificates/authority" "github.com/smallstep/certificates/authority/provisioner" ) // CertificateAuthority is the interface implemented by a CA authority. type CertificateAuthority interface { Sign(cr *x509.CertificateRequest, opts provisioner.SignOptions, signOpts ...provisioner.SignOption) ([]*x509.Certificate, error) + Revoke(context.Context, *authority.RevokeOptions) error LoadProvisionerByID(string) (provisioner.Interface, error) } From 84e7d468f226843820419808d5505e4ee22436f3 Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Sat, 3 Jul 2021 00:21:17 +0200 Subject: [PATCH 02/36] Improve handling of ACME revocation --- acme/api/revoke.go | 103 ++++++++++++++++++++++++++++++++++----------- authority/tls.go | 8 ++-- 2 files changed, 83 insertions(+), 28 deletions(-) diff --git a/acme/api/revoke.go b/acme/api/revoke.go index ab537007..3dda7098 100644 --- a/acme/api/revoke.go +++ b/acme/api/revoke.go @@ -4,18 +4,23 @@ import ( "crypto/x509" "encoding/base64" "encoding/json" - "fmt" "net/http" + "github.com/smallstep/certificates/acme" "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/authority" + "golang.org/x/crypto/ocsp" ) +type revokePayload struct { + Certificate string `json:"certificate"` + ReasonCode int `json:"reason"` +} + func (h *Handler) RevokeCert(w http.ResponseWriter, r *http.Request) { // TODO: support the non-kid case, i.e. JWK with the public key of the cert // base the account + certificate JWK instead of the kid (which is now the case) - // TODO: handle errors; sent the right ACME response back ctx := r.Context() _, err := accountFromContext(ctx) @@ -28,52 +33,100 @@ func (h *Handler) RevokeCert(w http.ResponseWriter, r *http.Request) { _, err = provisionerFromContext(ctx) if err != nil { - fmt.Println(err) + api.WriteError(w, err) + return } // TODO: let provisioner authorize the revocation? Necessary per provisioner? Or can it be done by the CA, like the Revoke itself. p, err := payloadFromContext(ctx) if err != nil { - fmt.Println(err) + api.WriteError(w, err) + return } - type revokedCert struct { - Certificate string `json:"certificate"` - Reason int `json:"reason"` // TODO: is optional; handle accordingly - } - - var rc revokedCert - err = json.Unmarshal(p.value, &rc) + var payload revokePayload + err = json.Unmarshal(p.value, &payload) if err != nil { - fmt.Println("error:", err) + api.WriteError(w, err) // TODO: fix error type + return } - c, err := base64.RawURLEncoding.DecodeString(rc.Certificate) + certBytes, err := base64.RawURLEncoding.DecodeString(payload.Certificate) if err != nil { - fmt.Println("error:", err) + api.WriteError(w, err) // TODO: fix error type + return } - certToBeRevoked, err := x509.ParseCertificate(c) + certToBeRevoked, err := x509.ParseCertificate(certBytes) if err != nil { - fmt.Println("error: failed to parse certificate: " + err.Error()) + api.WriteError(w, err) // TODO: fix error type + return } - // TODO: check reason code; should be allowed; otherwise send error + certID := certToBeRevoked.SerialNumber.String() + // TODO: retrieving the certificate to verify the account does not seem to work? Results in certificate not found error. + // When Revoke is called, the certificate IS in fact found? The (h *Handler) GetCertificate function is fairly similar, too. + // existingCert, err := h.db.GetCertificate(ctx, certID) + // if err != nil { + // api.WriteError(w, acme.WrapErrorISE(err, "error retrieving certificate")) + // return + // } + // if existingCert.AccountID != acc.ID { + // api.WriteError(w, acme.NewError(acme.ErrorUnauthorizedType, + // "account '%s' does not own certificate '%s'", acc.ID, certID)) + // return // TODO: this check should only be performed in case acc exists (i.e. KID revoke) + // } + + // TODO: validate the certToBeRevoked against what we know about it? + + if payload.ReasonCode < ocsp.Unspecified || payload.ReasonCode > ocsp.AACompromise { + api.WriteError(w, acme.NewError(acme.ErrorBadRevocationReasonType, "reasonCode out of bounds")) + return + } + + // TODO: check reason code; should be allowed (based on what? and determined by Provisioner?); otherwise send error options := &authority.RevokeOptions{ - Serial: certToBeRevoked.SerialNumber.String(), - Reason: "test", // TODO: map it to the reason based on code? - ReasonCode: rc.Reason, - PassiveOnly: false, - MTLS: true, // TODO: should be false, I guess, but results in error: authority.Revoke; error parsing token: square/go-jose: compact JWS format must have three parts (OTT) - Crt: certToBeRevoked, - OTT: "", + Serial: certID, + Reason: reason(payload.ReasonCode), + ReasonCode: payload.ReasonCode, + ACME: true, + Crt: certToBeRevoked, } + err = h.ca.Revoke(ctx, options) if err != nil { - fmt.Println("error: ", err.Error()) // TODO: send the right error; 400; alreadyRevoked (or something else went wrong, of course) + api.WriteError(w, err) // TODO: send the right error; 400; alreadyRevoked (or something else went wrong, of course) + return } w.Write(nil) } + +func reason(reasonCode int) string { + switch reasonCode { + case ocsp.Unspecified: + return "unspecified reason" + case ocsp.KeyCompromise: + return "key compromised" + case ocsp.CACompromise: + return "ca compromised" + case ocsp.AffiliationChanged: + return "affiliation changed" + case ocsp.Superseded: + return "superseded" + case ocsp.CessationOfOperation: + return "cessation of operation" + case ocsp.CertificateHold: + return "certificate hold" + case ocsp.RemoveFromCRL: + return "remove from crl" + case ocsp.PrivilegeWithdrawn: + return "privilege withdrawn" + case ocsp.AACompromise: + return "aa compromised" + default: + return "unspecified reason" + } +} diff --git a/authority/tls.go b/authority/tls.go index b7b2f936..7d1579cf 100644 --- a/authority/tls.go +++ b/authority/tls.go @@ -307,6 +307,7 @@ type RevokeOptions struct { ReasonCode int PassiveOnly bool MTLS bool + ACME bool Crt *x509.Certificate OTT string } @@ -324,9 +325,10 @@ func (a *Authority) Revoke(ctx context.Context, revokeOpts *RevokeOptions) error errs.WithKeyVal("reason", revokeOpts.Reason), errs.WithKeyVal("passiveOnly", revokeOpts.PassiveOnly), errs.WithKeyVal("MTLS", revokeOpts.MTLS), + errs.WithKeyVal("ACME", revokeOpts.ACME), errs.WithKeyVal("context", provisioner.MethodFromContext(ctx).String()), } - if revokeOpts.MTLS { + if revokeOpts.MTLS || revokeOpts.ACME { opts = append(opts, errs.WithKeyVal("certificate", base64.StdEncoding.EncodeToString(revokeOpts.Crt.Raw))) } else { opts = append(opts, errs.WithKeyVal("token", revokeOpts.OTT)) @@ -344,8 +346,8 @@ func (a *Authority) Revoke(ctx context.Context, revokeOpts *RevokeOptions) error p provisioner.Interface err error ) - // If not mTLS then get the TokenID of the token. - if !revokeOpts.MTLS { + // If not mTLS nor ACME, then get the TokenID of the token. + if !(revokeOpts.MTLS || revokeOpts.ACME) { token, err := jose.ParseSigned(revokeOpts.OTT) if err != nil { return errs.Wrap(http.StatusUnauthorized, err, From 0e56932e76367570b68f3b163c1266c236275629 Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Sat, 3 Jul 2021 01:56:14 +0200 Subject: [PATCH 03/36] Add support for revocation using JWK --- acme/api/handler.go | 12 +++++++++--- acme/api/middleware.go | 31 +++++++++++++++++++++++++++++++ acme/api/revoke.go | 24 +++++++++++++++++++----- 3 files changed, 59 insertions(+), 8 deletions(-) diff --git a/acme/api/handler.go b/acme/api/handler.go index 06bd4bb4..8ec12a93 100644 --- a/acme/api/handler.go +++ b/acme/api/handler.go @@ -94,11 +94,17 @@ func (h *Handler) Route(r api.Router) { r.MethodFunc("GET", getPath(DirectoryLinkType, "{provisionerID}"), h.baseURLFromRequest(h.lookupProvisioner(h.GetDirectory))) r.MethodFunc("HEAD", getPath(DirectoryLinkType, "{provisionerID}"), h.baseURLFromRequest(h.lookupProvisioner(h.GetDirectory))) + validatingMiddleware := func(next nextHTTP) nextHTTP { + return h.baseURLFromRequest(h.lookupProvisioner(h.addNonce(h.addDirLink(h.verifyContentType(h.parseJWS(next)))))) + } extractPayloadByJWK := func(next nextHTTP) nextHTTP { - return h.baseURLFromRequest(h.lookupProvisioner(h.addNonce(h.addDirLink(h.verifyContentType(h.parseJWS(h.validateJWS(h.extractJWK(h.verifyAndExtractJWSPayload(next))))))))) + return validatingMiddleware(h.extractJWK(h.verifyAndExtractJWSPayload(next))) } extractPayloadByKid := func(next nextHTTP) nextHTTP { - return h.baseURLFromRequest(h.lookupProvisioner(h.addNonce(h.addDirLink(h.verifyContentType(h.parseJWS(h.validateJWS(h.lookupJWK(h.verifyAndExtractJWSPayload(next))))))))) + return validatingMiddleware(h.lookupJWK(h.verifyAndExtractJWSPayload(next))) + } + extractPayloadByKidOrJWK := func(next nextHTTP) nextHTTP { + return validatingMiddleware(h.extractOrLookupJWK(h.verifyAndExtractJWSPayload(next))) } r.MethodFunc("POST", getPath(NewAccountLinkType, "{provisionerID}"), extractPayloadByJWK(h.NewAccount)) @@ -111,7 +117,7 @@ func (h *Handler) Route(r api.Router) { r.MethodFunc("POST", getPath(AuthzLinkType, "{provisionerID}", "{authzID}"), extractPayloadByKid(h.isPostAsGet(h.GetAuthorization))) r.MethodFunc("POST", getPath(ChallengeLinkType, "{provisionerID}", "{authzID}", "{chID}"), extractPayloadByKid(h.GetChallenge)) r.MethodFunc("POST", getPath(CertificateLinkType, "{provisionerID}", "{certID}"), extractPayloadByKid(h.isPostAsGet(h.GetCertificate))) - r.MethodFunc("POST", getPath(RevokeCertLinkType, "{provisionerID}"), extractPayloadByKid(h.RevokeCert)) // TODO: check kid vs. jws; revoke can do both + r.MethodFunc("POST", getPath(RevokeCertLinkType, "{provisionerID}"), extractPayloadByKidOrJWK(h.RevokeCert)) } // GetNonce just sets the right header since a Nonce is added to each response diff --git a/acme/api/middleware.go b/acme/api/middleware.go index 50f7146f..3cee79c5 100644 --- a/acme/api/middleware.go +++ b/acme/api/middleware.go @@ -352,6 +352,37 @@ func (h *Handler) lookupJWK(next nextHTTP) nextHTTP { } } +// extractOrLookupJWK forwards handling to either extractJWK or +// lookupJWK based on the presence of a JWK or a KID, respectively. +func (h *Handler) extractOrLookupJWK(next nextHTTP) nextHTTP { + return func(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + jws, err := jwsFromContext(ctx) + if err != nil { + api.WriteError(w, err) + return + } + + // at this point the JWS has already been verified (if correctly configured in middleware), + // and it can be used to check if a jwk exists. + if canExtractJWKFrom(jws) { + h.extractJWK(next)(w, r) + return + } + + // default to looking up the JWK based on KID + h.lookupJWK(next)(w, r) + } +} + +// canExtractJWKFrom checks if the JWS has a JWK that can be extracted +func canExtractJWKFrom(jws *jose.JSONWebSignature) bool { + if len(jws.Signatures) == 0 { + return false + } + return jws.Signatures[0].Protected.JSONWebKey != nil +} + // verifyAndExtractJWSPayload extracts the JWK from the JWS and saves it in the context. // Make sure to parse and validate the JWS before running this middleware. func (h *Handler) verifyAndExtractJWSPayload(next nextHTTP) nextHTTP { diff --git a/acme/api/revoke.go b/acme/api/revoke.go index 3dda7098..bf9c3906 100644 --- a/acme/api/revoke.go +++ b/acme/api/revoke.go @@ -9,6 +9,7 @@ import ( "github.com/smallstep/certificates/acme" "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/authority" + "go.step.sm/crypto/jose" "golang.org/x/crypto/ocsp" ) @@ -19,16 +20,21 @@ type revokePayload struct { func (h *Handler) RevokeCert(w http.ResponseWriter, r *http.Request) { - // TODO: support the non-kid case, i.e. JWK with the public key of the cert - // base the account + certificate JWK instead of the kid (which is now the case) - ctx := r.Context() - _, err := accountFromContext(ctx) + jws, err := jwsFromContext(ctx) if err != nil { api.WriteError(w, err) return } + if shouldCheckAccount(jws) { + _, err := accountFromContext(ctx) + if err != nil { + api.WriteError(w, err) + return + } + } + // TODO: do checks on account, i.e. is it still valid? is it allowed to do revocations? Revocations on the to be revoked cert? _, err = provisionerFromContext(ctx) @@ -65,7 +71,7 @@ func (h *Handler) RevokeCert(w http.ResponseWriter, r *http.Request) { } certID := certToBeRevoked.SerialNumber.String() - // TODO: retrieving the certificate to verify the account does not seem to work? Results in certificate not found error. + // TODO: retrieving the certificate to verify the account does not seem to work, so far? Results in certificate not found error. // When Revoke is called, the certificate IS in fact found? The (h *Handler) GetCertificate function is fairly similar, too. // existingCert, err := h.db.GetCertificate(ctx, certID) // if err != nil { @@ -101,6 +107,7 @@ func (h *Handler) RevokeCert(w http.ResponseWriter, r *http.Request) { return } + w.Header().Add("Link", link(h.linker.GetLink(ctx, DirectoryLinkType), "index")) w.Write(nil) } @@ -130,3 +137,10 @@ func reason(reasonCode int) string { return "unspecified reason" } } + +// shouldUseAccount indicates whether an account should be +// retrieved from the context, so that it can be used for +// additional checks +func shouldCheckAccount(jws *jose.JSONWebSignature) bool { + return !canExtractJWKFrom(jws) +} From 16fe07d4dce6113001902b704da1b1805823a459 Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Sat, 3 Jul 2021 02:10:16 +0200 Subject: [PATCH 04/36] Fix mockSignAuth --- acme/order_test.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/acme/order_test.go b/acme/order_test.go index 993a92f2..2127599a 100644 --- a/acme/order_test.go +++ b/acme/order_test.go @@ -10,6 +10,7 @@ import ( "github.com/pkg/errors" "github.com/smallstep/assert" + "github.com/smallstep/certificates/authority" "github.com/smallstep/certificates/authority/provisioner" ) @@ -283,6 +284,10 @@ func (m *mockSignAuth) LoadProvisionerByID(id string) (provisioner.Interface, er return m.ret1.(provisioner.Interface), m.err } +func (m *mockSignAuth) Revoke(context.Context, *authority.RevokeOptions) error { + return nil +} + func TestOrder_Finalize(t *testing.T) { type test struct { o *Order From 2b15230aa4393cc68593990f0779a3c65e35c1a6 Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Fri, 9 Jul 2021 17:51:31 +0200 Subject: [PATCH 05/36] Add Serial to Cert ID ACME table and lookup --- acme/api/middleware.go | 4 +- acme/api/revoke.go | 92 +++++++++++++++++++++++++----------- acme/db.go | 15 +++++- acme/db/nosql/certificate.go | 35 +++++++++++++- acme/db/nosql/nosql.go | 3 +- 5 files changed, 116 insertions(+), 33 deletions(-) diff --git a/acme/api/middleware.go b/acme/api/middleware.go index 3eff4571..371be7fa 100644 --- a/acme/api/middleware.go +++ b/acme/api/middleware.go @@ -364,13 +364,13 @@ func (h *Handler) extractOrLookupJWK(next nextHTTP) nextHTTP { } // at this point the JWS has already been verified (if correctly configured in middleware), - // and it can be used to check if a jwk exists. + // and it can be used to check if a JWK exists. if canExtractJWKFrom(jws) { h.extractJWK(next)(w, r) return } - // default to looking up the JWK based on KID + // default to looking up the JWK based on KeyID h.lookupJWK(next)(w, r) } } diff --git a/acme/api/revoke.go b/acme/api/revoke.go index bf9c3906..75eb4ee2 100644 --- a/acme/api/revoke.go +++ b/acme/api/revoke.go @@ -9,15 +9,17 @@ import ( "github.com/smallstep/certificates/acme" "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/authority" + "github.com/smallstep/certificates/logging" "go.step.sm/crypto/jose" "golang.org/x/crypto/ocsp" ) type revokePayload struct { Certificate string `json:"certificate"` - ReasonCode int `json:"reason"` + ReasonCode *int `json:"reason,omitempty"` } +// RevokeCert attempts to revoke a certificate. func (h *Handler) RevokeCert(w http.ResponseWriter, r *http.Request) { ctx := r.Context() @@ -54,63 +56,99 @@ func (h *Handler) RevokeCert(w http.ResponseWriter, r *http.Request) { var payload revokePayload err = json.Unmarshal(p.value, &payload) if err != nil { - api.WriteError(w, err) // TODO: fix error type + api.WriteError(w, acme.WrapErrorISE(err, "error unmarshaling payload")) return } certBytes, err := base64.RawURLEncoding.DecodeString(payload.Certificate) if err != nil { - api.WriteError(w, err) // TODO: fix error type + api.WriteError(w, acme.WrapErrorISE(err, "error decoding base64 certificate")) return } certToBeRevoked, err := x509.ParseCertificate(certBytes) if err != nil { - api.WriteError(w, err) // TODO: fix error type + api.WriteError(w, acme.WrapErrorISE(err, "error parsing certificate")) + return + } + + serial := certToBeRevoked.SerialNumber.String() + _, err = h.db.GetCertificateBySerial(ctx, serial) + if err != nil { + api.WriteError(w, acme.WrapErrorISE(err, "error retrieving certificate by serial")) return } - certID := certToBeRevoked.SerialNumber.String() - // TODO: retrieving the certificate to verify the account does not seem to work, so far? Results in certificate not found error. - // When Revoke is called, the certificate IS in fact found? The (h *Handler) GetCertificate function is fairly similar, too. - // existingCert, err := h.db.GetCertificate(ctx, certID) - // if err != nil { - // api.WriteError(w, acme.WrapErrorISE(err, "error retrieving certificate")) - // return - // } // if existingCert.AccountID != acc.ID { // api.WriteError(w, acme.NewError(acme.ErrorUnauthorizedType, // "account '%s' does not own certificate '%s'", acc.ID, certID)) - // return // TODO: this check should only be performed in case acc exists (i.e. KID revoke) + // return // TODO: this check should only be performed in case acc exists (i.e. KeyID revoke) // } // TODO: validate the certToBeRevoked against what we know about it? - if payload.ReasonCode < ocsp.Unspecified || payload.ReasonCode > ocsp.AACompromise { - api.WriteError(w, acme.NewError(acme.ErrorBadRevocationReasonType, "reasonCode out of bounds")) + reasonCode := payload.ReasonCode + acmeErr := validateReasonCode(reasonCode) + if acmeErr != nil { + api.WriteError(w, acmeErr) return } - // TODO: check reason code; should be allowed (based on what? and determined by Provisioner?); otherwise send error - - options := &authority.RevokeOptions{ - Serial: certID, - Reason: reason(payload.ReasonCode), - ReasonCode: payload.ReasonCode, - ACME: true, - Crt: certToBeRevoked, - } - + options := revokeOptions(serial, certToBeRevoked, reasonCode) err = h.ca.Revoke(ctx, options) if err != nil { api.WriteError(w, err) // TODO: send the right error; 400; alreadyRevoked (or something else went wrong, of course) return } + logRevoke(w, options) w.Header().Add("Link", link(h.linker.GetLink(ctx, DirectoryLinkType), "index")) w.Write(nil) } +// logRevoke logs successful revocation of certificate +func logRevoke(w http.ResponseWriter, ri *authority.RevokeOptions) { + if rl, ok := w.(logging.ResponseLogger); ok { + rl.WithFields(map[string]interface{}{ + "serial": ri.Serial, + "reasonCode": ri.ReasonCode, + "reason": ri.Reason, + "passiveOnly": ri.PassiveOnly, + "ACME": ri.ACME, + }) + } +} + +// validateReasonCode validates the revocation reason +func validateReasonCode(reasonCode *int) *acme.Error { + if reasonCode != nil && ((*reasonCode < ocsp.Unspecified || *reasonCode > ocsp.AACompromise) || *reasonCode == 7) { + return acme.NewError(acme.ErrorBadRevocationReasonType, "reasonCode out of bounds") + } + // NOTE: it's possible to add additional requirements to the reason code: + // The server MAY disallow a subset of reasonCodes from being + // used by the user. If a request contains a disallowed reasonCode, + // then the server MUST reject it with the error type + // "urn:ietf:params:acme:error:badRevocationReason" + // No additional checks have been implemented so far. + return nil +} + +// revokeOptions determines the the RevokeOptions for the Authority to use in revocation +func revokeOptions(serial string, certToBeRevoked *x509.Certificate, reasonCode *int) *authority.RevokeOptions { + opts := &authority.RevokeOptions{ + Serial: serial, + ACME: true, + Crt: certToBeRevoked, + } + if reasonCode != nil { // NOTE: when implementing CRL and/or OCSP, and reason code is missing, CRL entry extension should be omitted + opts.Reason = reason(*reasonCode) + opts.ReasonCode = *reasonCode + } + return opts +} + +// reason transforms an integer reason code to a +// textual description of the revocation reason. func reason(reasonCode int) string { switch reasonCode { case ocsp.Unspecified: @@ -138,9 +176,9 @@ func reason(reasonCode int) string { } } -// shouldUseAccount indicates whether an account should be +// shouldCheckAccount indicates whether an account should be // retrieved from the context, so that it can be used for -// additional checks +// additional checks. func shouldCheckAccount(jws *jose.JSONWebSignature) bool { return !canExtractJWKFrom(jws) } diff --git a/acme/db.go b/acme/db.go index d678fef4..c4b79a66 100644 --- a/acme/db.go +++ b/acme/db.go @@ -28,6 +28,7 @@ type DB interface { CreateCertificate(ctx context.Context, cert *Certificate) error GetCertificate(ctx context.Context, id string) (*Certificate, error) + GetCertificateBySerial(ctx context.Context, serial string) (*Certificate, error) CreateChallenge(ctx context.Context, ch *Challenge) error GetChallenge(ctx context.Context, id, authzID string) (*Challenge, error) @@ -54,8 +55,9 @@ type MockDB struct { MockGetAuthorization func(ctx context.Context, id string) (*Authorization, error) MockUpdateAuthorization func(ctx context.Context, az *Authorization) error - MockCreateCertificate func(ctx context.Context, cert *Certificate) error - MockGetCertificate func(ctx context.Context, id string) (*Certificate, error) + MockCreateCertificate func(ctx context.Context, cert *Certificate) error + MockGetCertificate func(ctx context.Context, id string) (*Certificate, error) + MockGetCertificateBySerial func(ctx context.Context, serial string) (*Certificate, error) MockCreateChallenge func(ctx context.Context, ch *Challenge) error MockGetChallenge func(ctx context.Context, id, authzID string) (*Challenge, error) @@ -180,6 +182,15 @@ func (m *MockDB) GetCertificate(ctx context.Context, id string) (*Certificate, e return m.MockRet1.(*Certificate), m.MockError } +func (m *MockDB) GetCertificateBySerial(ctx context.Context, serial string) (*Certificate, error) { + if m.MockGetCertificateBySerial != nil { + return m.MockGetCertificateBySerial(ctx, serial) + } else if m.MockError != nil { + return nil, m.MockError + } + return m.MockRet1.(*Certificate), m.MockError +} + // CreateChallenge mock func (m *MockDB) CreateChallenge(ctx context.Context, ch *Challenge) error { if m.MockCreateChallenge != nil { diff --git a/acme/db/nosql/certificate.go b/acme/db/nosql/certificate.go index d3e15833..ee37c570 100644 --- a/acme/db/nosql/certificate.go +++ b/acme/db/nosql/certificate.go @@ -21,6 +21,11 @@ type dbCert struct { Intermediates []byte `json:"intermediates"` } +type dbSerial struct { + Serial string `json:"serial"` + CertificateID string `json:"certificateID"` +} + // CreateCertificate creates and stores an ACME certificate type. func (db *DB) CreateCertificate(ctx context.Context, cert *acme.Certificate) error { var err error @@ -49,7 +54,17 @@ func (db *DB) CreateCertificate(ctx context.Context, cert *acme.Certificate) err Intermediates: intermediates, CreatedAt: time.Now().UTC(), } - return db.save(ctx, cert.ID, dbch, nil, "certificate", certTable) + err = db.save(ctx, cert.ID, dbch, nil, "certificate", certTable) + if err != nil { + return err + } + + serial := cert.Leaf.SerialNumber.String() + dbSerial := &dbSerial{ + Serial: serial, + CertificateID: cert.ID, + } + return db.save(ctx, serial, dbSerial, nil, "serial", certBySerialTable) } // GetCertificate retrieves and unmarshals an ACME certificate type from the @@ -80,6 +95,24 @@ func (db *DB) GetCertificate(ctx context.Context, id string) (*acme.Certificate, }, nil } +// GetCertificateBySerial retrieves and unmarshals an ACME certificate type from the +// datastore based on a certificate serial number. +func (db *DB) GetCertificateBySerial(ctx context.Context, serial string) (*acme.Certificate, error) { + b, err := db.db.Get(certBySerialTable, []byte(serial)) + if nosql.IsErrNotFound(err) { + return nil, acme.NewError(acme.ErrorMalformedType, "certificate with serial %s not found", serial) + } else if err != nil { + return nil, errors.Wrapf(err, "error loading certificate ID for serial %s", serial) + } + + dbSerial := new(dbSerial) + if err := json.Unmarshal(b, dbSerial); err != nil { + return nil, errors.Wrapf(err, "error unmarshaling certificate with serial %s", serial) + } + + return db.GetCertificate(ctx, dbSerial.CertificateID) +} + func parseBundle(b []byte) ([]*x509.Certificate, error) { var ( err error diff --git a/acme/db/nosql/nosql.go b/acme/db/nosql/nosql.go index 052f5729..c179d2ed 100644 --- a/acme/db/nosql/nosql.go +++ b/acme/db/nosql/nosql.go @@ -19,6 +19,7 @@ var ( orderTable = []byte("acme_orders") ordersByAccountIDTable = []byte("acme_account_orders_index") certTable = []byte("acme_certs") + certBySerialTable = []byte("acme_serial_certs_index") ) // DB is a struct that implements the AcmeDB interface. @@ -29,7 +30,7 @@ type DB struct { // New configures and returns a new ACME DB backend implemented using a nosql DB. func New(db nosqlDB.DB) (*DB, error) { tables := [][]byte{accountTable, accountByKeyIDTable, authzTable, - challengeTable, nonceTable, orderTable, ordersByAccountIDTable, certTable} + challengeTable, nonceTable, orderTable, ordersByAccountIDTable, certTable, certBySerialTable} for _, b := range tables { if err := db.CreateTable(b); err != nil { return nil, errors.Wrapf(err, "error creating table %s", From 97165f184478134e44b2e6c8ed206650364bd7e6 Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Fri, 9 Jul 2021 22:48:03 +0200 Subject: [PATCH 06/36] Fix test mocking for CreateCertificate --- acme/db.go | 1 + acme/db/nosql/certificate_test.go | 40 ++++++++++++++++++++++--------- 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/acme/db.go b/acme/db.go index c4b79a66..67053269 100644 --- a/acme/db.go +++ b/acme/db.go @@ -182,6 +182,7 @@ func (m *MockDB) GetCertificate(ctx context.Context, id string) (*Certificate, e return m.MockRet1.(*Certificate), m.MockError } +// GetCertificateBySerial mock func (m *MockDB) GetCertificateBySerial(ctx context.Context, serial string) (*Certificate, error) { if m.MockGetCertificateBySerial != nil { return m.MockGetCertificateBySerial(ctx, serial) diff --git a/acme/db/nosql/certificate_test.go b/acme/db/nosql/certificate_test.go index 4ec4589e..f5a8b67f 100644 --- a/acme/db/nosql/certificate_test.go +++ b/acme/db/nosql/certificate_test.go @@ -31,6 +31,7 @@ func TestDB_CreateCertificate(t *testing.T) { err error _id *string } + countOfCmpAndSwapCalls := 0 var tests = map[string]func(t *testing.T) test{ "fail/cmpAndSwap-error": func(t *testing.T) test { cert := &acme.Certificate{ @@ -75,18 +76,35 @@ func TestDB_CreateCertificate(t *testing.T) { return test{ db: &db.MockNoSQLDB{ MCmpAndSwap: func(bucket, key, old, nu []byte) ([]byte, bool, error) { - *idPtr = string(key) - assert.Equals(t, bucket, certTable) - assert.Equals(t, key, []byte(cert.ID)) - assert.Equals(t, old, nil) + if countOfCmpAndSwapCalls == 0 { + *idPtr = string(key) + assert.Equals(t, bucket, certTable) + assert.Equals(t, key, []byte(cert.ID)) + assert.Equals(t, old, nil) + + dbc := new(dbCert) + assert.FatalError(t, json.Unmarshal(nu, dbc)) + assert.Equals(t, dbc.ID, string(key)) + assert.Equals(t, dbc.ID, cert.ID) + assert.Equals(t, dbc.AccountID, cert.AccountID) + assert.True(t, clock.Now().Add(-time.Minute).Before(dbc.CreatedAt)) + assert.True(t, clock.Now().Add(time.Minute).After(dbc.CreatedAt)) + } + if countOfCmpAndSwapCalls == 1 { + assert.Equals(t, bucket, certBySerialTable) + assert.Equals(t, key, []byte(cert.Leaf.SerialNumber.String())) + assert.Equals(t, old, nil) + + dbs := new(dbSerial) + assert.FatalError(t, json.Unmarshal(nu, dbs)) + assert.Equals(t, dbs.Serial, string(key)) + assert.Equals(t, dbs.CertificateID, cert.ID) + + *idPtr = cert.ID + } + + countOfCmpAndSwapCalls += 1 - dbc := new(dbCert) - assert.FatalError(t, json.Unmarshal(nu, dbc)) - assert.Equals(t, dbc.ID, string(key)) - assert.Equals(t, dbc.ID, cert.ID) - assert.Equals(t, dbc.AccountID, cert.AccountID) - assert.True(t, clock.Now().Add(-time.Minute).Before(dbc.CreatedAt)) - assert.True(t, clock.Now().Add(time.Minute).After(dbc.CreatedAt)) return nil, true, nil }, }, From 258efca0fa83785695021c058f50073807447749 Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Sat, 10 Jul 2021 00:28:31 +0200 Subject: [PATCH 07/36] Improve revocation authorization --- acme/api/middleware.go | 1 + acme/api/revoke.go | 82 ++++++++++++++++------- acme/common.go | 10 +++ acme/db/nosql/certificate_test.go | 2 +- authority/provisioner/acme.go | 9 +++ authority/provisioner/provisioner_test.go | 1 - 6 files changed, 78 insertions(+), 27 deletions(-) diff --git a/acme/api/middleware.go b/acme/api/middleware.go index 371be7fa..cb1df487 100644 --- a/acme/api/middleware.go +++ b/acme/api/middleware.go @@ -371,6 +371,7 @@ func (h *Handler) extractOrLookupJWK(next nextHTTP) nextHTTP { } // default to looking up the JWK based on KeyID + // NOTE: this is a JWK signed with the certificate private key h.lookupJWK(next)(w, r) } } diff --git a/acme/api/revoke.go b/acme/api/revoke.go index 75eb4ee2..4633b7c9 100644 --- a/acme/api/revoke.go +++ b/acme/api/revoke.go @@ -5,10 +5,12 @@ import ( "encoding/base64" "encoding/json" "net/http" + "strings" "github.com/smallstep/certificates/acme" "github.com/smallstep/certificates/api" "github.com/smallstep/certificates/authority" + "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/logging" "go.step.sm/crypto/jose" "golang.org/x/crypto/ocsp" @@ -29,24 +31,12 @@ func (h *Handler) RevokeCert(w http.ResponseWriter, r *http.Request) { return } - if shouldCheckAccount(jws) { - _, err := accountFromContext(ctx) - if err != nil { - api.WriteError(w, err) - return - } - } - - // TODO: do checks on account, i.e. is it still valid? is it allowed to do revocations? Revocations on the to be revoked cert? - - _, err = provisionerFromContext(ctx) + prov, err := provisionerFromContext(ctx) if err != nil { api.WriteError(w, err) return } - // TODO: let provisioner authorize the revocation? Necessary per provisioner? Or can it be done by the CA, like the Revoke itself. - p, err := payloadFromContext(ctx) if err != nil { api.WriteError(w, err) @@ -73,19 +63,39 @@ func (h *Handler) RevokeCert(w http.ResponseWriter, r *http.Request) { } serial := certToBeRevoked.SerialNumber.String() - _, err = h.db.GetCertificateBySerial(ctx, serial) + existingCert, err := h.db.GetCertificateBySerial(ctx, serial) if err != nil { api.WriteError(w, acme.WrapErrorISE(err, "error retrieving certificate by serial")) return } - // if existingCert.AccountID != acc.ID { - // api.WriteError(w, acme.NewError(acme.ErrorUnauthorizedType, - // "account '%s' does not own certificate '%s'", acc.ID, certID)) - // return // TODO: this check should only be performed in case acc exists (i.e. KeyID revoke) - // } - - // TODO: validate the certToBeRevoked against what we know about it? + if shouldCheckAccountFrom(jws) { + account, err := accountFromContext(ctx) + if err != nil { + api.WriteError(w, err) + return + } + if !account.IsValid() { + api.WriteError(w, acme.NewError(acme.ErrorUnauthorizedType, + "account '%s' has status '%s'", account.ID, account.Status)) + return + } + if existingCert.AccountID != account.ID { + api.WriteError(w, acme.NewError(acme.ErrorUnauthorizedType, + "account '%s' does not own certificate '%s'", account.ID, existingCert.ID)) + return + } + // TODO: check "an account that holds authorizations for all of the identifiers in the certificate." + } else { + // if account doesn't need to be checked, the JWS should be verified to be signed by the + // private key that belongs to the public key in the certificate to be revoked. + _, err := jws.Verify(certToBeRevoked.PublicKey) + if err != nil { + api.WriteError(w, acme.WrapError(acme.ErrorUnauthorizedType, err, + "verification of jws using certificate public key failed")) + return + } + } reasonCode := payload.ReasonCode acmeErr := validateReasonCode(reasonCode) @@ -94,10 +104,18 @@ func (h *Handler) RevokeCert(w http.ResponseWriter, r *http.Request) { return } + // Authorize revocation by ACME provisioner + ctx = provisioner.NewContextWithMethod(ctx, provisioner.RevokeMethod) + err = prov.AuthorizeRevoke(ctx, "") + if err != nil { + api.WriteError(w, acme.WrapErrorISE(err, "error authorizing revocation on provisioner")) + return + } + options := revokeOptions(serial, certToBeRevoked, reasonCode) err = h.ca.Revoke(ctx, options) if err != nil { - api.WriteError(w, err) // TODO: send the right error; 400; alreadyRevoked (or something else went wrong, of course) + api.WriteError(w, wrapRevokeErr(err)) return } @@ -106,6 +124,16 @@ func (h *Handler) RevokeCert(w http.ResponseWriter, r *http.Request) { w.Write(nil) } +// wrapRevokeErr is a best effort implementation to transform an error during +// revocation into an ACME error, so that clients can understand the error. +func wrapRevokeErr(err error) *acme.Error { + t := err.Error() + if strings.Contains(t, "has already been revoked") { + return acme.NewError(acme.ErrorAlreadyRevokedType, t) + } + return acme.WrapErrorISE(err, "error when revoking certificate") +} + // logRevoke logs successful revocation of certificate func logRevoke(w http.ResponseWriter, ri *authority.RevokeOptions) { if rl, ok := w.(logging.ResponseLogger); ok { @@ -176,9 +204,13 @@ func reason(reasonCode int) string { } } -// shouldCheckAccount indicates whether an account should be +// shouldCheckAccountFrom indicates whether an account should be // retrieved from the context, so that it can be used for -// additional checks. -func shouldCheckAccount(jws *jose.JSONWebSignature) bool { +// additional checks. This should only be done when no JWK +// can be extracted from the request, as that would indicate +// that the revocation request was signed with a certificate +// key pair (and not an account key pair). Looking up such +// a JWK would result in no Account being found. +func shouldCheckAccountFrom(jws *jose.JSONWebSignature) bool { return !canExtractJWKFrom(jws) } diff --git a/acme/common.go b/acme/common.go index ef1bf26e..2613c397 100644 --- a/acme/common.go +++ b/acme/common.go @@ -30,6 +30,7 @@ var clock Clock // only those methods required by the ACME api/authority. type Provisioner interface { AuthorizeSign(ctx context.Context, token string) ([]provisioner.SignOption, error) + AuthorizeRevoke(ctx context.Context, token string) error GetID() string GetName() string DefaultTLSCertDuration() time.Duration @@ -43,6 +44,7 @@ type MockProvisioner struct { MgetID func() string MgetName func() string MauthorizeSign func(ctx context.Context, ott string) ([]provisioner.SignOption, error) + MauthorizeRevoke func(ctx context.Context, token string) error MdefaultTLSCertDuration func() time.Duration MgetOptions func() *provisioner.Options } @@ -63,6 +65,14 @@ func (m *MockProvisioner) AuthorizeSign(ctx context.Context, ott string) ([]prov return m.Mret1.([]provisioner.SignOption), m.Merr } +// AuthorizeRevoke mock +func (m *MockProvisioner) AuthorizeRevoke(ctx context.Context, token string) error { + if m.MauthorizeRevoke != nil { + return m.MauthorizeRevoke(ctx, token) + } + return m.Merr +} + // DefaultTLSCertDuration mock func (m *MockProvisioner) DefaultTLSCertDuration() time.Duration { if m.MdefaultTLSCertDuration != nil { diff --git a/acme/db/nosql/certificate_test.go b/acme/db/nosql/certificate_test.go index f5a8b67f..baa19383 100644 --- a/acme/db/nosql/certificate_test.go +++ b/acme/db/nosql/certificate_test.go @@ -103,7 +103,7 @@ func TestDB_CreateCertificate(t *testing.T) { *idPtr = cert.ID } - countOfCmpAndSwapCalls += 1 + countOfCmpAndSwapCalls++ return nil, true, nil }, diff --git a/authority/provisioner/acme.go b/authority/provisioner/acme.go index d81b0231..25821051 100644 --- a/authority/provisioner/acme.go +++ b/authority/provisioner/acme.go @@ -99,6 +99,15 @@ func (p *ACME) AuthorizeSign(ctx context.Context, token string) ([]SignOption, e }, nil } +// AuthorizeRevoke is called just before the certificate is to be revoked by +// the CA. It can be used to authorize revocation of a certificate. It +// currently is a no-op. +// TODO: add configuration option that toggles revocation? Or change function signature to make it more useful? +// Or move certain logic out of the Revoke API to here? Would likely involve some more stuff in the ctx. +func (p *ACME) AuthorizeRevoke(ctx context.Context, token string) error { + return nil +} + // AuthorizeRenew returns an error if the renewal is disabled. // NOTE: This method does not actually validate the certificate or check it's // revocation status. Just confirms that the provisioner that created the diff --git a/authority/provisioner/provisioner_test.go b/authority/provisioner/provisioner_test.go index 3d895277..330d1b57 100644 --- a/authority/provisioner/provisioner_test.go +++ b/authority/provisioner/provisioner_test.go @@ -184,7 +184,6 @@ func TestUnimplementedMethods(t *testing.T) { {"x5c/sshRenew", &X5C{}, SSHRenewMethod}, {"x5c/sshRekey", &X5C{}, SSHRekeyMethod}, {"x5c/sshRevoke", &X5C{}, SSHRekeyMethod}, - {"acme/revoke", &ACME{}, RevokeMethod}, {"acme/sshSign", &ACME{}, SSHSignMethod}, {"acme/sshRekey", &ACME{}, SSHRekeyMethod}, {"acme/sshRenew", &ACME{}, SSHRenewMethod}, From c7a9c13060c2f8c257572e77eb5a859347c75647 Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Fri, 12 Nov 2021 16:37:44 +0100 Subject: [PATCH 08/36] Add tests for extractOrLookupJWK middleware --- acme/api/middleware.go | 3 + acme/api/middleware_test.go | 188 ++++++++++++++++++++++++++++++++++++ 2 files changed, 191 insertions(+) diff --git a/acme/api/middleware.go b/acme/api/middleware.go index 55bc96bf..99980f50 100644 --- a/acme/api/middleware.go +++ b/acme/api/middleware.go @@ -378,6 +378,9 @@ func (h *Handler) extractOrLookupJWK(next nextHTTP) nextHTTP { // canExtractJWKFrom checks if the JWS has a JWK that can be extracted func canExtractJWKFrom(jws *jose.JSONWebSignature) bool { + if jws == nil { + return false + } if len(jws.Signatures) == 0 { return false } diff --git a/acme/api/middleware_test.go b/acme/api/middleware_test.go index e8d22d53..1cc93de7 100644 --- a/acme/api/middleware_test.go +++ b/acme/api/middleware_test.go @@ -1473,3 +1473,191 @@ func TestHandler_validateJWS(t *testing.T) { }) } } + +func Test_canExtractJWKFrom(t *testing.T) { + jwk, err := jose.GenerateJWK("EC", "P-256", "ES256", "sig", "", 0) + assert.FatalError(t, err) + type args struct { + jws *jose.JSONWebSignature + } + tests := []struct { + name string + args args + want bool + }{ + { + name: "no-jws", + args: args{ + jws: nil, + }, + want: false, + }, + { + name: "no-signatures", + args: args{ + jws: &jose.JSONWebSignature{ + Signatures: []jose.Signature{}, + }, + }, + want: false, + }, + { + name: "no-jwk", + args: args{ + jws: &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{}, + }, + }, + }, + }, + want: false, + }, + { + name: "ok", + args: args{ + jws: &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + JSONWebKey: jwk, + }, + }, + }, + }, + }, + want: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := canExtractJWKFrom(tt.args.jws); got != tt.want { + t.Errorf("canExtractJWKFrom() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestHandler_extractOrLookupJWK(t *testing.T) { + u := "https://ca.smallstep.com/acme/account" + type test struct { + db acme.DB + linker Linker + statusCode int + ctx context.Context + err *acme.Error + next func(w http.ResponseWriter, r *http.Request) + } + var tests = map[string]func(t *testing.T) test{ + "ok/extract": func(t *testing.T) test { + jwk, err := jose.GenerateJWK("EC", "P-256", "ES256", "sig", "", 0) + assert.FatalError(t, err) + kid, err := jwk.Thumbprint(crypto.SHA256) + assert.FatalError(t, err) + pub := jwk.Public() + pub.KeyID = base64.RawURLEncoding.EncodeToString(kid) + so := new(jose.SignerOptions) + so.WithHeader("jwk", pub) + signer, err := jose.NewSigner(jose.SigningKey{ + Algorithm: jose.SignatureAlgorithm(jwk.Algorithm), + Key: jwk.Key, + }, so) + assert.FatalError(t, err) + signed, err := signer.Sign([]byte("foo")) + assert.FatalError(t, err) + raw, err := signed.CompactSerialize() + assert.FatalError(t, err) + parsedJWS, err := jose.ParseJWS(raw) + assert.FatalError(t, err) + assert.FatalError(t, err) + acc := &acme.Account{Status: "valid"} + return test{ + linker: NewLinker("dns", "acme"), + db: &acme.MockDB{ + MockGetAccountByKeyID: func(ctx context.Context, kid string) (*acme.Account, error) { + assert.Equals(t, kid, pub.KeyID) + return acc, nil + }, + }, + ctx: context.WithValue(context.Background(), jwsContextKey, parsedJWS), + statusCode: 200, + next: func(w http.ResponseWriter, r *http.Request) { + w.Write(testBody) + }, + } + }, + "ok/lookup": func(t *testing.T) test { + prov := newProv() + provName := url.PathEscape(prov.GetName()) + baseURL := &url.URL{Scheme: "https", Host: "test.ca.smallstep.com"} + jwk, err := jose.GenerateJWK("EC", "P-256", "ES256", "sig", "", 0) + assert.FatalError(t, err) + accID := "accID" + prefix := fmt.Sprintf("%s/acme/%s/account/", baseURL, provName) + so := new(jose.SignerOptions) + so.WithHeader("kid", fmt.Sprintf("%s%s", prefix, accID)) + signer, err := jose.NewSigner(jose.SigningKey{ + Algorithm: jose.SignatureAlgorithm(jwk.Algorithm), + Key: jwk.Key, + }, so) + assert.FatalError(t, err) + jws, err := signer.Sign([]byte("baz")) + assert.FatalError(t, err) + raw, err := jws.CompactSerialize() + assert.FatalError(t, err) + parsedJWS, err := jose.ParseJWS(raw) + assert.FatalError(t, err) + assert.FatalError(t, err) + //acc := &acme.Account{Status: "valid", Key: jwk} + acc := &acme.Account{ID: "accID", Key: jwk, Status: "valid"} + ctx := context.WithValue(context.Background(), provisionerContextKey, prov) + ctx = context.WithValue(ctx, baseURLContextKey, baseURL) + ctx = context.WithValue(ctx, jwsContextKey, parsedJWS) + return test{ + linker: NewLinker("test.ca.smallstep.com", "acme"), + db: &acme.MockDB{ + MockGetAccount: func(ctx context.Context, accID string) (*acme.Account, error) { + assert.Equals(t, accID, acc.ID) + return acc, nil + }, + }, + ctx: ctx, + statusCode: 200, + next: func(w http.ResponseWriter, r *http.Request) { + w.Write(testBody) + }, + } + }, + } + for name, prep := range tests { + tc := prep(t) + t.Run(name, func(t *testing.T) { + h := &Handler{db: tc.db, linker: tc.linker} + req := httptest.NewRequest("GET", u, nil) + req = req.WithContext(tc.ctx) + w := httptest.NewRecorder() + h.extractOrLookupJWK(tc.next)(w, req) + res := w.Result() + + assert.Equals(t, res.StatusCode, tc.statusCode) + + body, err := ioutil.ReadAll(res.Body) + res.Body.Close() + assert.FatalError(t, err) + + if res.StatusCode >= 400 && assert.NotNil(t, tc.err) { + var ae acme.Error + assert.FatalError(t, json.Unmarshal(bytes.TrimSpace(body), &ae)) + + assert.Equals(t, ae.Type, tc.err.Type) + assert.Equals(t, ae.Detail, tc.err.Detail) + assert.Equals(t, ae.Identifier, tc.err.Identifier) + assert.Equals(t, ae.Subproblems, tc.err.Subproblems) + assert.Equals(t, res.Header["Content-Type"], []string{"application/problem+json"}) + } else { + assert.Equals(t, bytes.TrimSpace(body), testBody) + } + }) + } +} From 42f56d6906b2e5731457da71f18bc979906d1a0e Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Fri, 12 Nov 2021 17:03:41 +0100 Subject: [PATCH 09/36] Set golangci-lint version to v1.41.0 instead of latest Checking if this solves the issue with new linting issues that, at least locally, seem to have been introduced between v1.41.0 and latest (v1.43.0). --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 96655664..d3cc28e0 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -33,7 +33,7 @@ jobs: uses: golangci/golangci-lint-action@v2 with: # Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version - version: 'latest' + version: 'v1.41.0' # Optional: working directory, useful for monorepos # working-directory: somedir From 29f9730485d1036f09e06f70bba9b21f5016c1a2 Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Fri, 12 Nov 2021 17:13:10 +0100 Subject: [PATCH 10/36] Satisfy golangci-lint --- acme/challenge.go | 7 +++++-- acme/order.go | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/acme/challenge.go b/acme/challenge.go index b880708c..c3f8dde8 100644 --- a/acme/challenge.go +++ b/acme/challenge.go @@ -26,8 +26,11 @@ import ( type ChallengeType string const ( - HTTP01 ChallengeType = "http-01" - DNS01 ChallengeType = "dns-01" + // HTTP01 is the http-01 ACME challenge type + HTTP01 ChallengeType = "http-01" + // DNS01 is the dns-01 ACME challenge type + DNS01 ChallengeType = "dns-01" + // TLSALPN01 is the tls-alpn-01 ACME challenge type TLSALPN01 ChallengeType = "tls-alpn-01" ) diff --git a/acme/order.go b/acme/order.go index 237c6979..bd820da1 100644 --- a/acme/order.go +++ b/acme/order.go @@ -17,7 +17,9 @@ import ( type IdentifierType string const ( - IP IdentifierType = "ip" + // IP is the ACME ip identifier type + IP IdentifierType = "ip" + // DNS is the ACME dns identifier type DNS IdentifierType = "dns" ) From b5db3f5706834b630d6b2e71a594b96cb86f3537 Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Tue, 23 Nov 2021 11:52:55 -0800 Subject: [PATCH 11/36] Modify errs.ForbiddenErr to always return an error to the cli. --- api/api.go | 4 ++-- api/revoke.go | 2 +- api/sign.go | 2 +- api/ssh.go | 6 +++--- api/sshRekey.go | 4 ++-- api/sshRenew.go | 4 ++-- api/sshRevoke.go | 2 +- errs/error.go | 17 +++++++++++------ 8 files changed, 23 insertions(+), 18 deletions(-) diff --git a/api/api.go b/api/api.go index e057caaa..16e24bb2 100644 --- a/api/api.go +++ b/api/api.go @@ -348,7 +348,7 @@ func (h *caHandler) ProvisionerKey(w http.ResponseWriter, r *http.Request) { func (h *caHandler) Roots(w http.ResponseWriter, r *http.Request) { roots, err := h.Authority.GetRoots() if err != nil { - WriteError(w, errs.ForbiddenErr(err)) + WriteError(w, errs.ForbiddenErr(err, "error getting roots")) return } @@ -366,7 +366,7 @@ func (h *caHandler) Roots(w http.ResponseWriter, r *http.Request) { func (h *caHandler) Federation(w http.ResponseWriter, r *http.Request) { federated, err := h.Authority.GetFederation() if err != nil { - WriteError(w, errs.ForbiddenErr(err)) + WriteError(w, errs.ForbiddenErr(err, "error getting federated roots")) return } diff --git a/api/revoke.go b/api/revoke.go index 44d52cb9..25520e3e 100644 --- a/api/revoke.go +++ b/api/revoke.go @@ -96,7 +96,7 @@ func (h *caHandler) Revoke(w http.ResponseWriter, r *http.Request) { } if err := h.Authority.Revoke(ctx, opts); err != nil { - WriteError(w, errs.ForbiddenErr(err)) + WriteError(w, errs.ForbiddenErr(err, "error revoking certificate")) return } diff --git a/api/sign.go b/api/sign.go index a1e5b998..93c5f599 100644 --- a/api/sign.go +++ b/api/sign.go @@ -74,7 +74,7 @@ func (h *caHandler) Sign(w http.ResponseWriter, r *http.Request) { certChain, err := h.Authority.Sign(body.CsrPEM.CertificateRequest, opts, signOpts...) if err != nil { - WriteError(w, errs.ForbiddenErr(err)) + WriteError(w, errs.ForbiddenErr(err, "error signing certificate")) return } certChainPEM := certChainToPEM(certChain) diff --git a/api/ssh.go b/api/ssh.go index 43ee6b98..c9be1527 100644 --- a/api/ssh.go +++ b/api/ssh.go @@ -293,7 +293,7 @@ func (h *caHandler) SSHSign(w http.ResponseWriter, r *http.Request) { cert, err := h.Authority.SignSSH(ctx, publicKey, opts, signOpts...) if err != nil { - WriteError(w, errs.ForbiddenErr(err)) + WriteError(w, errs.ForbiddenErr(err, "error signing ssh certificate")) return } @@ -301,7 +301,7 @@ func (h *caHandler) SSHSign(w http.ResponseWriter, r *http.Request) { if addUserPublicKey != nil && authority.IsValidForAddUser(cert) == nil { addUserCert, err := h.Authority.SignSSHAddUser(ctx, addUserPublicKey, cert) if err != nil { - WriteError(w, errs.ForbiddenErr(err)) + WriteError(w, errs.ForbiddenErr(err, "error signing ssh certificate")) return } addUserCertificate = &SSHCertificate{addUserCert} @@ -326,7 +326,7 @@ func (h *caHandler) SSHSign(w http.ResponseWriter, r *http.Request) { certChain, err := h.Authority.Sign(cr, provisioner.SignOptions{}, signOpts...) if err != nil { - WriteError(w, errs.ForbiddenErr(err)) + WriteError(w, errs.ForbiddenErr(err, "error signing identity certificate")) return } identityCertificate = certChainToPEM(certChain) diff --git a/api/sshRekey.go b/api/sshRekey.go index 8d2ba5ee..b2c55509 100644 --- a/api/sshRekey.go +++ b/api/sshRekey.go @@ -68,7 +68,7 @@ func (h *caHandler) SSHRekey(w http.ResponseWriter, r *http.Request) { newCert, err := h.Authority.RekeySSH(ctx, oldCert, publicKey, signOpts...) if err != nil { - WriteError(w, errs.ForbiddenErr(err)) + WriteError(w, errs.ForbiddenErr(err, "error signing ssh certificate")) return } @@ -78,7 +78,7 @@ func (h *caHandler) SSHRekey(w http.ResponseWriter, r *http.Request) { identity, err := h.renewIdentityCertificate(r, notBefore, notAfter) if err != nil { - WriteError(w, errs.ForbiddenErr(err)) + WriteError(w, errs.ForbiddenErr(err, "error signing identity certificate")) return } diff --git a/api/sshRenew.go b/api/sshRenew.go index 5dfd5983..8d07ba01 100644 --- a/api/sshRenew.go +++ b/api/sshRenew.go @@ -60,7 +60,7 @@ func (h *caHandler) SSHRenew(w http.ResponseWriter, r *http.Request) { newCert, err := h.Authority.RenewSSH(ctx, oldCert) if err != nil { - WriteError(w, errs.ForbiddenErr(err)) + WriteError(w, errs.ForbiddenErr(err, "error signing ssh certificate")) return } @@ -70,7 +70,7 @@ func (h *caHandler) SSHRenew(w http.ResponseWriter, r *http.Request) { identity, err := h.renewIdentityCertificate(r, notBefore, notAfter) if err != nil { - WriteError(w, errs.ForbiddenErr(err)) + WriteError(w, errs.ForbiddenErr(err, "error signing identity certificate")) return } diff --git a/api/sshRevoke.go b/api/sshRevoke.go index cfc25f04..60f44f2a 100644 --- a/api/sshRevoke.go +++ b/api/sshRevoke.go @@ -75,7 +75,7 @@ func (h *caHandler) SSHRevoke(w http.ResponseWriter, r *http.Request) { opts.OTT = body.OTT if err := h.Authority.Revoke(ctx, opts); err != nil { - WriteError(w, errs.ForbiddenErr(err)) + WriteError(w, errs.ForbiddenErr(err, "error revoking ssh certificate")) return } diff --git a/errs/error.go b/errs/error.go index 60312313..2c1fe6a9 100644 --- a/errs/error.go +++ b/errs/error.go @@ -169,7 +169,8 @@ func StatusCodeError(code int, e error, opts ...Option) error { case http.StatusUnauthorized: return UnauthorizedErr(e, opts...) case http.StatusForbidden: - return ForbiddenErr(e, opts...) + opts = append(opts, withDefaultMessage(ForbiddenDefaultMsg)) + return NewErr(http.StatusForbidden, e, opts...) case http.StatusInternalServerError: return InternalServerErr(e, opts...) case http.StatusNotImplemented: @@ -199,12 +200,18 @@ var ( // BadRequestPrefix is the prefix added to the bad request messages that are // directly sent to the cli. BadRequestPrefix = "The request could not be completed: " + + // ForbiddenPrefix is the prefix added to the forbidden messates that are + // sent to the cli. + ForbiddenPrefix = "The request was forbidden by the certificate authority: " ) func formatMessage(status int, msg string) string { switch status { case http.StatusBadRequest: return BadRequestPrefix + msg + "." + case http.StatusForbidden: + return ForbiddenPrefix + msg + "." default: return msg } @@ -356,14 +363,12 @@ func UnauthorizedErr(err error, opts ...Option) error { // Forbidden creates a 403 error with the given format and arguments. func Forbidden(format string, args ...interface{}) error { - args = append(args, withDefaultMessage(ForbiddenDefaultMsg)) - return Errorf(http.StatusForbidden, format, args...) + return New(http.StatusForbidden, format, args...) } // ForbiddenErr returns an 403 error with the given error. -func ForbiddenErr(err error, opts ...Option) error { - opts = append(opts, withDefaultMessage(ForbiddenDefaultMsg)) - return NewErr(http.StatusForbidden, err, opts...) +func ForbiddenErr(err error, format string, args ...interface{}) error { + return NewError(http.StatusForbidden, err, format, args...) } // NotFound creates a 404 error with the given format and arguments. From bb26799583f0c139e0f176592eafe932cba39a5d Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Tue, 23 Nov 2021 12:04:51 -0800 Subject: [PATCH 12/36] Modify errs.Wrap with forbidden errors. --- authority/ssh.go | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/authority/ssh.go b/authority/ssh.go index 9c5405c4..d533374a 100644 --- a/authority/ssh.go +++ b/authority/ssh.go @@ -9,7 +9,6 @@ import ( "strings" "time" - "github.com/pkg/errors" "github.com/smallstep/certificates/authority/config" "github.com/smallstep/certificates/authority/provisioner" "github.com/smallstep/certificates/db" @@ -174,7 +173,7 @@ func (a *Authority) SignSSH(ctx context.Context, key ssh.PublicKey, opts provisi // validate the given SSHOptions case provisioner.SSHCertOptionsValidator: if err := o.Valid(opts); err != nil { - return nil, errs.Wrap(http.StatusForbidden, err, "authority.SignSSH") + return nil, errs.ForbiddenErr(err, "error validating ssh certificate options") } default: @@ -214,7 +213,7 @@ func (a *Authority) SignSSH(ctx context.Context, key ssh.PublicKey, opts provisi // Use provisioner modifiers. for _, m := range mods { if err := m.Modify(certTpl, opts); err != nil { - return nil, errs.Wrap(http.StatusForbidden, err, "authority.SignSSH") + return nil, errs.ForbiddenErr(err, "error creating ssh certificate") } } @@ -244,7 +243,7 @@ func (a *Authority) SignSSH(ctx context.Context, key ssh.PublicKey, opts provisi // User provisioners validators. for _, v := range validators { if err := v.Valid(cert, opts); err != nil { - return nil, errs.Wrap(http.StatusForbidden, err, "authority.SignSSH") + return nil, errs.ForbiddenErr(err, "error validating ssh certificate") } } @@ -382,7 +381,7 @@ func (a *Authority) RekeySSH(ctx context.Context, oldCert *ssh.Certificate, pub // Apply validators from provisioner. for _, v := range validators { if err := v.Valid(cert, provisioner.SignSSHOptions{Backdate: backdate}); err != nil { - return nil, errs.Wrap(http.StatusForbidden, err, "rekeySSH") + return nil, errs.ForbiddenErr(err, "error validating ssh certificate") } } @@ -407,12 +406,12 @@ func (a *Authority) storeSSHCertificate(cert *ssh.Certificate) error { // the given certificate. func IsValidForAddUser(cert *ssh.Certificate) error { if cert.CertType != ssh.UserCert { - return errors.New("certificate is not a user certificate") + return errs.Forbidden("certificate is not a user certificate") } switch len(cert.ValidPrincipals) { case 0: - return errors.New("certificate does not have any principals") + return errs.Forbidden("certificate does not have any principals") case 1: return nil case 2: @@ -421,9 +420,9 @@ func IsValidForAddUser(cert *ssh.Certificate) error { if strings.Index(cert.ValidPrincipals[1], "@") > 0 { return nil } - return errors.New("certificate does not have only one principal") + return errs.Forbidden("certificate does not have only one principal") default: - return errors.New("certificate does not have only one principal") + return errs.Forbidden("certificate does not have only one principal") } } @@ -433,7 +432,7 @@ func (a *Authority) SignSSHAddUser(ctx context.Context, key ssh.PublicKey, subje return nil, errs.NotImplemented("signSSHAddUser: user certificate signing is not enabled") } if err := IsValidForAddUser(subject); err != nil { - return nil, errs.Wrap(http.StatusForbidden, err, "signSSHAddUser") + return nil, err } nonce, err := randutil.ASCII(32) From 031d4d700009d4a8d5cbfdb67b8bfc89bcbf27d6 Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Tue, 23 Nov 2021 17:52:17 -0800 Subject: [PATCH 13/36] Return BadRequest when validating sign options. --- authority/ssh.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/authority/ssh.go b/authority/ssh.go index d533374a..7b8f26e2 100644 --- a/authority/ssh.go +++ b/authority/ssh.go @@ -173,7 +173,7 @@ func (a *Authority) SignSSH(ctx context.Context, key ssh.PublicKey, opts provisi // validate the given SSHOptions case provisioner.SSHCertOptionsValidator: if err := o.Valid(opts); err != nil { - return nil, errs.ForbiddenErr(err, "error validating ssh certificate options") + return nil, errs.BadRequestErr(err, "error validating ssh certificate options") } default: From 1da7ea66464c8128d339da84646d348be88520b4 Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Tue, 23 Nov 2021 17:52:39 -0800 Subject: [PATCH 14/36] Return always http errors in sign ssh options. --- authority/provisioner/sign_ssh_options.go | 61 ++++++++++++----------- 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/authority/provisioner/sign_ssh_options.go b/authority/provisioner/sign_ssh_options.go index 6cd38c59..80ff884e 100644 --- a/authority/provisioner/sign_ssh_options.go +++ b/authority/provisioner/sign_ssh_options.go @@ -58,6 +58,11 @@ func (o SignSSHOptions) Validate() error { if o.CertType != "" && o.CertType != SSHUserCert && o.CertType != SSHHostCert { return errs.BadRequest("unknown certificate type '%s'", o.CertType) } + for _, p := range o.Principals { + if p == "" { + return errs.BadRequest("principals cannot contain empty values") + } + } return nil } @@ -75,7 +80,7 @@ func (o SignSSHOptions) Modify(cert *ssh.Certificate, _ SignSSHOptions) error { case SSHHostCert: cert.CertType = ssh.HostCert default: - return errors.Errorf("ssh certificate has an unknown type - %s", o.CertType) + return errs.BadRequest("ssh certificate has an unknown type '%s'", o.CertType) } cert.KeyId = o.KeyID @@ -95,7 +100,7 @@ func (o SignSSHOptions) ModifyValidity(cert *ssh.Certificate) error { cert.ValidBefore = uint64(o.ValidBefore.RelativeTime(t).Unix()) } if cert.ValidAfter > 0 && cert.ValidBefore > 0 && cert.ValidAfter > cert.ValidBefore { - return errors.New("ssh certificate valid after cannot be greater than valid before") + return errs.BadRequest("ssh certificate validAfter cannot be greater than validBefore") } return nil } @@ -104,16 +109,16 @@ func (o SignSSHOptions) ModifyValidity(cert *ssh.Certificate) error { // ignores zero values. func (o SignSSHOptions) match(got SignSSHOptions) error { if o.CertType != "" && got.CertType != "" && o.CertType != got.CertType { - return errors.Errorf("ssh certificate type does not match - got %v, want %v", got.CertType, o.CertType) + return errs.BadRequest("ssh certificate type does not match - got %v, want %v", got.CertType, o.CertType) } if len(o.Principals) > 0 && len(got.Principals) > 0 && !containsAllMembers(o.Principals, got.Principals) { - return errors.Errorf("ssh certificate principals does not match - got %v, want %v", got.Principals, o.Principals) + return errs.BadRequest("ssh certificate principals does not match - got %v, want %v", got.Principals, o.Principals) } if !o.ValidAfter.IsZero() && !got.ValidAfter.IsZero() && !o.ValidAfter.Equal(&got.ValidAfter) { - return errors.Errorf("ssh certificate valid after does not match - got %v, want %v", got.ValidAfter, o.ValidAfter) + return errs.BadRequest("ssh certificate validAfter does not match - got %v, want %v", got.ValidAfter, o.ValidAfter) } if !o.ValidBefore.IsZero() && !got.ValidBefore.IsZero() && !o.ValidBefore.Equal(&got.ValidBefore) { - return errors.Errorf("ssh certificate valid before does not match - got %v, want %v", got.ValidBefore, o.ValidBefore) + return errs.BadRequest("ssh certificate validBefore does not match - got %v, want %v", got.ValidBefore, o.ValidBefore) } return nil } @@ -206,7 +211,7 @@ func (m *sshDefaultExtensionModifier) Modify(cert *ssh.Certificate, _ SignSSHOpt cert.Extensions["permit-user-rc"] = "" return nil default: - return errors.New("ssh certificate type has not been set or is invalid") + return errs.BadRequest("ssh certificate has an unknown type '%d'", cert.CertType) } } @@ -272,7 +277,7 @@ func (m *sshLimitDuration) Modify(cert *ssh.Certificate, o SignSSHOptions) error certValidAfter := time.Unix(int64(cert.ValidAfter), 0) if certValidAfter.After(m.NotAfter) { - return errors.Errorf("provisioning credential expiration (%s) is before requested certificate validAfter (%s)", + return errs.Forbidden("provisioning credential expiration (%s) is before requested certificate validAfter (%s)", m.NotAfter, certValidAfter) } @@ -285,7 +290,7 @@ func (m *sshLimitDuration) Modify(cert *ssh.Certificate, o SignSSHOptions) error } else { certValidBefore := time.Unix(int64(cert.ValidBefore), 0) if m.NotAfter.Before(certValidBefore) { - return errors.Errorf("provisioning credential expiration (%s) is before requested certificate validBefore (%s)", + return errs.Forbidden("provisioning credential expiration (%s) is before requested certificate validBefore (%s)", m.NotAfter, certValidBefore) } } @@ -319,11 +324,11 @@ type sshCertOptionsRequireValidator struct { func (v *sshCertOptionsRequireValidator) Valid(got SignSSHOptions) error { switch { case v.CertType && got.CertType == "": - return errors.New("ssh certificate certType cannot be empty") + return errs.BadRequest("ssh certificate certType cannot be empty") case v.KeyID && got.KeyID == "": - return errors.New("ssh certificate keyID cannot be empty") + return errs.BadRequest("ssh certificate keyID cannot be empty") case v.Principals && len(got.Principals) == 0: - return errors.New("ssh certificate principals cannot be empty") + return errs.BadRequest("ssh certificate principals cannot be empty") default: return nil } @@ -354,7 +359,7 @@ func (v *sshCertValidityValidator) Valid(cert *ssh.Certificate, opts SignSSHOpti case 0: return errs.BadRequest("ssh certificate type has not been set") default: - return errs.BadRequest("unknown ssh certificate type %d", cert.CertType) + return errs.BadRequest("unknown ssh certificate type '%d'", cert.CertType) } // To not take into account the backdate, time.Now() will be used to @@ -381,25 +386,25 @@ type sshCertDefaultValidator struct{} func (v *sshCertDefaultValidator) Valid(cert *ssh.Certificate, o SignSSHOptions) error { switch { case len(cert.Nonce) == 0: - return errors.New("ssh certificate nonce cannot be empty") + return errs.Forbidden("ssh certificate nonce cannot be empty") case cert.Key == nil: - return errors.New("ssh certificate key cannot be nil") + return errs.Forbidden("ssh certificate key cannot be nil") case cert.Serial == 0: - return errors.New("ssh certificate serial cannot be 0") + return errs.Forbidden("ssh certificate serial cannot be 0") case cert.CertType != ssh.UserCert && cert.CertType != ssh.HostCert: - return errors.Errorf("ssh certificate has an unknown type: %d", cert.CertType) + return errs.Forbidden("ssh certificate has an unknown type '%d'", cert.CertType) case cert.KeyId == "": - return errors.New("ssh certificate key id cannot be empty") + return errs.Forbidden("ssh certificate key id cannot be empty") case cert.ValidAfter == 0: - return errors.New("ssh certificate validAfter cannot be 0") + return errs.Forbidden("ssh certificate validAfter cannot be 0") case cert.ValidBefore < uint64(now().Unix()): - return errors.New("ssh certificate validBefore cannot be in the past") + return errs.Forbidden("ssh certificate validBefore cannot be in the past") case cert.ValidBefore < cert.ValidAfter: - return errors.New("ssh certificate validBefore cannot be before validAfter") + return errs.Forbidden("ssh certificate validBefore cannot be before validAfter") case cert.SignatureKey == nil: - return errors.New("ssh certificate signature key cannot be nil") + return errs.Forbidden("ssh certificate signature key cannot be nil") case cert.Signature == nil: - return errors.New("ssh certificate signature cannot be nil") + return errs.Forbidden("ssh certificate signature cannot be nil") default: return nil } @@ -411,25 +416,25 @@ type sshDefaultPublicKeyValidator struct{} // Valid checks that certificate request common name matches the one configured. func (v sshDefaultPublicKeyValidator) Valid(cert *ssh.Certificate, o SignSSHOptions) error { if cert.Key == nil { - return errors.New("ssh certificate key cannot be nil") + return errs.BadRequest("ssh certificate key cannot be nil") } switch cert.Key.Type() { case ssh.KeyAlgoRSA: _, in, ok := sshParseString(cert.Key.Marshal()) if !ok { - return errors.New("ssh certificate key is invalid") + return errs.BadRequest("ssh certificate key is invalid") } key, err := sshParseRSAPublicKey(in) if err != nil { - return err + return errs.BadRequestErr(err, "error parsing public key") } if key.Size() < keyutil.MinRSAKeyBytes { - return errors.Errorf("ssh certificate key must be at least %d bits (%d bytes)", + return errs.Forbidden("ssh certificate key must be at least %d bits (%d bytes)", 8*keyutil.MinRSAKeyBytes, keyutil.MinRSAKeyBytes) } return nil case ssh.KeyAlgoDSA: - return errors.New("ssh certificate key algorithm (DSA) is not supported") + return errs.BadRequest("ssh certificate key algorithm (DSA) is not supported") default: return nil } From a33709ce8df12143169dd1d6eb2187e66d58fac3 Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Tue, 23 Nov 2021 18:06:18 -0800 Subject: [PATCH 15/36] Fix sign ssh options tests. --- authority/provisioner/sign_ssh_options.go | 4 ++-- authority/provisioner/sign_ssh_options_test.go | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/authority/provisioner/sign_ssh_options.go b/authority/provisioner/sign_ssh_options.go index 80ff884e..30293947 100644 --- a/authority/provisioner/sign_ssh_options.go +++ b/authority/provisioner/sign_ssh_options.go @@ -56,7 +56,7 @@ type SignSSHOptions struct { // Validate validates the given SignSSHOptions. func (o SignSSHOptions) Validate() error { if o.CertType != "" && o.CertType != SSHUserCert && o.CertType != SSHHostCert { - return errs.BadRequest("unknown certificate type '%s'", o.CertType) + return errs.BadRequest("certType '%s' is not valid", o.CertType) } for _, p := range o.Principals { if p == "" { @@ -359,7 +359,7 @@ func (v *sshCertValidityValidator) Valid(cert *ssh.Certificate, opts SignSSHOpti case 0: return errs.BadRequest("ssh certificate type has not been set") default: - return errs.BadRequest("unknown ssh certificate type '%d'", cert.CertType) + return errs.BadRequest("ssh certificate has an unknown type '%d'", cert.CertType) } // To not take into account the backdate, time.Now() will be used to diff --git a/authority/provisioner/sign_ssh_options_test.go b/authority/provisioner/sign_ssh_options_test.go index 3a1ff324..b59d6945 100644 --- a/authority/provisioner/sign_ssh_options_test.go +++ b/authority/provisioner/sign_ssh_options_test.go @@ -49,14 +49,14 @@ func TestSSHOptions_Modify(t *testing.T) { return test{ so: SignSSHOptions{CertType: "foo"}, cert: new(ssh.Certificate), - err: errors.Errorf("ssh certificate has an unknown type - foo"), + err: errors.Errorf("ssh certificate has an unknown type 'foo'"), } }, "fail/validAfter-greater-validBefore": func() test { return test{ so: SignSSHOptions{CertType: "user"}, cert: &ssh.Certificate{ValidAfter: uint64(15), ValidBefore: uint64(10)}, - err: errors.Errorf("ssh certificate valid after cannot be greater than valid before"), + err: errors.Errorf("ssh certificate validAfter cannot be greater than validBefore"), } }, "ok/user-cert": func() test { @@ -136,14 +136,14 @@ func TestSSHOptions_Match(t *testing.T) { return test{ so: SignSSHOptions{ValidAfter: NewTimeDuration(time.Now().Add(1 * time.Minute))}, cmp: SignSSHOptions{ValidAfter: NewTimeDuration(time.Now().Add(5 * time.Minute))}, - err: errors.Errorf("ssh certificate valid after does not match"), + err: errors.Errorf("ssh certificate validAfter does not match"), } }, "fail/validBefore": func() test { return test{ so: SignSSHOptions{ValidBefore: NewTimeDuration(time.Now().Add(1 * time.Minute))}, cmp: SignSSHOptions{ValidBefore: NewTimeDuration(time.Now().Add(5 * time.Minute))}, - err: errors.Errorf("ssh certificate valid before does not match"), + err: errors.Errorf("ssh certificate validBefore does not match"), } }, "ok/original-empty": func() test { @@ -394,7 +394,7 @@ func Test_sshDefaultExtensionModifier_Modify(t *testing.T) { return test{ modifier: sshDefaultExtensionModifier{}, cert: cert, - err: errors.New("ssh certificate type has not been set or is invalid"), + err: errors.New("ssh certificate has an unknown type '3'"), } }, "ok/host": func() test { @@ -518,7 +518,7 @@ func Test_sshCertDefaultValidator_Valid(t *testing.T) { "fail/unexpected-cert-type", // UserCert = 1, HostCert = 2 &ssh.Certificate{Nonce: []byte("foo"), Key: sshPub, CertType: 3, Serial: 1}, - errors.New("ssh certificate has an unknown type: 3"), + errors.New("ssh certificate has an unknown type '3'"), }, { "fail/empty-cert-key-id", @@ -725,7 +725,7 @@ func Test_sshCertValidityValidator(t *testing.T) { ValidBefore: uint64(now().Add(10 * time.Minute).Unix()), }, SignSSHOptions{}, - errors.New("unknown ssh certificate type 3"), + errors.New("ssh certificate has an unknown type '3'"), }, { "fail/duration Date: Tue, 23 Nov 2021 18:32:33 -0800 Subject: [PATCH 16/36] Return always http errors in sign options. --- authority/provisioner/sign_options.go | 61 ++++++++++++++------------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/authority/provisioner/sign_options.go b/authority/provisioner/sign_options.go index c4779ea3..167d371a 100644 --- a/authority/provisioner/sign_options.go +++ b/authority/provisioner/sign_options.go @@ -9,12 +9,14 @@ import ( "encoding/asn1" "encoding/json" "net" + "net/http" "net/url" "reflect" "time" "github.com/pkg/errors" "github.com/smallstep/certificates/errs" + "go.step.sm/crypto/keyutil" "go.step.sm/crypto/x509util" ) @@ -83,19 +85,19 @@ type emailOnlyIdentity string func (e emailOnlyIdentity) Valid(req *x509.CertificateRequest) error { switch { case len(req.DNSNames) > 0: - return errors.New("certificate request cannot contain DNS names") + return errs.BadRequest("certificate request cannot contain DNS names") case len(req.IPAddresses) > 0: - return errors.New("certificate request cannot contain IP addresses") + return errs.BadRequest("certificate request cannot contain IP addresses") case len(req.URIs) > 0: - return errors.New("certificate request cannot contain URIs") + return errs.BadRequest("certificate request cannot contain URIs") case len(req.EmailAddresses) == 0: - return errors.New("certificate request does not contain any email address") + return errs.BadRequest("certificate request does not contain any email address") case len(req.EmailAddresses) > 1: - return errors.New("certificate request contains too many email addresses") + return errs.BadRequest("certificate request contains too many email addresses") case req.EmailAddresses[0] == "": - return errors.New("certificate request cannot contain an empty email address") + return errs.BadRequest("certificate request cannot contain an empty email address") case req.EmailAddresses[0] != string(e): - return errors.Errorf("certificate request does not contain the valid email address, got %s, want %s", req.EmailAddresses[0], e) + return errs.BadRequest("certificate request does not contain the valid email address - got %s, want %s", req.EmailAddresses[0], e) default: return nil } @@ -108,12 +110,13 @@ type defaultPublicKeyValidator struct{} func (v defaultPublicKeyValidator) Valid(req *x509.CertificateRequest) error { switch k := req.PublicKey.(type) { case *rsa.PublicKey: - if k.Size() < 256 { - return errors.New("rsa key in CSR must be at least 2048 bits (256 bytes)") + if k.Size() < keyutil.MinRSAKeyBytes { + return errs.Forbidden("certificate request RSA key must be at least %d bits (%d bytes)", + 8*keyutil.MinRSAKeyBytes, keyutil.MinRSAKeyBytes) } case *ecdsa.PublicKey, ed25519.PublicKey: default: - return errors.Errorf("unrecognized public key of type '%T' in CSR", k) + return errs.BadRequest("certificate request key of type '%T' is not supported", k) } return nil } @@ -139,11 +142,12 @@ func (v publicKeyMinimumLengthValidator) Valid(req *x509.CertificateRequest) err case *rsa.PublicKey: minimumLengthInBytes := v.length / 8 if k.Size() < minimumLengthInBytes { - return errors.Errorf("rsa key in CSR must be at least %d bits (%d bytes)", v.length, minimumLengthInBytes) + return errs.Forbidden("certificate request RSA key must be at least %d bits (%d bytes)", + v.length, minimumLengthInBytes) } case *ecdsa.PublicKey, ed25519.PublicKey: default: - return errors.Errorf("unrecognized public key of type '%T' in CSR", k) + return errs.BadRequest("certificate request key of type '%T' is not supported", k) } return nil } @@ -158,7 +162,7 @@ func (v commonNameValidator) Valid(req *x509.CertificateRequest) error { return nil } if req.Subject.CommonName != string(v) { - return errors.Errorf("certificate request does not contain the valid common name; requested common name = %s, token subject = %s", req.Subject.CommonName, v) + return errs.BadRequest("certificate request does not contain the valid common name - got %s, want %s", req.Subject.CommonName, v) } return nil } @@ -176,7 +180,7 @@ func (v commonNameSliceValidator) Valid(req *x509.CertificateRequest) error { return nil } } - return errors.Errorf("certificate request does not contain the valid common name, got %s, want %s", req.Subject.CommonName, v) + return errs.BadRequest("certificate request does not contain the valid common name - got %s, want %s", req.Subject.CommonName, v) } // dnsNamesValidator validates the DNS names SAN of a certificate request. @@ -197,7 +201,7 @@ func (v dnsNamesValidator) Valid(req *x509.CertificateRequest) error { got[s] = true } if !reflect.DeepEqual(want, got) { - return errors.Errorf("certificate request does not contain the valid DNS names - got %v, want %v", req.DNSNames, v) + return errs.BadRequest("certificate request does not contain the valid DNS names - got %v, want %v", req.DNSNames, v) } return nil } @@ -220,7 +224,7 @@ func (v ipAddressesValidator) Valid(req *x509.CertificateRequest) error { got[ip.String()] = true } if !reflect.DeepEqual(want, got) { - return errors.Errorf("IP Addresses claim failed - got %v, want %v", req.IPAddresses, v) + return errs.BadRequest("certificate request does not contain the valid IP addresses - got %v, want %v", req.IPAddresses, v) } return nil } @@ -243,7 +247,7 @@ func (v emailAddressesValidator) Valid(req *x509.CertificateRequest) error { got[s] = true } if !reflect.DeepEqual(want, got) { - return errors.Errorf("certificate request does not contain the valid Email Addresses - got %v, want %v", req.EmailAddresses, v) + return errs.BadRequest("certificate request does not contain the valid email addresses - got %v, want %v", req.EmailAddresses, v) } return nil } @@ -266,7 +270,7 @@ func (v urisValidator) Valid(req *x509.CertificateRequest) error { got[u.String()] = true } if !reflect.DeepEqual(want, got) { - return errors.Errorf("URIs claim failed - got %v, want %v", req.URIs, v) + return errs.BadRequest("certificate request does not contain the valid URIs - got %v, want %v", req.URIs, v) } return nil } @@ -334,15 +338,15 @@ func (v profileLimitDuration) Modify(cert *x509.Certificate, so SignOptions) err backdate = -1 * so.Backdate } if notBefore.Before(v.notBefore) { - return errors.Errorf("requested certificate notBefore (%s) is before "+ - "the active validity window of the provisioning credential (%s)", + return errs.Forbidden( + "requested certificate notBefore (%s) is before the active validity window of the provisioning credential (%s)", notBefore, v.notBefore) } notAfter := so.NotAfter.RelativeTime(notBefore) if notAfter.After(v.notAfter) { - return errors.Errorf("requested certificate notAfter (%s) is after "+ - "the expiration of the provisioning credential (%s)", + return errs.Forbidden( + "requested certificate notAfter (%s) is after the expiration of the provisioning credential (%s)", notAfter, v.notAfter) } if notAfter.IsZero() { @@ -422,16 +426,15 @@ func newForceCNOption(forceCN bool) *forceCNOption { func (o *forceCNOption) Modify(cert *x509.Certificate, _ SignOptions) error { if !o.ForceCN { - // Forcing CN is disabled, do nothing to certificate return nil } + // Force the common name to be the first DNS if not provided. if cert.Subject.CommonName == "" { - if len(cert.DNSNames) > 0 { - cert.Subject.CommonName = cert.DNSNames[0] - } else { - return errors.New("Cannot force CN, DNSNames is empty") + if len(cert.DNSNames) == 0 { + return errs.Forbidden("cannot force common name, DNS names is empty") } + cert.Subject.CommonName = cert.DNSNames[0] } return nil @@ -456,7 +459,7 @@ func newProvisionerExtensionOption(typ Type, name, credentialID string, keyValue func (o *provisionerExtensionOption) Modify(cert *x509.Certificate, _ SignOptions) error { ext, err := createProvisionerExtension(o.Type, o.Name, o.CredentialID, o.KeyValuePairs...) if err != nil { - return err + return errs.NewError(http.StatusInternalServerError, err, "error creating certificate") } // Prepend the provisioner extension. In the auth.Sign code we will // force the resulting certificate to only have one extension, the @@ -477,7 +480,7 @@ func createProvisionerExtension(typ int, name, credentialID string, keyValuePair KeyValuePairs: keyValuePairs, }) if err != nil { - return pkix.Extension{}, errors.Wrapf(err, "error marshaling provisioner extension") + return pkix.Extension{}, errors.Wrap(err, "error marshaling provisioner extension") } return pkix.Extension{ Id: stepOIDProvisioner, From b9beab071d133c88354da80bd240e72abdc503ed Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Tue, 23 Nov 2021 18:43:36 -0800 Subject: [PATCH 17/36] Fix unit tests. --- authority/provisioner/sign_options_test.go | 12 ++++++------ authority/tls_test.go | 6 +++--- ca/ca_test.go | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/authority/provisioner/sign_options_test.go b/authority/provisioner/sign_options_test.go index cf8f7a54..32b8e3c6 100644 --- a/authority/provisioner/sign_options_test.go +++ b/authority/provisioner/sign_options_test.go @@ -77,12 +77,12 @@ func Test_defaultPublicKeyValidator_Valid(t *testing.T) { { "fail/unrecognized-key-type", &x509.CertificateRequest{PublicKey: "foo"}, - errors.New("unrecognized public key of type 'string' in CSR"), + errors.New("certificate request key of type 'string' is not supported"), }, { "fail/rsa/too-short", shortRSA, - errors.New("rsa key in CSR must be at least 2048 bits (256 bytes)"), + errors.New("certificate request RSA key must be at least 2048 bits (256 bytes)"), }, { "ok/rsa", @@ -303,14 +303,14 @@ func Test_defaultSANsValidator_Valid(t *testing.T) { return test{ csr: &x509.CertificateRequest{EmailAddresses: []string{"max@fx.com", "mariano@fx.com"}}, expectedSANs: []string{"dcow@fx.com"}, - err: errors.New("certificate request does not contain the valid Email Addresses"), + err: errors.New("certificate request does not contain the valid email addresses"), } }, "fail/ipAddressesValidator": func() test { return test{ csr: &x509.CertificateRequest{IPAddresses: []net.IP{net.ParseIP("1.1.1.1"), net.ParseIP("127.0.0.1")}}, expectedSANs: []string{"127.0.0.1"}, - err: errors.New("IP Addresses claim failed"), + err: errors.New("certificate request does not contain the valid IP addresses"), } }, "fail/urisValidator": func() test { @@ -321,7 +321,7 @@ func Test_defaultSANsValidator_Valid(t *testing.T) { return test{ csr: &x509.CertificateRequest{URIs: []*url.URL{u1, u2}}, expectedSANs: []string{"urn:uuid:ddfe62ba-7e99-4bc1-83b3-8f57fe3e9959"}, - err: errors.New("URIs claim failed"), + err: errors.New("certificate request does not contain the valid URIs"), } }, "ok": func() test { @@ -512,7 +512,7 @@ func Test_forceCN_Option(t *testing.T) { Subject: pkix.Name{}, DNSNames: []string{}, }, - err: errors.New("Cannot force CN, DNSNames is empty"), + err: errors.New("cannot force common name, DNS names is empty"), } }, } diff --git a/authority/tls_test.go b/authority/tls_test.go index 03beb5c1..e61025a6 100644 --- a/authority/tls_test.go +++ b/authority/tls_test.go @@ -323,7 +323,7 @@ func TestAuthority_Sign(t *testing.T) { extraOpts: extraOpts, signOpts: signOpts, err: errors.New("authority.Sign: certificate request does not contain the valid DNS names - got [test.smallstep.com smallstep test], want [test.smallstep.com]"), - code: http.StatusUnauthorized, + code: http.StatusBadRequest, } }, "fail rsa key too short": func(t *testing.T) *signTest { @@ -348,8 +348,8 @@ ZYtQ9Ot36qc= csr: csr, extraOpts: extraOpts, signOpts: signOpts, - err: errors.New("authority.Sign: rsa key in CSR must be at least 2048 bits (256 bytes)"), - code: http.StatusUnauthorized, + err: errors.New("authority.Sign: certificate request RSA key must be at least 2048 bits (256 bytes)"), + code: http.StatusForbidden, } }, "fail store cert in db": func(t *testing.T) *signTest { diff --git a/ca/ca_test.go b/ca/ca_test.go index 1271659a..05dca027 100644 --- a/ca/ca_test.go +++ b/ca/ca_test.go @@ -200,8 +200,8 @@ ZEp7knvU2psWRw== return &signTest{ ca: ca, body: string(body), - status: http.StatusUnauthorized, - errMsg: errs.UnauthorizedDefaultMsg, + status: http.StatusBadRequest, + errMsg: errs.BadRequestPrefix, } }, "ok": func(t *testing.T) *signTest { From ff04873a2a60dbb7688fff955d2947cce9966ced Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Tue, 23 Nov 2021 18:58:16 -0800 Subject: [PATCH 18/36] Change the default error type to forbidden in Sign. The errors will also be propagated from sign options. --- authority/tls.go | 25 ++++++++++++++++++++----- authority/tls_test.go | 10 +++++----- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/authority/tls.go b/authority/tls.go index 716d8956..7853198e 100644 --- a/authority/tls.go +++ b/authority/tls.go @@ -94,7 +94,10 @@ func (a *Authority) Sign(csr *x509.CertificateRequest, signOpts provisioner.Sign // Validate the given certificate request. case provisioner.CertificateRequestValidator: if err := k.Valid(csr); err != nil { - return nil, errs.Wrap(http.StatusUnauthorized, err, "authority.Sign", opts...) + return nil, errs.ApplyOptions( + errs.ForbiddenErr(err, "error validating certificate"), + opts..., + ) } // Validates the unsigned certificate template. @@ -131,26 +134,38 @@ func (a *Authority) Sign(csr *x509.CertificateRequest, signOpts provisioner.Sign // Set default subject if err := withDefaultASN1DN(a.config.AuthorityConfig.Template).Modify(leaf, signOpts); err != nil { - return nil, errs.Wrap(http.StatusUnauthorized, err, "authority.Sign", opts...) + return nil, errs.ApplyOptions( + errs.ForbiddenErr(err, "error creating certificate"), + opts..., + ) } for _, m := range certModifiers { if err := m.Modify(leaf, signOpts); err != nil { - return nil, errs.Wrap(http.StatusUnauthorized, err, "authority.Sign", opts...) + return nil, errs.ApplyOptions( + errs.ForbiddenErr(err, "error creating certificate"), + opts..., + ) } } // Certificate validation. for _, v := range certValidators { if err := v.Valid(leaf, signOpts); err != nil { - return nil, errs.Wrap(http.StatusUnauthorized, err, "authority.Sign", opts...) + return nil, errs.ApplyOptions( + errs.ForbiddenErr(err, "error validating certificate"), + opts..., + ) } } // Certificate modifiers after validation for _, m := range certEnforcers { if err := m.Enforce(leaf); err != nil { - return nil, errs.Wrap(http.StatusUnauthorized, err, "authority.Sign", opts...) + return nil, errs.ApplyOptions( + errs.ForbiddenErr(err, "error creating certificate"), + opts..., + ) } } diff --git a/authority/tls_test.go b/authority/tls_test.go index e61025a6..41354e8d 100644 --- a/authority/tls_test.go +++ b/authority/tls_test.go @@ -281,8 +281,8 @@ func TestAuthority_Sign(t *testing.T) { csr: csr, extraOpts: extraOpts, signOpts: signOpts, - err: errors.New("authority.Sign: default ASN1DN template cannot be nil"), - code: http.StatusUnauthorized, + err: errors.New("default ASN1DN template cannot be nil"), + code: http.StatusForbidden, } }, "fail create cert": func(t *testing.T) *signTest { @@ -309,7 +309,7 @@ func TestAuthority_Sign(t *testing.T) { csr: csr, extraOpts: extraOpts, signOpts: _signOpts, - err: errors.New("authority.Sign: requested duration of 25h0m0s is more than the authorized maximum certificate duration of 24h1m0s"), + err: errors.New("requested duration of 25h0m0s is more than the authorized maximum certificate duration of 24h1m0s"), code: http.StatusBadRequest, } }, @@ -322,7 +322,7 @@ func TestAuthority_Sign(t *testing.T) { csr: csr, extraOpts: extraOpts, signOpts: signOpts, - err: errors.New("authority.Sign: certificate request does not contain the valid DNS names - got [test.smallstep.com smallstep test], want [test.smallstep.com]"), + err: errors.New("certificate request does not contain the valid DNS names - got [test.smallstep.com smallstep test], want [test.smallstep.com]"), code: http.StatusBadRequest, } }, @@ -348,7 +348,7 @@ ZYtQ9Ot36qc= csr: csr, extraOpts: extraOpts, signOpts: signOpts, - err: errors.New("authority.Sign: certificate request RSA key must be at least 2048 bits (256 bytes)"), + err: errors.New("certificate request RSA key must be at least 2048 bits (256 bytes)"), code: http.StatusForbidden, } }, From c3f98fd04d201c7f65d1b6b8af9128677129f9f0 Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Wed, 24 Nov 2021 11:32:35 -0800 Subject: [PATCH 19/36] Change some bad requests to forbidded. Change in the sign options bad requests to forbidded if is the provisioner the one adding a restriction, e.g. list of dns names, validity, ... --- authority/provisioner/sign_options.go | 32 +++++++++++------------ authority/provisioner/sign_ssh_options.go | 12 ++++----- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/authority/provisioner/sign_options.go b/authority/provisioner/sign_options.go index 167d371a..34b2e99b 100644 --- a/authority/provisioner/sign_options.go +++ b/authority/provisioner/sign_options.go @@ -85,19 +85,19 @@ type emailOnlyIdentity string func (e emailOnlyIdentity) Valid(req *x509.CertificateRequest) error { switch { case len(req.DNSNames) > 0: - return errs.BadRequest("certificate request cannot contain DNS names") + return errs.Forbidden("certificate request cannot contain DNS names") case len(req.IPAddresses) > 0: - return errs.BadRequest("certificate request cannot contain IP addresses") + return errs.Forbidden("certificate request cannot contain IP addresses") case len(req.URIs) > 0: - return errs.BadRequest("certificate request cannot contain URIs") + return errs.Forbidden("certificate request cannot contain URIs") case len(req.EmailAddresses) == 0: - return errs.BadRequest("certificate request does not contain any email address") + return errs.Forbidden("certificate request does not contain any email address") case len(req.EmailAddresses) > 1: - return errs.BadRequest("certificate request contains too many email addresses") + return errs.Forbidden("certificate request contains too many email addresses") case req.EmailAddresses[0] == "": - return errs.BadRequest("certificate request cannot contain an empty email address") + return errs.Forbidden("certificate request cannot contain an empty email address") case req.EmailAddresses[0] != string(e): - return errs.BadRequest("certificate request does not contain the valid email address - got %s, want %s", req.EmailAddresses[0], e) + return errs.Forbidden("certificate request does not contain the valid email address - got %s, want %s", req.EmailAddresses[0], e) default: return nil } @@ -162,7 +162,7 @@ func (v commonNameValidator) Valid(req *x509.CertificateRequest) error { return nil } if req.Subject.CommonName != string(v) { - return errs.BadRequest("certificate request does not contain the valid common name - got %s, want %s", req.Subject.CommonName, v) + return errs.Forbidden("certificate request does not contain the valid common name - got %s, want %s", req.Subject.CommonName, v) } return nil } @@ -180,7 +180,7 @@ func (v commonNameSliceValidator) Valid(req *x509.CertificateRequest) error { return nil } } - return errs.BadRequest("certificate request does not contain the valid common name - got %s, want %s", req.Subject.CommonName, v) + return errs.Forbidden("certificate request does not contain the valid common name - got %s, want %s", req.Subject.CommonName, v) } // dnsNamesValidator validates the DNS names SAN of a certificate request. @@ -201,7 +201,7 @@ func (v dnsNamesValidator) Valid(req *x509.CertificateRequest) error { got[s] = true } if !reflect.DeepEqual(want, got) { - return errs.BadRequest("certificate request does not contain the valid DNS names - got %v, want %v", req.DNSNames, v) + return errs.Forbidden("certificate request does not contain the valid DNS names - got %v, want %v", req.DNSNames, v) } return nil } @@ -224,7 +224,7 @@ func (v ipAddressesValidator) Valid(req *x509.CertificateRequest) error { got[ip.String()] = true } if !reflect.DeepEqual(want, got) { - return errs.BadRequest("certificate request does not contain the valid IP addresses - got %v, want %v", req.IPAddresses, v) + return errs.Forbidden("certificate request does not contain the valid IP addresses - got %v, want %v", req.IPAddresses, v) } return nil } @@ -247,7 +247,7 @@ func (v emailAddressesValidator) Valid(req *x509.CertificateRequest) error { got[s] = true } if !reflect.DeepEqual(want, got) { - return errs.BadRequest("certificate request does not contain the valid email addresses - got %v, want %v", req.EmailAddresses, v) + return errs.Forbidden("certificate request does not contain the valid email addresses - got %v, want %v", req.EmailAddresses, v) } return nil } @@ -270,7 +270,7 @@ func (v urisValidator) Valid(req *x509.CertificateRequest) error { got[u.String()] = true } if !reflect.DeepEqual(want, got) { - return errs.BadRequest("certificate request does not contain the valid URIs - got %v, want %v", req.URIs, v) + return errs.Forbidden("certificate request does not contain the valid URIs - got %v, want %v", req.URIs, v) } return nil } @@ -392,14 +392,14 @@ func (v *validityValidator) Valid(cert *x509.Certificate, o SignOptions) error { return errs.BadRequest("notAfter cannot be before notBefore; na=%v, nb=%v", na, nb) } if d < v.min { - return errs.BadRequest("requested duration of %v is less than the authorized minimum certificate duration of %v", d, v.min) + return errs.Forbidden("requested duration of %v is less than the authorized minimum certificate duration of %v", d, v.min) } // NOTE: this check is not "technically correct". We're allowing the max // duration of a cert to be "max + backdate" and not all certificates will // be backdated (e.g. if a user passes the NotBefore value then we do not // apply a backdate). This is good enough. if d > v.max+o.Backdate { - return errs.BadRequest("requested duration of %v is more than the authorized maximum certificate duration of %v", d, v.max+o.Backdate) + return errs.Forbidden("requested duration of %v is more than the authorized maximum certificate duration of %v", d, v.max+o.Backdate) } return nil } @@ -432,7 +432,7 @@ func (o *forceCNOption) Modify(cert *x509.Certificate, _ SignOptions) error { // Force the common name to be the first DNS if not provided. if cert.Subject.CommonName == "" { if len(cert.DNSNames) == 0 { - return errs.Forbidden("cannot force common name, DNS names is empty") + return errs.BadRequest("cannot force common name, DNS names is empty") } cert.Subject.CommonName = cert.DNSNames[0] } diff --git a/authority/provisioner/sign_ssh_options.go b/authority/provisioner/sign_ssh_options.go index 30293947..01634dad 100644 --- a/authority/provisioner/sign_ssh_options.go +++ b/authority/provisioner/sign_ssh_options.go @@ -109,16 +109,16 @@ func (o SignSSHOptions) ModifyValidity(cert *ssh.Certificate) error { // ignores zero values. func (o SignSSHOptions) match(got SignSSHOptions) error { if o.CertType != "" && got.CertType != "" && o.CertType != got.CertType { - return errs.BadRequest("ssh certificate type does not match - got %v, want %v", got.CertType, o.CertType) + return errs.Forbidden("ssh certificate type does not match - got %v, want %v", got.CertType, o.CertType) } if len(o.Principals) > 0 && len(got.Principals) > 0 && !containsAllMembers(o.Principals, got.Principals) { - return errs.BadRequest("ssh certificate principals does not match - got %v, want %v", got.Principals, o.Principals) + return errs.Forbidden("ssh certificate principals does not match - got %v, want %v", got.Principals, o.Principals) } if !o.ValidAfter.IsZero() && !got.ValidAfter.IsZero() && !o.ValidAfter.Equal(&got.ValidAfter) { - return errs.BadRequest("ssh certificate validAfter does not match - got %v, want %v", got.ValidAfter, o.ValidAfter) + return errs.Forbidden("ssh certificate validAfter does not match - got %v, want %v", got.ValidAfter, o.ValidAfter) } if !o.ValidBefore.IsZero() && !got.ValidBefore.IsZero() && !o.ValidBefore.Equal(&got.ValidBefore) { - return errs.BadRequest("ssh certificate validBefore does not match - got %v, want %v", got.ValidBefore, o.ValidBefore) + return errs.Forbidden("ssh certificate validBefore does not match - got %v, want %v", got.ValidBefore, o.ValidBefore) } return nil } @@ -368,9 +368,9 @@ func (v *sshCertValidityValidator) Valid(cert *ssh.Certificate, opts SignSSHOpti switch { case dur < min: - return errs.BadRequest("requested duration of %s is less than minimum accepted duration for selected provisioner of %s", dur, min) + return errs.Forbidden("requested duration of %s is less than minimum accepted duration for selected provisioner of %s", dur, min) case dur > max+opts.Backdate: - return errs.BadRequest("requested duration of %s is greater than maximum accepted duration for selected provisioner of %s", dur, max+opts.Backdate) + return errs.Forbidden("requested duration of %s is greater than maximum accepted duration for selected provisioner of %s", dur, max+opts.Backdate) default: return nil } From d35848f7a98967c26bf7f78da948ffb223bda04a Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Wed, 24 Nov 2021 11:43:24 -0800 Subject: [PATCH 20/36] Fix unit tests. --- authority/tls_test.go | 4 ++-- ca/ca_test.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/authority/tls_test.go b/authority/tls_test.go index 41354e8d..1b5e4d01 100644 --- a/authority/tls_test.go +++ b/authority/tls_test.go @@ -310,7 +310,7 @@ func TestAuthority_Sign(t *testing.T) { extraOpts: extraOpts, signOpts: _signOpts, err: errors.New("requested duration of 25h0m0s is more than the authorized maximum certificate duration of 24h1m0s"), - code: http.StatusBadRequest, + code: http.StatusForbidden, } }, "fail validate sans when adding common name not in claims": func(t *testing.T) *signTest { @@ -323,7 +323,7 @@ func TestAuthority_Sign(t *testing.T) { extraOpts: extraOpts, signOpts: signOpts, err: errors.New("certificate request does not contain the valid DNS names - got [test.smallstep.com smallstep test], want [test.smallstep.com]"), - code: http.StatusBadRequest, + code: http.StatusForbidden, } }, "fail rsa key too short": func(t *testing.T) *signTest { diff --git a/ca/ca_test.go b/ca/ca_test.go index 05dca027..e4c35a90 100644 --- a/ca/ca_test.go +++ b/ca/ca_test.go @@ -200,8 +200,8 @@ ZEp7knvU2psWRw== return &signTest{ ca: ca, body: string(body), - status: http.StatusBadRequest, - errMsg: errs.BadRequestPrefix, + status: http.StatusForbidden, + errMsg: errs.ForbiddenPrefix, } }, "ok": func(t *testing.T) *signTest { From ed295ca15d3c66bb14eec894c7ac2acf1b3a5ebc Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Thu, 25 Nov 2021 00:44:21 +0100 Subject: [PATCH 21/36] Fix linting issue --- acme/api/middleware_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/acme/api/middleware_test.go b/acme/api/middleware_test.go index d5aaee21..7b8ae828 100644 --- a/acme/api/middleware_test.go +++ b/acme/api/middleware_test.go @@ -1641,7 +1641,7 @@ func TestHandler_extractOrLookupJWK(t *testing.T) { assert.Equals(t, res.StatusCode, tc.statusCode) - body, err := ioutil.ReadAll(res.Body) + body, err := io.ReadAll(res.Body) res.Body.Close() assert.FatalError(t, err) From 2d357da99b23a72756e2f1aee0cf4e2fee7f9dfe Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Fri, 26 Nov 2021 17:27:42 +0100 Subject: [PATCH 22/36] Add tests for ACME revocation --- acme/api/handler.go | 6 +- acme/api/revoke.go | 58 +++- acme/api/revoke_test.go | 670 ++++++++++++++++++++++++++++++++++++++++ acme/common.go | 1 + acme/errors.go | 2 +- acme/order_test.go | 4 + authority/authority.go | 13 + authority/authorize.go | 14 +- ca/ca.go | 2 +- 9 files changed, 738 insertions(+), 32 deletions(-) create mode 100644 acme/api/revoke_test.go diff --git a/acme/api/handler.go b/acme/api/handler.go index a459c0af..d6153184 100644 --- a/acme/api/handler.go +++ b/acme/api/handler.go @@ -104,13 +104,13 @@ func (h *Handler) Route(r api.Router) { return h.baseURLFromRequest(h.lookupProvisioner(h.addNonce(h.addDirLink(h.verifyContentType(h.parseJWS(next)))))) } extractPayloadByJWK := func(next nextHTTP) nextHTTP { - return validatingMiddleware(h.extractJWK(h.verifyAndExtractJWSPayload(next))) + return validatingMiddleware(h.validateJWS(h.extractJWK(h.verifyAndExtractJWSPayload(next)))) } extractPayloadByKid := func(next nextHTTP) nextHTTP { - return validatingMiddleware(h.lookupJWK(h.verifyAndExtractJWSPayload(next))) + return validatingMiddleware(h.validateJWS(h.lookupJWK(h.verifyAndExtractJWSPayload(next)))) } extractPayloadByKidOrJWK := func(next nextHTTP) nextHTTP { - return validatingMiddleware(h.extractOrLookupJWK(h.verifyAndExtractJWSPayload(next))) + return validatingMiddleware(h.validateJWS(h.extractOrLookupJWK(h.verifyAndExtractJWSPayload(next)))) } r.MethodFunc("POST", getPath(NewAccountLinkType, "{provisionerID}"), extractPayloadByJWK(h.NewAccount)) diff --git a/acme/api/revoke.go b/acme/api/revoke.go index 4633b7c9..e92058e8 100644 --- a/acme/api/revoke.go +++ b/acme/api/revoke.go @@ -4,6 +4,7 @@ import ( "crypto/x509" "encoding/base64" "encoding/json" + "fmt" "net/http" "strings" @@ -37,28 +38,30 @@ func (h *Handler) RevokeCert(w http.ResponseWriter, r *http.Request) { return } - p, err := payloadFromContext(ctx) + payload, err := payloadFromContext(ctx) if err != nil { api.WriteError(w, err) return } - var payload revokePayload - err = json.Unmarshal(p.value, &payload) + var p revokePayload + err = json.Unmarshal(payload.value, &p) if err != nil { api.WriteError(w, acme.WrapErrorISE(err, "error unmarshaling payload")) return } - certBytes, err := base64.RawURLEncoding.DecodeString(payload.Certificate) + certBytes, err := base64.RawURLEncoding.DecodeString(p.Certificate) if err != nil { - api.WriteError(w, acme.WrapErrorISE(err, "error decoding base64 certificate")) + // in this case the most likely cause is a client that didn't properly encode the certificate + api.WriteError(w, acme.WrapError(acme.ErrorMalformedType, err, "error base64url decoding payload certificate property")) return } certToBeRevoked, err := x509.ParseCertificate(certBytes) if err != nil { - api.WriteError(w, acme.WrapErrorISE(err, "error parsing certificate")) + // in this case a client may have encoded something different than a certificate + api.WriteError(w, acme.WrapError(acme.ErrorMalformedType, err, "error parsing certificate")) return } @@ -76,28 +79,38 @@ func (h *Handler) RevokeCert(w http.ResponseWriter, r *http.Request) { return } if !account.IsValid() { - api.WriteError(w, acme.NewError(acme.ErrorUnauthorizedType, - "account '%s' has status '%s'", account.ID, account.Status)) + api.WriteError(w, wrapUnauthorizedError(certToBeRevoked, fmt.Sprintf("account '%s' has status '%s'", account.ID, account.Status), nil)) return } - if existingCert.AccountID != account.ID { - api.WriteError(w, acme.NewError(acme.ErrorUnauthorizedType, - "account '%s' does not own certificate '%s'", account.ID, existingCert.ID)) + if existingCert.AccountID != account.ID { // TODO: combine with the below; ony one of the two has to be true + api.WriteError(w, wrapUnauthorizedError(certToBeRevoked, fmt.Sprintf("account '%s' does not own certificate '%s'", account.ID, existingCert.ID), nil)) return } - // TODO: check "an account that holds authorizations for all of the identifiers in the certificate." + // TODO: check and implement "an account that holds authorizations for all of the identifiers in the certificate." + // In that case the certificate may not have been created by this account, but another account that was authorized before. } else { // if account doesn't need to be checked, the JWS should be verified to be signed by the // private key that belongs to the public key in the certificate to be revoked. + // TODO: implement test case for this _, err := jws.Verify(certToBeRevoked.PublicKey) if err != nil { - api.WriteError(w, acme.WrapError(acme.ErrorUnauthorizedType, err, - "verification of jws using certificate public key failed")) + api.WriteError(w, wrapUnauthorizedError(certToBeRevoked, "verification of jws using certificate public key failed", err)) return } } - reasonCode := payload.ReasonCode + hasBeenRevokedBefore, err := h.ca.IsRevoked(serial) + if err != nil { + api.WriteError(w, acme.WrapErrorISE(err, "error retrieving revocation status of certificate")) + return + } + + if hasBeenRevokedBefore { + api.WriteError(w, acme.NewError(acme.ErrorAlreadyRevokedType, "certificate was already revoked")) + return + } + + reasonCode := p.ReasonCode acmeErr := validateReasonCode(reasonCode) if acmeErr != nil { api.WriteError(w, acmeErr) @@ -134,6 +147,21 @@ func wrapRevokeErr(err error) *acme.Error { return acme.WrapErrorISE(err, "error when revoking certificate") } +// unauthorizedError returns an ACME error indicating the request was +// not authorized to revoke the certificate. +func wrapUnauthorizedError(cert *x509.Certificate, msg string, err error) *acme.Error { + var acmeErr *acme.Error + if err == nil { + acmeErr = acme.NewError(acme.ErrorUnauthorizedType, msg) + } else { + acmeErr = acme.WrapError(acme.ErrorUnauthorizedType, err, msg) + } + acmeErr.Status = http.StatusForbidden + acmeErr.Detail = fmt.Sprintf("No authorization provided for name %s", cert.Subject.String()) // TODO: what about other SANs? + + return acmeErr +} + // logRevoke logs successful revocation of certificate func logRevoke(w http.ResponseWriter, ri *authority.RevokeOptions) { if rl, ok := w.(logging.ResponseLogger); ok { diff --git a/acme/api/revoke_test.go b/acme/api/revoke_test.go new file mode 100644 index 00000000..033934c6 --- /dev/null +++ b/acme/api/revoke_test.go @@ -0,0 +1,670 @@ +package api + +import ( + "bytes" + "context" + "crypto/x509" + "encoding/base64" + "encoding/json" + "encoding/pem" + "fmt" + "io" + "net/http/httptest" + "net/url" + "reflect" + "testing" + + "github.com/go-chi/chi" + "github.com/pkg/errors" + "github.com/smallstep/assert" + "github.com/smallstep/certificates/acme" + "github.com/smallstep/certificates/authority" + "github.com/smallstep/certificates/authority/provisioner" + "go.step.sm/crypto/jose" + "golang.org/x/crypto/ocsp" +) + +const ( + certPEM = `-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgIIE31FZVaPXTUwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE +BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRl +cm5ldCBBdXRob3JpdHkgRzIwHhcNMTQwMTI5MTMyNzQzWhcNMTQwNTI5MDAwMDAw +WjBpMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN +TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzEYMBYGA1UEAwwPbWFp +bC5nb29nbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfRrObuSW5T7q +5CnSEqefEmtH4CCv6+5EckuriNr1CjfVvqzwfAhopXkLrq45EQm8vkmf7W96XJhC +7ZM0dYi1/qOCAU8wggFLMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAa +BgNVHREEEzARgg9tYWlsLmdvb2dsZS5jb20wCwYDVR0PBAQDAgeAMGgGCCsGAQUF +BwEBBFwwWjArBggrBgEFBQcwAoYfaHR0cDovL3BraS5nb29nbGUuY29tL0dJQUcy +LmNydDArBggrBgEFBQcwAYYfaHR0cDovL2NsaWVudHMxLmdvb2dsZS5jb20vb2Nz +cDAdBgNVHQ4EFgQUiJxtimAuTfwb+aUtBn5UYKreKvMwDAYDVR0TAQH/BAIwADAf +BgNVHSMEGDAWgBRK3QYWG7z2aLV29YG2u2IaulqBLzAXBgNVHSAEEDAOMAwGCisG +AQQB1nkCBQEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3BraS5nb29nbGUuY29t +L0dJQUcyLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAH6RYHxHdcGpMpFE3oxDoFnP+ +gtuBCHan2yE2GRbJ2Cw8Lw0MmuKqHlf9RSeYfd3BXeKkj1qO6TVKwCh+0HdZk283 +TZZyzmEOyclm3UGFYe82P/iDFt+CeQ3NpmBg+GoaVCuWAARJN/KfglbLyyYygcQq +0SgeDh8dRKUiaW3HQSoYvTvdTuqzwK4CXsr3b5/dAOY8uMuG/IAR3FgwTbZ1dtoW +RvOTa8hYiU6A475WuZKyEHcwnGYe57u2I2KbMgcKjPniocj4QzgYsVAVKW3IwaOh +yE+vPxsiUkvQHdO2fojCkY8jg70jxM+gu59tPDNbw3Uh/2Ij310FgTHsnGQMyA== +-----END CERTIFICATE-----` +) + +func v(v int) *int { + return &v +} + +func parseCertificate(data string) *x509.Certificate { + block, _ := pem.Decode([]byte(data)) + if block == nil { + panic("failed to parse certificate PEM") + } + cert, err := x509.ParseCertificate(block.Bytes) + if err != nil { + panic("failed to parse certificate: " + err.Error()) + } + return cert +} + +type mockCA struct { + MockIsRevoked func(sn string) (bool, error) + MockRevoke func(ctx context.Context, opts *authority.RevokeOptions) error +} + +func (m *mockCA) Sign(cr *x509.CertificateRequest, opts provisioner.SignOptions, signOpts ...provisioner.SignOption) ([]*x509.Certificate, error) { + return nil, nil +} + +func (m *mockCA) IsRevoked(sn string) (bool, error) { + if m.MockIsRevoked != nil { + return m.MockIsRevoked(sn) + } + return false, nil +} + +func (m *mockCA) Revoke(ctx context.Context, opts *authority.RevokeOptions) error { + if m.MockRevoke != nil { + return m.MockRevoke(ctx, opts) + } + return nil +} + +func (m *mockCA) LoadProvisionerByName(string) (provisioner.Interface, error) { + return nil, nil +} + +func Test_validateReasonCode(t *testing.T) { + tests := []struct { + name string + reasonCode *int + want *acme.Error + }{ + { + name: "ok", + reasonCode: v(ocsp.Unspecified), + want: nil, + }, + { + name: "fail/too-low", + reasonCode: v(-1), + want: acme.NewError(acme.ErrorBadRevocationReasonType, "reasonCode out of bounds"), + }, + { + name: "fail/too-high", + reasonCode: v(11), + want: acme.NewError(acme.ErrorBadRevocationReasonType, "reasonCode out of bounds"), + }, + { + name: "fail/missing-7", + reasonCode: v(7), + + want: acme.NewError(acme.ErrorBadRevocationReasonType, "reasonCode out of bounds"), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := validateReasonCode(tt.reasonCode) + if (err != nil) != (tt.want != nil) { + t.Errorf("validateReasonCode() = %v, want %v", err, tt.want) + } + if err != nil { + assert.Equals(t, err.Type, tt.want.Type) + assert.Equals(t, err.Detail, tt.want.Detail) + assert.Equals(t, err.Status, tt.want.Status) + assert.Equals(t, err.Err.Error(), tt.want.Err.Error()) + assert.Equals(t, err.Detail, tt.want.Detail) + } + }) + } +} + +func Test_reason(t *testing.T) { + + // case ocsp.RemoveFromCRL: + // return "remove from crl" + // case ocsp.PrivilegeWithdrawn: + // return "privilege withdrawn" + // case ocsp.AACompromise: + // return "aa compromised" + // default: + // return "unspecified reason" + // } + // } + tests := []struct { + name string + reasonCode int + want string + }{ + { + name: "unspecified reason", + reasonCode: ocsp.Unspecified, + want: "unspecified reason", + }, + { + name: "key compromised", + reasonCode: ocsp.KeyCompromise, + want: "key compromised", + }, + { + name: "ca compromised", + reasonCode: ocsp.CACompromise, + want: "ca compromised", + }, + { + name: "affiliation changed", + reasonCode: ocsp.AffiliationChanged, + want: "affiliation changed", + }, + { + name: "superseded", + reasonCode: ocsp.Superseded, + want: "superseded", + }, + { + name: "cessation of operation", + reasonCode: ocsp.CessationOfOperation, + want: "cessation of operation", + }, + { + name: "certificate hold", + reasonCode: ocsp.CertificateHold, + want: "certificate hold", + }, + { + name: "remove from crl", + reasonCode: ocsp.RemoveFromCRL, + want: "remove from crl", + }, + { + name: "privilege withdrawn", + reasonCode: ocsp.PrivilegeWithdrawn, + want: "privilege withdrawn", + }, + { + name: "aa compromised", + reasonCode: ocsp.AACompromise, + want: "aa compromised", + }, + { + name: "default", + reasonCode: -1, + want: "unspecified reason", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := reason(tt.reasonCode); got != tt.want { + t.Errorf("reason() = %v, want %v", got, tt.want) + } + }) + } +} + +func Test_revokeOptions(t *testing.T) { + var cert *x509.Certificate + type args struct { + serial string + certToBeRevoked *x509.Certificate + reasonCode *int + } + tests := []struct { + name string + args args + want *authority.RevokeOptions + }{ + { + name: "ok/no-reasoncode", + args: args{ + serial: "1234", + certToBeRevoked: cert, + }, + want: &authority.RevokeOptions{ + Serial: "1234", + Crt: nil, + ACME: true, + }, + }, + { + name: "ok/including-reasoncode", + args: args{ + serial: "1234", + certToBeRevoked: cert, + reasonCode: v(ocsp.KeyCompromise), + }, + want: &authority.RevokeOptions{ + Serial: "1234", + Crt: nil, + ACME: true, + ReasonCode: 1, + Reason: "key compromised", + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := revokeOptions(tt.args.serial, tt.args.certToBeRevoked, tt.args.reasonCode); !reflect.DeepEqual(got, tt.want) { + t.Errorf("revokeOptions() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestHandler_RevokeCert(t *testing.T) { + prov := &provisioner.ACME{ + Type: "ACME", + Name: "testprov", + } + escProvName := url.PathEscape(prov.GetName()) + baseURL := &url.URL{Scheme: "https", Host: "test.ca.smallstep.com"} + + chiCtx := chi.NewRouteContext() + revokeURL := fmt.Sprintf("%s/acme/%s/revoke-cert", baseURL.String(), escProvName) + + cert := parseCertificate(certPEM) + rp := &revokePayload{ + Certificate: base64.RawURLEncoding.EncodeToString(cert.Raw), + } + payloadBytes, err := json.Marshal(rp) + assert.FatalError(t, err) + + type test struct { + db acme.DB + ca acme.CertificateAuthority + ctx context.Context + statusCode int + err *acme.Error + } + + var tests = map[string]func(t *testing.T) test{ + "fail/wrong-certificate-encoding": func(t *testing.T) test { + rp := &revokePayload{ + Certificate: base64.StdEncoding.EncodeToString(cert.Raw), + } + wronglyEncodedPayloadBytes, err := json.Marshal(rp) + assert.FatalError(t, err) + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + acc := &acme.Account{ID: "accountID", Status: acme.StatusInvalid} + ctx := context.WithValue(context.Background(), provisionerContextKey, prov) + ctx = context.WithValue(ctx, accContextKey, acc) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: wronglyEncodedPayloadBytes}) + ctx = context.WithValue(ctx, jwsContextKey, jws) + ctx = context.WithValue(ctx, baseURLContextKey, baseURL) + ctx = context.WithValue(ctx, chi.RouteCtxKey, chiCtx) + db := &acme.MockDB{} + ca := &mockCA{} + return test{ + db: db, + ca: ca, + ctx: ctx, + statusCode: 400, + err: &acme.Error{ + Type: "urn:ietf:params:acme:error:malformed", + Status: 400, + Detail: "The request message was malformed", + }, + } + }, + "fail/no-certificate-encoded": func(t *testing.T) test { + rp := &revokePayload{ + Certificate: base64.RawURLEncoding.EncodeToString([]byte{}), + } + wrongPayloadBytes, err := json.Marshal(rp) + assert.FatalError(t, err) + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + acc := &acme.Account{ID: "accountID", Status: acme.StatusInvalid} + ctx := context.WithValue(context.Background(), provisionerContextKey, prov) + ctx = context.WithValue(ctx, accContextKey, acc) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: wrongPayloadBytes}) + ctx = context.WithValue(ctx, jwsContextKey, jws) + ctx = context.WithValue(ctx, baseURLContextKey, baseURL) + ctx = context.WithValue(ctx, chi.RouteCtxKey, chiCtx) + db := &acme.MockDB{} + ca := &mockCA{} + return test{ + db: db, + ca: ca, + ctx: ctx, + statusCode: 400, + err: &acme.Error{ + Type: "urn:ietf:params:acme:error:malformed", + Status: 400, + Detail: "The request message was malformed", + }, + } + }, + "fail/account-not-valid": func(t *testing.T) test { + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + acc := &acme.Account{ID: "accountID", Status: acme.StatusInvalid} + ctx := context.WithValue(context.Background(), provisionerContextKey, prov) + ctx = context.WithValue(ctx, accContextKey, acc) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) + ctx = context.WithValue(ctx, jwsContextKey, jws) + ctx = context.WithValue(ctx, baseURLContextKey, baseURL) + ctx = context.WithValue(ctx, chi.RouteCtxKey, chiCtx) + db := &acme.MockDB{ + MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { + assert.Equals(t, cert.SerialNumber.String(), serial) + return &acme.Certificate{ + AccountID: "accountID", + }, nil + }, + } + ca := &mockCA{} + return test{ + db: db, + ca: ca, + ctx: ctx, + statusCode: 403, + err: &acme.Error{ + Type: "urn:ietf:params:acme:error:unauthorized", + Detail: fmt.Sprintf("No authorization provided for name %s", cert.Subject.String()), + Status: 403, + }, + } + }, + "fail/account-not-authorized": func(t *testing.T) test { + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + acc := &acme.Account{ID: "accountID", Status: acme.StatusValid} + ctx := context.WithValue(context.Background(), provisionerContextKey, prov) + ctx = context.WithValue(ctx, accContextKey, acc) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) + ctx = context.WithValue(ctx, jwsContextKey, jws) + ctx = context.WithValue(ctx, baseURLContextKey, baseURL) + ctx = context.WithValue(ctx, chi.RouteCtxKey, chiCtx) + db := &acme.MockDB{ + MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { + assert.Equals(t, cert.SerialNumber.String(), serial) + return &acme.Certificate{ + AccountID: "differentAccountID", + }, nil + }, + } + ca := &mockCA{} + return test{ + db: db, + ca: ca, + ctx: ctx, + statusCode: 403, + err: &acme.Error{ + Type: "urn:ietf:params:acme:error:unauthorized", + Detail: fmt.Sprintf("No authorization provided for name %s", cert.Subject.String()), + Status: 403, + }, + } + }, + "fail/certificate-revoked-check-fails": func(t *testing.T) test { + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + acc := &acme.Account{ID: "accountID", Status: acme.StatusValid} + ctx := context.WithValue(context.Background(), provisionerContextKey, prov) + ctx = context.WithValue(ctx, accContextKey, acc) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) + ctx = context.WithValue(ctx, jwsContextKey, jws) + ctx = context.WithValue(ctx, baseURLContextKey, baseURL) + ctx = context.WithValue(ctx, chi.RouteCtxKey, chiCtx) + db := &acme.MockDB{ + MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { + assert.Equals(t, cert.SerialNumber.String(), serial) + return &acme.Certificate{ + AccountID: "accountID", + }, nil + }, + } + ca := &mockCA{ + MockIsRevoked: func(sn string) (bool, error) { + return false, errors.New("force") + }, + } + return test{ + db: db, + ca: ca, + ctx: ctx, + statusCode: 500, + err: &acme.Error{ + Type: "urn:ietf:params:acme:error:serverInternal", + Detail: "The server experienced an internal error", + Status: 500, + }, + } + }, + "fail/certificate-already-revoked": func(t *testing.T) test { + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + acc := &acme.Account{ID: "accountID", Status: acme.StatusValid} + ctx := context.WithValue(context.Background(), provisionerContextKey, prov) + ctx = context.WithValue(ctx, accContextKey, acc) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) + ctx = context.WithValue(ctx, jwsContextKey, jws) + ctx = context.WithValue(ctx, baseURLContextKey, baseURL) + ctx = context.WithValue(ctx, chi.RouteCtxKey, chiCtx) + db := &acme.MockDB{ + MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { + assert.Equals(t, cert.SerialNumber.String(), serial) + return &acme.Certificate{ + AccountID: "accountID", + }, nil + }, + } + ca := &mockCA{ + MockIsRevoked: func(sn string) (bool, error) { + return true, nil + }, + } + return test{ + db: db, + ca: ca, + ctx: ctx, + statusCode: 400, + err: &acme.Error{ + Type: "urn:ietf:params:acme:error:alreadyRevoked", + Detail: "Certificate already revoked", + Status: 400, + }, + } + }, + "fail/certificate-revoke-fails": func(t *testing.T) test { + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + acc := &acme.Account{ID: "accountID", Status: acme.StatusValid} + ctx := context.WithValue(context.Background(), provisionerContextKey, prov) + ctx = context.WithValue(ctx, accContextKey, acc) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) + ctx = context.WithValue(ctx, jwsContextKey, jws) + ctx = context.WithValue(ctx, baseURLContextKey, baseURL) + ctx = context.WithValue(ctx, chi.RouteCtxKey, chiCtx) + db := &acme.MockDB{ + MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { + assert.Equals(t, cert.SerialNumber.String(), serial) + return &acme.Certificate{ + AccountID: "accountID", + }, nil + }, + } + ca := &mockCA{ + MockRevoke: func(ctx context.Context, opts *authority.RevokeOptions) error { + return errors.New("force") + }, + } + return test{ + db: db, + ca: ca, + ctx: ctx, + statusCode: 500, + err: &acme.Error{ + Type: "urn:ietf:params:acme:error:serverInternal", + Detail: "The server experienced an internal error", + Status: 500, + }, + } + }, + "ok/using-account-key": func(t *testing.T) test { + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + acc := &acme.Account{ID: "accountID", Status: acme.StatusValid} + ctx := context.WithValue(context.Background(), provisionerContextKey, prov) + ctx = context.WithValue(ctx, accContextKey, acc) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) + ctx = context.WithValue(ctx, jwsContextKey, jws) + ctx = context.WithValue(ctx, baseURLContextKey, baseURL) + ctx = context.WithValue(ctx, chi.RouteCtxKey, chiCtx) + db := &acme.MockDB{ + MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { + assert.Equals(t, cert.SerialNumber.String(), serial) + return &acme.Certificate{ + AccountID: "accountID", + }, nil + }, + } + ca := &mockCA{} + return test{ + db: db, + ca: ca, + ctx: ctx, + statusCode: 200, + } + }, + } + for name, setup := range tests { + tc := setup(t) + t.Run(name, func(t *testing.T) { + h := &Handler{linker: NewLinker("dns", "acme"), db: tc.db, ca: tc.ca} + req := httptest.NewRequest("POST", revokeURL, nil) + req = req.WithContext(tc.ctx) + w := httptest.NewRecorder() + h.RevokeCert(w, req) + res := w.Result() + + assert.Equals(t, res.StatusCode, tc.statusCode) + + body, err := io.ReadAll(res.Body) + res.Body.Close() + assert.FatalError(t, err) + + if res.StatusCode >= 400 && assert.NotNil(t, tc.err) { + var ae acme.Error + assert.FatalError(t, json.Unmarshal(bytes.TrimSpace(body), &ae)) + + assert.Equals(t, ae.Type, tc.err.Type) + assert.Equals(t, ae.Detail, tc.err.Detail) + assert.Equals(t, ae.Identifier, tc.err.Identifier) + assert.Equals(t, ae.Subproblems, tc.err.Subproblems) + assert.Equals(t, res.Header["Content-Type"], []string{"application/problem+json"}) + } else { + assert.True(t, bytes.Equal(bytes.TrimSpace(body), []byte{})) + assert.Equals(t, int64(0), req.ContentLength) + assert.Equals(t, []string{fmt.Sprintf("<%s/acme/%s/directory>;rel=\"index\"", baseURL.String(), escProvName)}, res.Header["Link"]) + } + }) + } +} diff --git a/acme/common.go b/acme/common.go index 2613c397..0c9e83dc 100644 --- a/acme/common.go +++ b/acme/common.go @@ -12,6 +12,7 @@ import ( // CertificateAuthority is the interface implemented by a CA authority. type CertificateAuthority interface { Sign(cr *x509.CertificateRequest, opts provisioner.SignOptions, signOpts ...provisioner.SignOption) ([]*x509.Certificate, error) + IsRevoked(sn string) (bool, error) Revoke(context.Context, *authority.RevokeOptions) error LoadProvisionerByName(string) (provisioner.Interface, error) } diff --git a/acme/errors.go b/acme/errors.go index 6ecf0912..a5c820ba 100644 --- a/acme/errors.go +++ b/acme/errors.go @@ -147,7 +147,7 @@ var ( }, ErrorAlreadyRevokedType: { typ: officialACMEPrefix + ErrorAlreadyRevokedType.String(), - details: "Certificate already Revoked", + details: "Certificate already revoked", status: 400, }, ErrorBadCSRType: { diff --git a/acme/order_test.go b/acme/order_test.go index 4b940bdb..a90982a6 100644 --- a/acme/order_test.go +++ b/acme/order_test.go @@ -287,6 +287,10 @@ func (m *mockSignAuth) LoadProvisionerByName(name string) (provisioner.Interface return m.ret1.(provisioner.Interface), m.err } +func (m *mockSignAuth) IsRevoked(sn string) (bool, error) { + return false, nil +} + func (m *mockSignAuth) Revoke(context.Context, *authority.RevokeOptions) error { return nil } diff --git a/authority/authority.go b/authority/authority.go index aa8698d7..b6fcdf23 100644 --- a/authority/authority.go +++ b/authority/authority.go @@ -588,6 +588,19 @@ func (a *Authority) CloseForReload() { } } +// IsRevoked returns whether or not a certificate has been +// revoked before. +func (a *Authority) IsRevoked(sn string) (bool, error) { + // Check the passive revocation table. + if lca, ok := a.adminDB.(interface { + IsRevoked(string) (bool, error) + }); ok { + return lca.IsRevoked(sn) + } + + return a.db.IsRevoked(sn) +} + // requiresDecrypter returns whether the Authority // requires a KMS that provides a crypto.Decrypter // Currently this is only required when SCEP is diff --git a/authority/authorize.go b/authority/authorize.go index a4e7e591..5108f567 100644 --- a/authority/authorize.go +++ b/authority/authorize.go @@ -274,19 +274,9 @@ func (a *Authority) authorizeRevoke(ctx context.Context, token string) error { // // TODO(mariano): should we authorize by default? func (a *Authority) authorizeRenew(cert *x509.Certificate) error { - var err error - var isRevoked bool - var opts = []interface{}{errs.WithKeyVal("serialNumber", cert.SerialNumber.String())} - - // Check the passive revocation table. serial := cert.SerialNumber.String() - if lca, ok := a.adminDB.(interface { - IsRevoked(string) (bool, error) - }); ok { - isRevoked, err = lca.IsRevoked(serial) - } else { - isRevoked, err = a.db.IsRevoked(serial) - } + var opts = []interface{}{errs.WithKeyVal("serialNumber", serial)} + isRevoked, err := a.IsRevoked(serial) if err != nil { return errs.Wrap(http.StatusInternalServerError, err, "authority.authorizeRenew", opts...) } diff --git a/ca/ca.go b/ca/ca.go index c76e8c0a..da0fb874 100644 --- a/ca/ca.go +++ b/ca/ca.go @@ -442,7 +442,7 @@ func (ca *CA) getTLSConfig(auth *authority.Authority) (*tls.Config, error) { return tlsConfig, nil } -// shouldMountSCEPEndpoints returns if the CA should be +// shouldServeSCEPEndpoints returns if the CA should be // configured with endpoints for SCEP. This is assumed to be // true if a SCEPService exists, which is true in case a // SCEP provisioner was configured. From 4d01cf8135216223e66544f455fcc3827a0eb7c6 Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Sun, 28 Nov 2021 20:30:36 +0100 Subject: [PATCH 23/36] Increase test code coverage --- acme/api/revoke.go | 6 +- acme/api/revoke_test.go | 796 +++++++++++++++++++++++++++++++++++----- 2 files changed, 702 insertions(+), 100 deletions(-) diff --git a/acme/api/revoke.go b/acme/api/revoke.go index e92058e8..7ae93152 100644 --- a/acme/api/revoke.go +++ b/acme/api/revoke.go @@ -91,9 +91,9 @@ func (h *Handler) RevokeCert(w http.ResponseWriter, r *http.Request) { } else { // if account doesn't need to be checked, the JWS should be verified to be signed by the // private key that belongs to the public key in the certificate to be revoked. - // TODO: implement test case for this _, err := jws.Verify(certToBeRevoked.PublicKey) if err != nil { + // TODO(hs): possible to determine an error vs. unauthorized and thus provide an ISE vs. Unauthorized? api.WriteError(w, wrapUnauthorizedError(certToBeRevoked, "verification of jws using certificate public key failed", err)) return } @@ -141,7 +141,7 @@ func (h *Handler) RevokeCert(w http.ResponseWriter, r *http.Request) { // revocation into an ACME error, so that clients can understand the error. func wrapRevokeErr(err error) *acme.Error { t := err.Error() - if strings.Contains(t, "has already been revoked") { + if strings.Contains(t, "is already revoked") { return acme.NewError(acme.ErrorAlreadyRevokedType, t) } return acme.WrapErrorISE(err, "error when revoking certificate") @@ -157,7 +157,7 @@ func wrapUnauthorizedError(cert *x509.Certificate, msg string, err error) *acme. acmeErr = acme.WrapError(acme.ErrorUnauthorizedType, err, msg) } acmeErr.Status = http.StatusForbidden - acmeErr.Detail = fmt.Sprintf("No authorization provided for name %s", cert.Subject.String()) // TODO: what about other SANs? + acmeErr.Detail = fmt.Sprintf("No authorization provided for name %s", cert.Subject.String()) // TODO: what about other SANs? When no Subject is in the certificate? return acmeErr } diff --git a/acme/api/revoke_test.go b/acme/api/revoke_test.go index 033934c6..2feae989 100644 --- a/acme/api/revoke_test.go +++ b/acme/api/revoke_test.go @@ -3,66 +3,267 @@ package api import ( "bytes" "context" + "crypto" + "crypto/ecdsa" + "crypto/rand" + "crypto/rsa" "crypto/x509" + "crypto/x509/pkix" "encoding/base64" "encoding/json" - "encoding/pem" "fmt" "io" + "math/big" "net/http/httptest" "net/url" - "reflect" "testing" + "time" "github.com/go-chi/chi" + "github.com/google/go-cmp/cmp" "github.com/pkg/errors" "github.com/smallstep/assert" "github.com/smallstep/certificates/acme" "github.com/smallstep/certificates/authority" "github.com/smallstep/certificates/authority/provisioner" "go.step.sm/crypto/jose" + "go.step.sm/crypto/keyutil" + "go.step.sm/crypto/x509util" "golang.org/x/crypto/ocsp" ) -const ( - certPEM = `-----BEGIN CERTIFICATE----- -MIIDujCCAqKgAwIBAgIIE31FZVaPXTUwDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE -BhMCVVMxEzARBgNVBAoTCkdvb2dsZSBJbmMxJTAjBgNVBAMTHEdvb2dsZSBJbnRl -cm5ldCBBdXRob3JpdHkgRzIwHhcNMTQwMTI5MTMyNzQzWhcNMTQwNTI5MDAwMDAw -WjBpMQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwN -TW91bnRhaW4gVmlldzETMBEGA1UECgwKR29vZ2xlIEluYzEYMBYGA1UEAwwPbWFp -bC5nb29nbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfRrObuSW5T7q -5CnSEqefEmtH4CCv6+5EckuriNr1CjfVvqzwfAhopXkLrq45EQm8vkmf7W96XJhC -7ZM0dYi1/qOCAU8wggFLMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAa -BgNVHREEEzARgg9tYWlsLmdvb2dsZS5jb20wCwYDVR0PBAQDAgeAMGgGCCsGAQUF -BwEBBFwwWjArBggrBgEFBQcwAoYfaHR0cDovL3BraS5nb29nbGUuY29tL0dJQUcy -LmNydDArBggrBgEFBQcwAYYfaHR0cDovL2NsaWVudHMxLmdvb2dsZS5jb20vb2Nz -cDAdBgNVHQ4EFgQUiJxtimAuTfwb+aUtBn5UYKreKvMwDAYDVR0TAQH/BAIwADAf -BgNVHSMEGDAWgBRK3QYWG7z2aLV29YG2u2IaulqBLzAXBgNVHSAEEDAOMAwGCisG -AQQB1nkCBQEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL3BraS5nb29nbGUuY29t -L0dJQUcyLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAH6RYHxHdcGpMpFE3oxDoFnP+ -gtuBCHan2yE2GRbJ2Cw8Lw0MmuKqHlf9RSeYfd3BXeKkj1qO6TVKwCh+0HdZk283 -TZZyzmEOyclm3UGFYe82P/iDFt+CeQ3NpmBg+GoaVCuWAARJN/KfglbLyyYygcQq -0SgeDh8dRKUiaW3HQSoYvTvdTuqzwK4CXsr3b5/dAOY8uMuG/IAR3FgwTbZ1dtoW -RvOTa8hYiU6A475WuZKyEHcwnGYe57u2I2KbMgcKjPniocj4QzgYsVAVKW3IwaOh -yE+vPxsiUkvQHdO2fojCkY8jg70jxM+gu59tPDNbw3Uh/2Ij310FgTHsnGQMyA== ------END CERTIFICATE-----` -) - +// v is a utility function to return the pointer to an integer func v(v int) *int { return &v } -func parseCertificate(data string) *x509.Certificate { - block, _ := pem.Decode([]byte(data)) - if block == nil { - panic("failed to parse certificate PEM") - } - cert, err := x509.ParseCertificate(block.Bytes) +// generateCertKeyPair generates fresh x509 certificate/key pairs for testing +func generateCertKeyPair() (*x509.Certificate, crypto.Signer, error) { + + pub, priv, err := keyutil.GenerateKeyPair("EC", "P-256", 0) if err != nil { - panic("failed to parse certificate: " + err.Error()) + return nil, nil, err } - return cert + + serial, err := rand.Int(rand.Reader, big.NewInt(1000000000000000000)) + if err != nil { + return nil, nil, err + } + + now := time.Now() + template := &x509.Certificate{ + Subject: pkix.Name{CommonName: "Test ACME Revoke Certificate"}, + Issuer: pkix.Name{CommonName: "Test ACME Revoke Certificate"}, + IsCA: false, + MaxPathLen: 0, + KeyUsage: x509.KeyUsageCertSign | x509.KeyUsageCRLSign, + NotBefore: now, + NotAfter: now.Add(time.Hour), + SerialNumber: serial, + } + + signer, ok := priv.(crypto.Signer) + if !ok { + return nil, nil, errors.Errorf("result is not a crypto.Signer: type %T", priv) + } + + cert, err := x509util.CreateCertificate(template, template, pub, signer) + + return cert, signer, err +} + +var errUnsupportedKey = fmt.Errorf("unknown key type; only RSA and ECDSA are supported") + +// keyID is the account identity provided by a CA during registration. +type keyID string + +// noKeyID indicates that jwsEncodeJSON should compute and use JWK instead of a KID. +// See jwsEncodeJSON for details. +const noKeyID = keyID("") + +// jwsEncodeJSON signs claimset using provided key and a nonce. +// The result is serialized in JSON format containing either kid or jwk +// fields based on the provided keyID value. +// +// If kid is non-empty, its quoted value is inserted in the protected head +// as "kid" field value. Otherwise, JWK is computed using jwkEncode and inserted +// as "jwk" field value. The "jwk" and "kid" fields are mutually exclusive. +// +// See https://tools.ietf.org/html/rfc7515#section-7. +// +// If nonce is empty, it will not be encoded into the header. +// Implementation taken from github.com/mholt/acmez, which seems to be based on +// https://github.com/golang/crypto/blob/master/acme/jws.go. +func jwsEncodeJSON(claimset interface{}, key crypto.Signer, kid keyID, nonce, u string) ([]byte, error) { + alg, sha := jwsHasher(key.Public()) + if alg == "" || !sha.Available() { + return nil, errUnsupportedKey + } + + phead, err := jwsHead(alg, nonce, u, kid, key) + if err != nil { + return nil, err + } + + var payload string + if claimset != nil { + cs, err := json.Marshal(claimset) + if err != nil { + return nil, err + } + payload = base64.RawURLEncoding.EncodeToString(cs) + } + + payloadToSign := []byte(phead + "." + payload) + hash := sha.New() + _, _ = hash.Write(payloadToSign) + digest := hash.Sum(nil) + + sig, err := jwsSign(key, sha, digest) + if err != nil { + return nil, err + } + + return jwsFinal(sha, sig, phead, payload) +} + +// jwsHasher indicates suitable JWS algorithm name and a hash function +// to use for signing a digest with the provided key. +// It returns ("", 0) if the key is not supported. +// Implementation taken from github.com/mholt/acmez, which seems to be based on +// https://github.com/golang/crypto/blob/master/acme/jws.go. +func jwsHasher(pub crypto.PublicKey) (string, crypto.Hash) { + switch pub := pub.(type) { + case *rsa.PublicKey: + return "RS256", crypto.SHA256 + case *ecdsa.PublicKey: + switch pub.Params().Name { + case "P-256": + return "ES256", crypto.SHA256 + case "P-384": + return "ES384", crypto.SHA384 + case "P-521": + return "ES512", crypto.SHA512 + } + } + return "", 0 +} + +// jwsSign signs the digest using the given key. +// The hash is unused for ECDSA keys. +// +// Note: non-stdlib crypto.Signer implementations are expected to return +// the signature in the format as specified in RFC7518. +// See https://tools.ietf.org/html/rfc7518 for more details. +// Implementation taken from github.com/mholt/acmez, which seems to be based on +// https://github.com/golang/crypto/blob/master/acme/jws.go. +func jwsSign(key crypto.Signer, hash crypto.Hash, digest []byte) ([]byte, error) { + if key, ok := key.(*ecdsa.PrivateKey); ok { + // The key.Sign method of ecdsa returns ASN1-encoded signature. + // So, we use the package Sign function instead + // to get R and S values directly and format the result accordingly. + r, s, err := ecdsa.Sign(rand.Reader, key, digest) + if err != nil { + return nil, err + } + rb, sb := r.Bytes(), s.Bytes() + size := key.Params().BitSize / 8 + if size%8 > 0 { + size++ + } + sig := make([]byte, size*2) + copy(sig[size-len(rb):], rb) + copy(sig[size*2-len(sb):], sb) + return sig, nil + } + return key.Sign(rand.Reader, digest, hash) +} + +// jwsHead constructs the protected JWS header for the given fields. +// Since jwk and kid are mutually-exclusive, the jwk will be encoded +// only if kid is empty. If nonce is empty, it will not be encoded. +// Implementation taken from github.com/mholt/acmez, which seems to be based on +// https://github.com/golang/crypto/blob/master/acme/jws.go. +func jwsHead(alg, nonce, u string, kid keyID, key crypto.Signer) (string, error) { + phead := fmt.Sprintf(`{"alg":%q`, alg) + if kid == noKeyID { + jwk, err := jwkEncode(key.Public()) + if err != nil { + return "", err + } + phead += fmt.Sprintf(`,"jwk":%s`, jwk) + } else { + phead += fmt.Sprintf(`,"kid":%q`, kid) + } + if nonce != "" { + phead += fmt.Sprintf(`,"nonce":%q`, nonce) + } + phead += fmt.Sprintf(`,"url":%q}`, u) + phead = base64.RawURLEncoding.EncodeToString([]byte(phead)) + return phead, nil +} + +// jwkEncode encodes public part of an RSA or ECDSA key into a JWK. +// The result is also suitable for creating a JWK thumbprint. +// https://tools.ietf.org/html/rfc7517 +// Implementation taken from github.com/mholt/acmez, which seems to be based on +// https://github.com/golang/crypto/blob/master/acme/jws.go. +func jwkEncode(pub crypto.PublicKey) (string, error) { + switch pub := pub.(type) { + case *rsa.PublicKey: + // https://tools.ietf.org/html/rfc7518#section-6.3.1 + n := pub.N + e := big.NewInt(int64(pub.E)) + // Field order is important. + // See https://tools.ietf.org/html/rfc7638#section-3.3 for details. + return fmt.Sprintf(`{"e":%q,"kty":"RSA","n":%q}`, + base64.RawURLEncoding.EncodeToString(e.Bytes()), + base64.RawURLEncoding.EncodeToString(n.Bytes()), + ), nil + case *ecdsa.PublicKey: + // https://tools.ietf.org/html/rfc7518#section-6.2.1 + p := pub.Curve.Params() + n := p.BitSize / 8 + if p.BitSize%8 != 0 { + n++ + } + x := pub.X.Bytes() + if n > len(x) { + x = append(make([]byte, n-len(x)), x...) + } + y := pub.Y.Bytes() + if n > len(y) { + y = append(make([]byte, n-len(y)), y...) + } + // Field order is important. + // See https://tools.ietf.org/html/rfc7638#section-3.3 for details. + return fmt.Sprintf(`{"crv":%q,"kty":"EC","x":%q,"y":%q}`, + p.Name, + base64.RawURLEncoding.EncodeToString(x), + base64.RawURLEncoding.EncodeToString(y), + ), nil + } + return "", errUnsupportedKey +} + +// jwsFinal constructs the final JWS object. +// Implementation taken from github.com/mholt/acmez, which seems to be based on +// https://github.com/golang/crypto/blob/master/acme/jws.go. +func jwsFinal(sha crypto.Hash, sig []byte, phead, payload string) ([]byte, error) { + enc := struct { + Protected string `json:"protected"` + Payload string `json:"payload"` + Sig string `json:"signature"` + }{ + Protected: phead, + Payload: payload, + Sig: base64.RawURLEncoding.EncodeToString(sig), + } + result, err := json.Marshal(&enc) + if err != nil { + return nil, err + } + return result, nil } type mockCA struct { @@ -138,17 +339,6 @@ func Test_validateReasonCode(t *testing.T) { } func Test_reason(t *testing.T) { - - // case ocsp.RemoveFromCRL: - // return "remove from crl" - // case ocsp.PrivilegeWithdrawn: - // return "privilege withdrawn" - // case ocsp.AACompromise: - // return "aa compromised" - // default: - // return "unspecified reason" - // } - // } tests := []struct { name string reasonCode int @@ -220,7 +410,8 @@ func Test_reason(t *testing.T) { } func Test_revokeOptions(t *testing.T) { - var cert *x509.Certificate + cert, _, err := generateCertKeyPair() + assert.FatalError(t, err) type args struct { serial string certToBeRevoked *x509.Certificate @@ -239,7 +430,7 @@ func Test_revokeOptions(t *testing.T) { }, want: &authority.RevokeOptions{ Serial: "1234", - Crt: nil, + Crt: cert, ACME: true, }, }, @@ -252,7 +443,7 @@ func Test_revokeOptions(t *testing.T) { }, want: &authority.RevokeOptions{ Serial: "1234", - Crt: nil, + Crt: cert, ACME: true, ReasonCode: 1, Reason: "key compromised", @@ -261,8 +452,8 @@ func Test_revokeOptions(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if got := revokeOptions(tt.args.serial, tt.args.certToBeRevoked, tt.args.reasonCode); !reflect.DeepEqual(got, tt.want) { - t.Errorf("revokeOptions() = %v, want %v", got, tt.want) + if got := revokeOptions(tt.args.serial, tt.args.certToBeRevoked, tt.args.reasonCode); !cmp.Equal(got, tt.want) { + t.Errorf("revokeOptions() diff = %s", cmp.Diff(got, tt.want)) } }) } @@ -279,7 +470,8 @@ func TestHandler_RevokeCert(t *testing.T) { chiCtx := chi.NewRouteContext() revokeURL := fmt.Sprintf("%s/acme/%s/revoke-cert", baseURL.String(), escProvName) - cert := parseCertificate(certPEM) + cert, key, err := generateCertKeyPair() + assert.FatalError(t, err) rp := &revokePayload{ Certificate: base64.RawURLEncoding.EncodeToString(cert.Raw), } @@ -295,6 +487,134 @@ func TestHandler_RevokeCert(t *testing.T) { } var tests = map[string]func(t *testing.T) test{ + "fail/no-jws": func(t *testing.T) test { + ctx := context.Background() + return test{ + ctx: ctx, + statusCode: 500, + err: acme.NewErrorISE("jws expected in request context"), + } + }, + "fail/nil-jws": func(t *testing.T) test { + ctx := context.WithValue(context.Background(), jwsContextKey, nil) + return test{ + ctx: ctx, + statusCode: 500, + err: acme.NewErrorISE("jws expected in request context"), + } + }, + "fail/no-provisioner": func(t *testing.T) test { + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + ctx := context.WithValue(context.Background(), jwsContextKey, jws) + return test{ + ctx: ctx, + statusCode: 500, + err: acme.NewErrorISE("provisioner does not exist"), + } + }, + "fail/nil-provisioner": func(t *testing.T) test { + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + ctx := context.WithValue(context.Background(), jwsContextKey, jws) + ctx = context.WithValue(ctx, provisionerContextKey, nil) + return test{ + ctx: ctx, + statusCode: 500, + err: acme.NewErrorISE("provisioner does not exist"), + } + }, + "fail/no-payload": func(t *testing.T) test { + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + ctx := context.WithValue(context.Background(), jwsContextKey, jws) + ctx = context.WithValue(ctx, provisionerContextKey, prov) + return test{ + ctx: ctx, + statusCode: 500, + err: acme.NewErrorISE("payload does not exist"), + } + }, + "fail/nil-payload": func(t *testing.T) test { + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + ctx := context.WithValue(context.Background(), jwsContextKey, jws) + ctx = context.WithValue(ctx, provisionerContextKey, prov) + ctx = context.WithValue(ctx, payloadContextKey, nil) + return test{ + ctx: ctx, + statusCode: 500, + err: acme.NewErrorISE("payload does not exist"), + } + }, + "fail/unmarshal-payload": func(t *testing.T) test { + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + malformedPayload := []byte(`{"payload":malformed?}`) + ctx := context.WithValue(context.Background(), jwsContextKey, jws) + ctx = context.WithValue(ctx, provisionerContextKey, prov) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: malformedPayload}) + return test{ + ctx: ctx, + statusCode: 500, + err: acme.NewErrorISE("error unmarshaling payload"), + } + }, "fail/wrong-certificate-encoding": func(t *testing.T) test { rp := &revokePayload{ Certificate: base64.StdEncoding.EncodeToString(cert.Raw), @@ -314,18 +634,10 @@ func TestHandler_RevokeCert(t *testing.T) { }, }, } - acc := &acme.Account{ID: "accountID", Status: acme.StatusInvalid} ctx := context.WithValue(context.Background(), provisionerContextKey, prov) - ctx = context.WithValue(ctx, accContextKey, acc) ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: wronglyEncodedPayloadBytes}) ctx = context.WithValue(ctx, jwsContextKey, jws) - ctx = context.WithValue(ctx, baseURLContextKey, baseURL) - ctx = context.WithValue(ctx, chi.RouteCtxKey, chiCtx) - db := &acme.MockDB{} - ca := &mockCA{} return test{ - db: db, - ca: ca, ctx: ctx, statusCode: 400, err: &acme.Error{ @@ -354,18 +666,10 @@ func TestHandler_RevokeCert(t *testing.T) { }, }, } - acc := &acme.Account{ID: "accountID", Status: acme.StatusInvalid} ctx := context.WithValue(context.Background(), provisionerContextKey, prov) - ctx = context.WithValue(ctx, accContextKey, acc) ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: wrongPayloadBytes}) ctx = context.WithValue(ctx, jwsContextKey, jws) - ctx = context.WithValue(ctx, baseURLContextKey, baseURL) - ctx = context.WithValue(ctx, chi.RouteCtxKey, chiCtx) - db := &acme.MockDB{} - ca := &mockCA{} return test{ - db: db, - ca: ca, ctx: ctx, statusCode: 400, err: &acme.Error{ @@ -375,6 +679,96 @@ func TestHandler_RevokeCert(t *testing.T) { }, } }, + "fail/db.GetCertificateBySerial": func(t *testing.T) test { + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + ctx := context.WithValue(context.Background(), provisionerContextKey, prov) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) + ctx = context.WithValue(ctx, jwsContextKey, jws) + db := &acme.MockDB{ + MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { + return nil, errors.New("force") + }, + } + return test{ + db: db, + ctx: ctx, + statusCode: 500, + err: acme.NewErrorISE("error retrieving certificate by serial"), + } + }, + "fail/no-account": func(t *testing.T) test { + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + ctx := context.WithValue(context.Background(), provisionerContextKey, prov) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) + ctx = context.WithValue(ctx, jwsContextKey, jws) + db := &acme.MockDB{ + MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { + assert.Equals(t, cert.SerialNumber.String(), serial) + return &acme.Certificate{}, nil + }, + } + return test{ + db: db, + ctx: ctx, + statusCode: 400, + err: acme.NewError(acme.ErrorAccountDoesNotExistType, "account not in context"), + } + }, + "fail/nil-account": func(t *testing.T) test { + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + ctx := context.WithValue(context.Background(), provisionerContextKey, prov) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) + ctx = context.WithValue(ctx, jwsContextKey, jws) + ctx = context.WithValue(ctx, accContextKey, nil) + db := &acme.MockDB{ + MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { + assert.Equals(t, cert.SerialNumber.String(), serial) + return &acme.Certificate{}, nil + }, + } + return test{ + db: db, + ctx: ctx, + statusCode: 400, + err: acme.NewError(acme.ErrorAccountDoesNotExistType, "account not in context"), + } + }, "fail/account-not-valid": func(t *testing.T) test { jws := &jose.JSONWebSignature{ Signatures: []jose.Signature{ @@ -459,6 +853,43 @@ func TestHandler_RevokeCert(t *testing.T) { }, } }, + "fail/unauthorized-certificate-key": func(t *testing.T) test { + _, unauthorizedKey, err := generateCertKeyPair() + assert.FatalError(t, err) + rp := &revokePayload{ + Certificate: base64.RawURLEncoding.EncodeToString(cert.Raw), + ReasonCode: v(1), + } + jwsBytes, err := jwsEncodeJSON(rp, unauthorizedKey, "", "nonce", revokeURL) + assert.FatalError(t, err) + jws, err := jose.ParseJWS(string(jwsBytes)) + assert.FatalError(t, err) + unauthorizedPayloadBytes, err := json.Marshal(rp) + assert.FatalError(t, err) + ctx := context.WithValue(context.Background(), provisionerContextKey, prov) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: unauthorizedPayloadBytes}) + ctx = context.WithValue(ctx, jwsContextKey, jws) + ctx = context.WithValue(ctx, baseURLContextKey, baseURL) + ctx = context.WithValue(ctx, chi.RouteCtxKey, chiCtx) + db := &acme.MockDB{ + MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { + assert.Equals(t, cert.SerialNumber.String(), serial) + return &acme.Certificate{ + AccountID: "accountID", + }, nil + }, + } + ca := &mockCA{} + acmeErr := acme.NewError(acme.ErrorUnauthorizedType, "verification of jws using certificate public key failed") + acmeErr.Detail = "No authorization provided for name CN=Test ACME Revoke Certificate" + return test{ + db: db, + ca: ca, + ctx: ctx, + statusCode: 403, + err: acmeErr, + } + }, "fail/certificate-revoked-check-fails": func(t *testing.T) test { jws := &jose.JSONWebSignature{ Signatures: []jose.Signature{ @@ -524,8 +955,6 @@ func TestHandler_RevokeCert(t *testing.T) { ctx = context.WithValue(ctx, accContextKey, acc) ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) ctx = context.WithValue(ctx, jwsContextKey, jws) - ctx = context.WithValue(ctx, baseURLContextKey, baseURL) - ctx = context.WithValue(ctx, chi.RouteCtxKey, chiCtx) db := &acme.MockDB{ MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { assert.Equals(t, cert.SerialNumber.String(), serial) @@ -551,7 +980,194 @@ func TestHandler_RevokeCert(t *testing.T) { }, } }, - "fail/certificate-revoke-fails": func(t *testing.T) test { + "fail/invalid-reasoncode": func(t *testing.T) test { + rp := &revokePayload{ + Certificate: base64.RawURLEncoding.EncodeToString(cert.Raw), + ReasonCode: v(7), + } + wrongReasonCodePayloadBytes, err := json.Marshal(rp) + assert.FatalError(t, err) + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + acc := &acme.Account{ID: "accountID", Status: acme.StatusValid} + ctx := context.WithValue(context.Background(), provisionerContextKey, prov) + ctx = context.WithValue(ctx, accContextKey, acc) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: wrongReasonCodePayloadBytes}) + ctx = context.WithValue(ctx, jwsContextKey, jws) + db := &acme.MockDB{ + MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { + assert.Equals(t, cert.SerialNumber.String(), serial) + return &acme.Certificate{ + AccountID: "accountID", + }, nil + }, + } + ca := &mockCA{ + MockIsRevoked: func(sn string) (bool, error) { + return false, nil + }, + } + return test{ + db: db, + ca: ca, + ctx: ctx, + statusCode: 400, + err: &acme.Error{ + Type: "urn:ietf:params:acme:error:badRevocationReason", + Detail: "The revocation reason provided is not allowed by the server", + Status: 400, + }, + } + }, + "fail/prov.AuthorizeRevoke": func(t *testing.T) test { + assert.FatalError(t, err) + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + mockACMEProv := &acme.MockProvisioner{ + MauthorizeRevoke: func(ctx context.Context, token string) error { + return errors.New("force") + }, + } + acc := &acme.Account{ID: "accountID", Status: acme.StatusValid} + ctx := context.WithValue(context.Background(), provisionerContextKey, mockACMEProv) + ctx = context.WithValue(ctx, accContextKey, acc) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) + ctx = context.WithValue(ctx, jwsContextKey, jws) + db := &acme.MockDB{ + MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { + assert.Equals(t, cert.SerialNumber.String(), serial) + return &acme.Certificate{ + AccountID: "accountID", + }, nil + }, + } + ca := &mockCA{ + MockIsRevoked: func(sn string) (bool, error) { + return false, nil + }, + } + return test{ + db: db, + ca: ca, + ctx: ctx, + statusCode: 500, + err: &acme.Error{ + Type: "urn:ietf:params:acme:error:serverInternal", + Detail: "The server experienced an internal error", + Status: 500, + }, + } + }, + "fail/ca.Revoke": func(t *testing.T) test { + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + acc := &acme.Account{ID: "accountID", Status: acme.StatusValid} + ctx := context.WithValue(context.Background(), provisionerContextKey, prov) + ctx = context.WithValue(ctx, accContextKey, acc) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) + ctx = context.WithValue(ctx, jwsContextKey, jws) + db := &acme.MockDB{ + MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { + assert.Equals(t, cert.SerialNumber.String(), serial) + return &acme.Certificate{ + AccountID: "accountID", + }, nil + }, + } + ca := &mockCA{ + MockRevoke: func(ctx context.Context, opts *authority.RevokeOptions) error { + return errors.New("force") + }, + } + return test{ + db: db, + ca: ca, + ctx: ctx, + statusCode: 500, + err: &acme.Error{ + Type: "urn:ietf:params:acme:error:serverInternal", + Detail: "The server experienced an internal error", + Status: 500, + }, + } + }, + "fail/ca.Revoke-already-revoked": func(t *testing.T) test { + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + acc := &acme.Account{ID: "accountID", Status: acme.StatusValid} + ctx := context.WithValue(context.Background(), provisionerContextKey, prov) + ctx = context.WithValue(ctx, accContextKey, acc) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) + ctx = context.WithValue(ctx, jwsContextKey, jws) + db := &acme.MockDB{ + MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { + assert.Equals(t, cert.SerialNumber.String(), serial) + return &acme.Certificate{ + AccountID: "accountID", + }, nil + }, + } + ca := &mockCA{ + MockIsRevoked: func(sn string) (bool, error) { + return false, nil + }, + MockRevoke: func(ctx context.Context, opts *authority.RevokeOptions) error { + return fmt.Errorf("certificate with serial number '%s' is already revoked", cert.SerialNumber.String()) + }, + } + return test{ + db: db, + ca: ca, + ctx: ctx, + statusCode: 400, + err: acme.NewError(acme.ErrorAlreadyRevokedType, "certificate with serial number '%s' is already revoked", cert.SerialNumber.String()), + } + }, + "ok/using-account-key": func(t *testing.T) test { jws := &jose.JSONWebSignature{ Signatures: []jose.Signature{ { @@ -580,40 +1196,26 @@ func TestHandler_RevokeCert(t *testing.T) { }, nil }, } - ca := &mockCA{ - MockRevoke: func(ctx context.Context, opts *authority.RevokeOptions) error { - return errors.New("force") - }, - } + ca := &mockCA{} return test{ db: db, ca: ca, ctx: ctx, - statusCode: 500, - err: &acme.Error{ - Type: "urn:ietf:params:acme:error:serverInternal", - Detail: "The server experienced an internal error", - Status: 500, - }, + statusCode: 200, } }, - "ok/using-account-key": func(t *testing.T) test { - jws := &jose.JSONWebSignature{ - Signatures: []jose.Signature{ - { - Protected: jose.Header{ - Algorithm: jose.ES256, - KeyID: "bar", - ExtraHeaders: map[jose.HeaderKey]interface{}{ - "url": revokeURL, - }, - }, - }, - }, + "ok/using-certificate-key": func(t *testing.T) test { + rp := &revokePayload{ + Certificate: base64.RawURLEncoding.EncodeToString(cert.Raw), + ReasonCode: v(1), } - acc := &acme.Account{ID: "accountID", Status: acme.StatusValid} + jwsBytes, err := jwsEncodeJSON(rp, key, "", "nonce", revokeURL) + assert.FatalError(t, err) + jws, err := jose.ParseJWS(string(jwsBytes)) + assert.FatalError(t, err) + payloadBytes, err := json.Marshal(rp) + assert.FatalError(t, err) ctx := context.WithValue(context.Background(), provisionerContextKey, prov) - ctx = context.WithValue(ctx, accContextKey, acc) ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) ctx = context.WithValue(ctx, jwsContextKey, jws) ctx = context.WithValue(ctx, baseURLContextKey, baseURL) From a7fbbc47483986899bb420942b0c5de515520371 Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Sun, 28 Nov 2021 21:20:57 +0100 Subject: [PATCH 24/36] Add tests for GetCertificateBySerial --- acme/api/revoke.go | 6 +- acme/api/revoke_test.go | 24 ++--- acme/db/nosql/certificate_test.go | 145 ++++++++++++++++++++++++++++-- authority/provisioner/acme.go | 2 +- 4 files changed, 152 insertions(+), 25 deletions(-) diff --git a/acme/api/revoke.go b/acme/api/revoke.go index 7ae93152..1c664dde 100644 --- a/acme/api/revoke.go +++ b/acme/api/revoke.go @@ -82,11 +82,11 @@ func (h *Handler) RevokeCert(w http.ResponseWriter, r *http.Request) { api.WriteError(w, wrapUnauthorizedError(certToBeRevoked, fmt.Sprintf("account '%s' has status '%s'", account.ID, account.Status), nil)) return } - if existingCert.AccountID != account.ID { // TODO: combine with the below; ony one of the two has to be true + if existingCert.AccountID != account.ID { // TODO(hs): combine this check with the one below; ony one of the two has to be true api.WriteError(w, wrapUnauthorizedError(certToBeRevoked, fmt.Sprintf("account '%s' does not own certificate '%s'", account.ID, existingCert.ID), nil)) return } - // TODO: check and implement "an account that holds authorizations for all of the identifiers in the certificate." + // TODO(hs): check and implement "an account that holds authorizations for all of the identifiers in the certificate." // In that case the certificate may not have been created by this account, but another account that was authorized before. } else { // if account doesn't need to be checked, the JWS should be verified to be signed by the @@ -157,7 +157,7 @@ func wrapUnauthorizedError(cert *x509.Certificate, msg string, err error) *acme. acmeErr = acme.WrapError(acme.ErrorUnauthorizedType, err, msg) } acmeErr.Status = http.StatusForbidden - acmeErr.Detail = fmt.Sprintf("No authorization provided for name %s", cert.Subject.String()) // TODO: what about other SANs? When no Subject is in the certificate? + acmeErr.Detail = fmt.Sprintf("No authorization provided for name %s", cert.Subject.String()) // TODO(hs): what about other SANs? When no Subject is in the certificate? return acmeErr } diff --git a/acme/api/revoke_test.go b/acme/api/revoke_test.go index 2feae989..05952240 100644 --- a/acme/api/revoke_test.go +++ b/acme/api/revoke_test.go @@ -616,10 +616,10 @@ func TestHandler_RevokeCert(t *testing.T) { } }, "fail/wrong-certificate-encoding": func(t *testing.T) test { - rp := &revokePayload{ + wrongPayload := &revokePayload{ Certificate: base64.StdEncoding.EncodeToString(cert.Raw), } - wronglyEncodedPayloadBytes, err := json.Marshal(rp) + wronglyEncodedPayloadBytes, err := json.Marshal(wrongPayload) assert.FatalError(t, err) jws := &jose.JSONWebSignature{ Signatures: []jose.Signature{ @@ -648,10 +648,10 @@ func TestHandler_RevokeCert(t *testing.T) { } }, "fail/no-certificate-encoded": func(t *testing.T) test { - rp := &revokePayload{ + emptyPayload := &revokePayload{ Certificate: base64.RawURLEncoding.EncodeToString([]byte{}), } - wrongPayloadBytes, err := json.Marshal(rp) + wrongPayloadBytes, err := json.Marshal(emptyPayload) assert.FatalError(t, err) jws := &jose.JSONWebSignature{ Signatures: []jose.Signature{ @@ -856,15 +856,15 @@ func TestHandler_RevokeCert(t *testing.T) { "fail/unauthorized-certificate-key": func(t *testing.T) test { _, unauthorizedKey, err := generateCertKeyPair() assert.FatalError(t, err) - rp := &revokePayload{ + jwsPayload := &revokePayload{ Certificate: base64.RawURLEncoding.EncodeToString(cert.Raw), - ReasonCode: v(1), + ReasonCode: v(2), } jwsBytes, err := jwsEncodeJSON(rp, unauthorizedKey, "", "nonce", revokeURL) assert.FatalError(t, err) jws, err := jose.ParseJWS(string(jwsBytes)) assert.FatalError(t, err) - unauthorizedPayloadBytes, err := json.Marshal(rp) + unauthorizedPayloadBytes, err := json.Marshal(jwsPayload) assert.FatalError(t, err) ctx := context.WithValue(context.Background(), provisionerContextKey, prov) ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: unauthorizedPayloadBytes}) @@ -981,11 +981,11 @@ func TestHandler_RevokeCert(t *testing.T) { } }, "fail/invalid-reasoncode": func(t *testing.T) test { - rp := &revokePayload{ + invalidReasonPayload := &revokePayload{ Certificate: base64.RawURLEncoding.EncodeToString(cert.Raw), ReasonCode: v(7), } - wrongReasonCodePayloadBytes, err := json.Marshal(rp) + wrongReasonCodePayloadBytes, err := json.Marshal(invalidReasonPayload) assert.FatalError(t, err) jws := &jose.JSONWebSignature{ Signatures: []jose.Signature{ @@ -1205,16 +1205,10 @@ func TestHandler_RevokeCert(t *testing.T) { } }, "ok/using-certificate-key": func(t *testing.T) test { - rp := &revokePayload{ - Certificate: base64.RawURLEncoding.EncodeToString(cert.Raw), - ReasonCode: v(1), - } jwsBytes, err := jwsEncodeJSON(rp, key, "", "nonce", revokeURL) assert.FatalError(t, err) jws, err := jose.ParseJWS(string(jwsBytes)) assert.FatalError(t, err) - payloadBytes, err := json.Marshal(rp) - assert.FatalError(t, err) ctx := context.WithValue(context.Background(), provisionerContextKey, prov) ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) ctx = context.WithValue(ctx, jwsContextKey, jws) diff --git a/acme/db/nosql/certificate_test.go b/acme/db/nosql/certificate_test.go index 8b6b6ef3..d64b3015 100644 --- a/acme/db/nosql/certificate_test.go +++ b/acme/db/nosql/certificate_test.go @@ -1,10 +1,12 @@ package nosql import ( + "bytes" "context" "crypto/x509" "encoding/json" "encoding/pem" + "fmt" "testing" "time" @@ -14,7 +16,6 @@ import ( "github.com/smallstep/certificates/db" "github.com/smallstep/nosql" nosqldb "github.com/smallstep/nosql/database" - "go.step.sm/crypto/pemutil" ) @@ -31,7 +32,6 @@ func TestDB_CreateCertificate(t *testing.T) { err error _id *string } - countOfCmpAndSwapCalls := 0 var tests = map[string]func(t *testing.T) test{ "fail/cmpAndSwap-error": func(t *testing.T) test { cert := &acme.Certificate{ @@ -76,7 +76,10 @@ func TestDB_CreateCertificate(t *testing.T) { return test{ db: &db.MockNoSQLDB{ MCmpAndSwap: func(bucket, key, old, nu []byte) ([]byte, bool, error) { - if countOfCmpAndSwapCalls == 0 { + if !bytes.Equal(bucket, certTable) && !bytes.Equal(bucket, certBySerialTable) { + t.Fail() + } + if bytes.Equal(bucket, certTable) { *idPtr = string(key) assert.Equals(t, bucket, certTable) assert.Equals(t, key, []byte(cert.ID)) @@ -90,7 +93,7 @@ func TestDB_CreateCertificate(t *testing.T) { assert.True(t, clock.Now().Add(-time.Minute).Before(dbc.CreatedAt)) assert.True(t, clock.Now().Add(time.Minute).After(dbc.CreatedAt)) } - if countOfCmpAndSwapCalls == 1 { + if bytes.Equal(bucket, certBySerialTable) { assert.Equals(t, bucket, certBySerialTable) assert.Equals(t, key, []byte(cert.Leaf.SerialNumber.String())) assert.Equals(t, old, nil) @@ -103,8 +106,6 @@ func TestDB_CreateCertificate(t *testing.T) { *idPtr = cert.ID } - countOfCmpAndSwapCalls++ - return nil, true, nil }, }, @@ -335,3 +336,135 @@ func Test_parseBundle(t *testing.T) { }) } } + +func TestDB_GetCertificateBySerial(t *testing.T) { + leaf, err := pemutil.ReadCertificate("../../../authority/testdata/certs/foo.crt") + assert.FatalError(t, err) + inter, err := pemutil.ReadCertificate("../../../authority/testdata/certs/intermediate_ca.crt") + assert.FatalError(t, err) + root, err := pemutil.ReadCertificate("../../../authority/testdata/certs/root_ca.crt") + assert.FatalError(t, err) + + certID := "certID" + serial := "" + type test struct { + db nosql.DB + err error + acmeErr *acme.Error + } + var tests = map[string]func(t *testing.T) test{ + "fail/not-found": func(t *testing.T) test { + return test{ + db: &db.MockNoSQLDB{ + MGet: func(bucket, key []byte) ([]byte, error) { + if bytes.Equal(bucket, certBySerialTable) { + return nil, nosqldb.ErrNotFound + } + return nil, errors.New("wrong table") + }, + }, + acmeErr: acme.NewError(acme.ErrorMalformedType, "certificate with serial %s not found", serial), + } + }, + "fail/db-error": func(t *testing.T) test { + return test{ + db: &db.MockNoSQLDB{ + MGet: func(bucket, key []byte) ([]byte, error) { + if bytes.Equal(bucket, certBySerialTable) { + return nil, errors.New("force") + } + return nil, errors.New("wrong table") + }, + }, + err: fmt.Errorf("error loading certificate ID for serial %s", serial), + } + }, + "fail/unmarshal-dbSerial": func(t *testing.T) test { + return test{ + db: &db.MockNoSQLDB{ + MGet: func(bucket, key []byte) ([]byte, error) { + if bytes.Equal(bucket, certBySerialTable) { + return []byte(`{"serial":malformed!}`), nil + } + return nil, errors.New("wrong table") + }, + }, + err: fmt.Errorf("error unmarshaling certificate with serial %s", serial), + } + }, + "ok": func(t *testing.T) test { + return test{ + db: &db.MockNoSQLDB{ + MGet: func(bucket, key []byte) ([]byte, error) { + + if bytes.Equal(bucket, certBySerialTable) { + certSerial := dbSerial{ + Serial: serial, + CertificateID: certID, + } + + b, err := json.Marshal(certSerial) + assert.FatalError(t, err) + + return b, nil + } + + if bytes.Equal(bucket, certTable) { + cert := dbCert{ + ID: certID, + AccountID: "accountID", + OrderID: "orderID", + Leaf: pem.EncodeToMemory(&pem.Block{ + Type: "CERTIFICATE", + Bytes: leaf.Raw, + }), + Intermediates: append(pem.EncodeToMemory(&pem.Block{ + Type: "CERTIFICATE", + Bytes: inter.Raw, + }), pem.EncodeToMemory(&pem.Block{ + Type: "CERTIFICATE", + Bytes: root.Raw, + })...), + CreatedAt: clock.Now(), + } + b, err := json.Marshal(cert) + assert.FatalError(t, err) + + return b, nil + } + return nil, errors.New("wrong table") + }, + }, + } + }, + } + for name, prep := range tests { + tc := prep(t) + t.Run(name, func(t *testing.T) { + d := DB{db: tc.db} + cert, err := d.GetCertificateBySerial(context.Background(), serial) + if err != nil { + switch k := err.(type) { + case *acme.Error: + if assert.NotNil(t, tc.acmeErr) { + assert.Equals(t, k.Type, tc.acmeErr.Type) + assert.Equals(t, k.Detail, tc.acmeErr.Detail) + assert.Equals(t, k.Status, tc.acmeErr.Status) + assert.Equals(t, k.Err.Error(), tc.acmeErr.Err.Error()) + assert.Equals(t, k.Detail, tc.acmeErr.Detail) + } + default: + if assert.NotNil(t, tc.err) { + assert.HasPrefix(t, err.Error(), tc.err.Error()) + } + } + } else if assert.Nil(t, tc.err) { + assert.Equals(t, cert.ID, certID) + assert.Equals(t, cert.AccountID, "accountID") + assert.Equals(t, cert.OrderID, "orderID") + assert.Equals(t, cert.Leaf, leaf) + assert.Equals(t, cert.Intermediates, []*x509.Certificate{inter, root}) + } + }) + } +} diff --git a/authority/provisioner/acme.go b/authority/provisioner/acme.go index 25821051..c8950568 100644 --- a/authority/provisioner/acme.go +++ b/authority/provisioner/acme.go @@ -102,7 +102,7 @@ func (p *ACME) AuthorizeSign(ctx context.Context, token string) ([]SignOption, e // AuthorizeRevoke is called just before the certificate is to be revoked by // the CA. It can be used to authorize revocation of a certificate. It // currently is a no-op. -// TODO: add configuration option that toggles revocation? Or change function signature to make it more useful? +// TODO(hs): add configuration option that toggles revocation? Or change function signature to make it more useful? // Or move certain logic out of the Revoke API to here? Would likely involve some more stuff in the ctx. func (p *ACME) AuthorizeRevoke(ctx context.Context, token string) error { return nil From bae1d256eeea659cfea4a016730312f8c025ac5a Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Thu, 2 Dec 2021 10:59:56 +0100 Subject: [PATCH 25/36] Improve tests for JWK vs. KID revoke auth flow The logic for both test cases is fairly similar, but with some small differences. Made those clearer by means of some comments. Also added some comments to the middleware logic that decided whether to extract JWK or lookup by KID. --- acme/api/middleware.go | 11 ++++++----- acme/api/middleware_test.go | 10 +++------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/acme/api/middleware.go b/acme/api/middleware.go index e0bbcdda..d701f240 100644 --- a/acme/api/middleware.go +++ b/acme/api/middleware.go @@ -262,11 +262,11 @@ func (h *Handler) extractJWK(next nextHTTP) nextHTTP { // Store the JWK in the context. ctx = context.WithValue(ctx, jwkContextKey, jwk) - // Get Account or continue to generate a new one. + // Get Account OR continue to generate a new one OR continue Revoke with certificate private key acc, err := h.db.GetAccountByKeyID(ctx, jwk.KeyID) switch { case errors.Is(err, acme.ErrNotFound): - // For NewAccount requests ... + // For NewAccount and Revoke requests ... break case err != nil: api.WriteError(w, err) @@ -364,14 +364,15 @@ func (h *Handler) extractOrLookupJWK(next nextHTTP) nextHTTP { } // at this point the JWS has already been verified (if correctly configured in middleware), - // and it can be used to check if a JWK exists. + // and it can be used to check if a JWK exists. This flow is used when the ACME client + // signed the payload with a certificate private key. if canExtractJWKFrom(jws) { h.extractJWK(next)(w, r) return } - // default to looking up the JWK based on KeyID - // NOTE: this is a JWK signed with the certificate private key + // default to looking up the JWK based on KeyID. This flow is used when the ACME client + // signed the payload with an account private key. h.lookupJWK(next)(w, r) } } diff --git a/acme/api/middleware_test.go b/acme/api/middleware_test.go index 7b8ae828..050b46a5 100644 --- a/acme/api/middleware_test.go +++ b/acme/api/middleware_test.go @@ -1557,7 +1557,7 @@ func TestHandler_extractOrLookupJWK(t *testing.T) { pub := jwk.Public() pub.KeyID = base64.RawURLEncoding.EncodeToString(kid) so := new(jose.SignerOptions) - so.WithHeader("jwk", pub) + so.WithHeader("jwk", pub) // JWK for certificate private key flow signer, err := jose.NewSigner(jose.SigningKey{ Algorithm: jose.SignatureAlgorithm(jwk.Algorithm), Key: jwk.Key, @@ -1569,14 +1569,12 @@ func TestHandler_extractOrLookupJWK(t *testing.T) { assert.FatalError(t, err) parsedJWS, err := jose.ParseJWS(raw) assert.FatalError(t, err) - assert.FatalError(t, err) - acc := &acme.Account{Status: "valid"} return test{ linker: NewLinker("dns", "acme"), db: &acme.MockDB{ MockGetAccountByKeyID: func(ctx context.Context, kid string) (*acme.Account, error) { assert.Equals(t, kid, pub.KeyID) - return acc, nil + return nil, acme.ErrNotFound }, }, ctx: context.WithValue(context.Background(), jwsContextKey, parsedJWS), @@ -1595,7 +1593,7 @@ func TestHandler_extractOrLookupJWK(t *testing.T) { accID := "accID" prefix := fmt.Sprintf("%s/acme/%s/account/", baseURL, provName) so := new(jose.SignerOptions) - so.WithHeader("kid", fmt.Sprintf("%s%s", prefix, accID)) + so.WithHeader("kid", fmt.Sprintf("%s%s", prefix, accID)) // KID for account private key flow signer, err := jose.NewSigner(jose.SigningKey{ Algorithm: jose.SignatureAlgorithm(jwk.Algorithm), Key: jwk.Key, @@ -1607,8 +1605,6 @@ func TestHandler_extractOrLookupJWK(t *testing.T) { assert.FatalError(t, err) parsedJWS, err := jose.ParseJWS(raw) assert.FatalError(t, err) - assert.FatalError(t, err) - //acc := &acme.Account{Status: "valid", Key: jwk} acc := &acme.Account{ID: "accID", Key: jwk, Status: "valid"} ctx := context.WithValue(context.Background(), provisionerContextKey, prov) ctx = context.WithValue(ctx, baseURLContextKey, baseURL) From 06bb97c91e3d94c615b2b07010d765a91c990a95 Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Thu, 2 Dec 2021 16:25:35 +0100 Subject: [PATCH 26/36] Add logic for Account authorizations and improve tests --- acme/api/revoke.go | 139 ++++++- acme/api/revoke_test.go | 777 ++++++++++++++++++++++++------------ acme/db.go | 18 +- acme/db/nosql/authz.go | 34 ++ acme/db/nosql/authz_test.go | 153 +++++++ acme/order.go | 3 + go.mod | 1 + 7 files changed, 845 insertions(+), 280 deletions(-) diff --git a/acme/api/revoke.go b/acme/api/revoke.go index 1c664dde..209bc204 100644 --- a/acme/api/revoke.go +++ b/acme/api/revoke.go @@ -1,6 +1,8 @@ package api import ( + "bytes" + "context" "crypto/x509" "encoding/base64" "encoding/json" @@ -66,35 +68,36 @@ func (h *Handler) RevokeCert(w http.ResponseWriter, r *http.Request) { } serial := certToBeRevoked.SerialNumber.String() - existingCert, err := h.db.GetCertificateBySerial(ctx, serial) + dbCert, err := h.db.GetCertificateBySerial(ctx, serial) if err != nil { api.WriteError(w, acme.WrapErrorISE(err, "error retrieving certificate by serial")) return } + if !bytes.Equal(dbCert.Leaf.Raw, certToBeRevoked.Raw) { + // this should never happen + api.WriteError(w, acme.NewErrorISE("certificate raw bytes are not equal")) + return + } + if shouldCheckAccountFrom(jws) { account, err := accountFromContext(ctx) if err != nil { api.WriteError(w, err) return } - if !account.IsValid() { - api.WriteError(w, wrapUnauthorizedError(certToBeRevoked, fmt.Sprintf("account '%s' has status '%s'", account.ID, account.Status), nil)) + acmeErr := h.isAccountAuthorized(ctx, dbCert, certToBeRevoked, account) + if acmeErr != nil { + api.WriteError(w, acmeErr) return } - if existingCert.AccountID != account.ID { // TODO(hs): combine this check with the one below; ony one of the two has to be true - api.WriteError(w, wrapUnauthorizedError(certToBeRevoked, fmt.Sprintf("account '%s' does not own certificate '%s'", account.ID, existingCert.ID), nil)) - return - } - // TODO(hs): check and implement "an account that holds authorizations for all of the identifiers in the certificate." - // In that case the certificate may not have been created by this account, but another account that was authorized before. } else { // if account doesn't need to be checked, the JWS should be verified to be signed by the // private key that belongs to the public key in the certificate to be revoked. _, err := jws.Verify(certToBeRevoked.PublicKey) if err != nil { // TODO(hs): possible to determine an error vs. unauthorized and thus provide an ISE vs. Unauthorized? - api.WriteError(w, wrapUnauthorizedError(certToBeRevoked, "verification of jws using certificate public key failed", err)) + api.WriteError(w, wrapUnauthorizedError(certToBeRevoked, nil, "verification of jws using certificate public key failed", err)) return } } @@ -137,6 +140,107 @@ func (h *Handler) RevokeCert(w http.ResponseWriter, r *http.Request) { w.Write(nil) } +// isAccountAuthorized checks if an ACME account that was retrieved earlier is authorized +// to revoke the certificate. An Account must always be valid in order to revoke a certificate. +// In case the certificate retrieved from the database belongs to the Account, the Account is +// authorized. If the certificate retrieved from the database doesn't belong to the Account, +// the identifiers in the certificate are extracted and compared against the (valid) Authorizations +// that are stored for the ACME Account. If these sets match, the Account is considered authorized +// to revoke the certificate. If this check fails, the client will receive an unauthorized error. +func (h *Handler) isAccountAuthorized(ctx context.Context, dbCert *acme.Certificate, certToBeRevoked *x509.Certificate, account *acme.Account) *acme.Error { + if !account.IsValid() { + return wrapUnauthorizedError(certToBeRevoked, nil, fmt.Sprintf("account '%s' has status '%s'", account.ID, account.Status), nil) + } + certificateBelongsToAccount := dbCert.AccountID == account.ID + if certificateBelongsToAccount { + return nil // return early; skip relatively expensive database check + } + requiredIdentifiers := extractIdentifiers(certToBeRevoked) + if len(requiredIdentifiers) == 0 { + return wrapUnauthorizedError(certToBeRevoked, nil, "cannot authorize revocation without providing identifiers to authorize", nil) + } + authzs, err := h.db.GetAuthorizationsByAccountID(ctx, account.ID) + if err != nil { + return acme.WrapErrorISE(err, "error retrieving authorizations for Account %s", account.ID) + } + authorizedIdentifiers := map[string]acme.Identifier{} + for _, authz := range authzs { + // Only valid Authorizations are included + if authz.Status != acme.StatusValid { + continue + } + authorizedIdentifiers[identifierKey(authz.Identifier)] = authz.Identifier + } + if len(authorizedIdentifiers) == 0 { + unauthorizedIdentifiers := []acme.Identifier{} + for _, identifier := range requiredIdentifiers { + unauthorizedIdentifiers = append(unauthorizedIdentifiers, identifier) + } + return wrapUnauthorizedError(certToBeRevoked, unauthorizedIdentifiers, fmt.Sprintf("account '%s' does not have valid authorizations", account.ID), nil) + } + unauthorizedIdentifiers := []acme.Identifier{} + for key := range requiredIdentifiers { + _, ok := authorizedIdentifiers[key] + if !ok { + unauthorizedIdentifiers = append(unauthorizedIdentifiers, requiredIdentifiers[key]) + } + } + if len(unauthorizedIdentifiers) != 0 { + return wrapUnauthorizedError(certToBeRevoked, unauthorizedIdentifiers, fmt.Sprintf("account '%s' does not have authorizations for all identifiers", account.ID), nil) + } + + return nil +} + +// identifierKey creates a unique key for an ACME identifier using +// the following format: ip|127.0.0.1; dns|*.example.com +func identifierKey(identifier acme.Identifier) string { + if identifier.Type == acme.IP { + return "ip|" + identifier.Value + } + if identifier.Type == acme.DNS { + return "dns|" + identifier.Value + } + return "unsupported|" + identifier.Value +} + +// extractIdentifiers extracts ACME identifiers from an x509 certificate and +// creates a map from them. The map ensures that double SANs are deduplicated. +// The Subject CommonName is included, because RFC8555 7.4 states that DNS +// identifiers can come from either the CommonName or a DNS SAN or both. When +// authorizing issuance, the DNS identifier must be in the request and will be +// included in the validation (see Order.sans()) as of now. This means that the +// CommonName will in fact have an authorization available. +func extractIdentifiers(cert *x509.Certificate) map[string]acme.Identifier { + result := map[string]acme.Identifier{} + for _, name := range cert.DNSNames { + identifier := acme.Identifier{ + Type: acme.DNS, + Value: name, + } + result[identifierKey(identifier)] = identifier + } + for _, ip := range cert.IPAddresses { + identifier := acme.Identifier{ + Type: acme.IP, + Value: ip.String(), + } + result[identifierKey(identifier)] = identifier + } + // TODO(hs): should we include the CommonName or not? + if cert.Subject.CommonName != "" { + identifier := acme.Identifier{ + // assuming only DNS can be in Common Name (RFC8555, 7.4); RFC8738 + // IP Identifier Validation Extension does not state anything about this. + // This logic is in accordance with the logic in order.canonicalize() + Type: acme.DNS, + Value: cert.Subject.CommonName, + } + result[identifierKey(identifier)] = identifier + } + return result +} + // wrapRevokeErr is a best effort implementation to transform an error during // revocation into an ACME error, so that clients can understand the error. func wrapRevokeErr(err error) *acme.Error { @@ -149,15 +253,24 @@ func wrapRevokeErr(err error) *acme.Error { // unauthorizedError returns an ACME error indicating the request was // not authorized to revoke the certificate. -func wrapUnauthorizedError(cert *x509.Certificate, msg string, err error) *acme.Error { +func wrapUnauthorizedError(cert *x509.Certificate, unauthorizedIdentifiers []acme.Identifier, msg string, err error) *acme.Error { var acmeErr *acme.Error if err == nil { acmeErr = acme.NewError(acme.ErrorUnauthorizedType, msg) } else { acmeErr = acme.WrapError(acme.ErrorUnauthorizedType, err, msg) } - acmeErr.Status = http.StatusForbidden - acmeErr.Detail = fmt.Sprintf("No authorization provided for name %s", cert.Subject.String()) // TODO(hs): what about other SANs? When no Subject is in the certificate? + acmeErr.Status = http.StatusForbidden // RFC8555 7.6 shows example with 403 + + switch { + case len(unauthorizedIdentifiers) > 0: + identifier := unauthorizedIdentifiers[0] // picking the first; compound may be an option too? + acmeErr.Detail = fmt.Sprintf("No authorization provided for name %s", identifier.Value) + case cert.Subject.String() != "": + acmeErr.Detail = fmt.Sprintf("No authorization provided for name %s", cert.Subject.CommonName) + default: + acmeErr.Detail = "No authorization provided" + } return acmeErr } diff --git a/acme/api/revoke_test.go b/acme/api/revoke_test.go index 05952240..cf036abb 100644 --- a/acme/api/revoke_test.go +++ b/acme/api/revoke_test.go @@ -14,6 +14,8 @@ import ( "fmt" "io" "math/big" + "net" + "net/http" "net/http/httptest" "net/url" "testing" @@ -37,6 +39,10 @@ func v(v int) *int { return &v } +func generateSerial() (*big.Int, error) { + return rand.Int(rand.Reader, big.NewInt(1000000000000000000)) +} + // generateCertKeyPair generates fresh x509 certificate/key pairs for testing func generateCertKeyPair() (*x509.Certificate, crypto.Signer, error) { @@ -45,15 +51,16 @@ func generateCertKeyPair() (*x509.Certificate, crypto.Signer, error) { return nil, nil, err } - serial, err := rand.Int(rand.Reader, big.NewInt(1000000000000000000)) + serial, err := generateSerial() if err != nil { return nil, nil, err } now := time.Now() template := &x509.Certificate{ - Subject: pkix.Name{CommonName: "Test ACME Revoke Certificate"}, + Subject: pkix.Name{CommonName: "127.0.0.1"}, Issuer: pkix.Name{CommonName: "Test ACME Revoke Certificate"}, + IPAddresses: []net.IP{net.ParseIP("127.0.0.1")}, IsCA: false, MaxPathLen: 0, KeyUsage: x509.KeyUsageCertSign | x509.KeyUsageCRLSign, @@ -453,7 +460,7 @@ func Test_revokeOptions(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := revokeOptions(tt.args.serial, tt.args.certToBeRevoked, tt.args.reasonCode); !cmp.Equal(got, tt.want) { - t.Errorf("revokeOptions() diff = %s", cmp.Diff(got, tt.want)) + t.Errorf("revokeOptions() diff =\n%s", cmp.Diff(got, tt.want)) } }) } @@ -478,6 +485,20 @@ func TestHandler_RevokeCert(t *testing.T) { payloadBytes, err := json.Marshal(rp) assert.FatalError(t, err) + jws := &jose.JSONWebSignature{ + Signatures: []jose.Signature{ + { + Protected: jose.Header{ + Algorithm: jose.ES256, + KeyID: "bar", + ExtraHeaders: map[jose.HeaderKey]interface{}{ + "url": revokeURL, + }, + }, + }, + }, + } + type test struct { db acme.DB ca acme.CertificateAuthority @@ -504,19 +525,6 @@ func TestHandler_RevokeCert(t *testing.T) { } }, "fail/no-provisioner": func(t *testing.T) test { - jws := &jose.JSONWebSignature{ - Signatures: []jose.Signature{ - { - Protected: jose.Header{ - Algorithm: jose.ES256, - KeyID: "bar", - ExtraHeaders: map[jose.HeaderKey]interface{}{ - "url": revokeURL, - }, - }, - }, - }, - } ctx := context.WithValue(context.Background(), jwsContextKey, jws) return test{ ctx: ctx, @@ -525,19 +533,6 @@ func TestHandler_RevokeCert(t *testing.T) { } }, "fail/nil-provisioner": func(t *testing.T) test { - jws := &jose.JSONWebSignature{ - Signatures: []jose.Signature{ - { - Protected: jose.Header{ - Algorithm: jose.ES256, - KeyID: "bar", - ExtraHeaders: map[jose.HeaderKey]interface{}{ - "url": revokeURL, - }, - }, - }, - }, - } ctx := context.WithValue(context.Background(), jwsContextKey, jws) ctx = context.WithValue(ctx, provisionerContextKey, nil) return test{ @@ -547,19 +542,6 @@ func TestHandler_RevokeCert(t *testing.T) { } }, "fail/no-payload": func(t *testing.T) test { - jws := &jose.JSONWebSignature{ - Signatures: []jose.Signature{ - { - Protected: jose.Header{ - Algorithm: jose.ES256, - KeyID: "bar", - ExtraHeaders: map[jose.HeaderKey]interface{}{ - "url": revokeURL, - }, - }, - }, - }, - } ctx := context.WithValue(context.Background(), jwsContextKey, jws) ctx = context.WithValue(ctx, provisionerContextKey, prov) return test{ @@ -569,19 +551,6 @@ func TestHandler_RevokeCert(t *testing.T) { } }, "fail/nil-payload": func(t *testing.T) test { - jws := &jose.JSONWebSignature{ - Signatures: []jose.Signature{ - { - Protected: jose.Header{ - Algorithm: jose.ES256, - KeyID: "bar", - ExtraHeaders: map[jose.HeaderKey]interface{}{ - "url": revokeURL, - }, - }, - }, - }, - } ctx := context.WithValue(context.Background(), jwsContextKey, jws) ctx = context.WithValue(ctx, provisionerContextKey, prov) ctx = context.WithValue(ctx, payloadContextKey, nil) @@ -592,19 +561,6 @@ func TestHandler_RevokeCert(t *testing.T) { } }, "fail/unmarshal-payload": func(t *testing.T) test { - jws := &jose.JSONWebSignature{ - Signatures: []jose.Signature{ - { - Protected: jose.Header{ - Algorithm: jose.ES256, - KeyID: "bar", - ExtraHeaders: map[jose.HeaderKey]interface{}{ - "url": revokeURL, - }, - }, - }, - }, - } malformedPayload := []byte(`{"payload":malformed?}`) ctx := context.WithValue(context.Background(), jwsContextKey, jws) ctx = context.WithValue(ctx, provisionerContextKey, prov) @@ -621,19 +577,6 @@ func TestHandler_RevokeCert(t *testing.T) { } wronglyEncodedPayloadBytes, err := json.Marshal(wrongPayload) assert.FatalError(t, err) - jws := &jose.JSONWebSignature{ - Signatures: []jose.Signature{ - { - Protected: jose.Header{ - Algorithm: jose.ES256, - KeyID: "bar", - ExtraHeaders: map[jose.HeaderKey]interface{}{ - "url": revokeURL, - }, - }, - }, - }, - } ctx := context.WithValue(context.Background(), provisionerContextKey, prov) ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: wronglyEncodedPayloadBytes}) ctx = context.WithValue(ctx, jwsContextKey, jws) @@ -651,23 +594,10 @@ func TestHandler_RevokeCert(t *testing.T) { emptyPayload := &revokePayload{ Certificate: base64.RawURLEncoding.EncodeToString([]byte{}), } - wrongPayloadBytes, err := json.Marshal(emptyPayload) + emptyPayloadBytes, err := json.Marshal(emptyPayload) assert.FatalError(t, err) - jws := &jose.JSONWebSignature{ - Signatures: []jose.Signature{ - { - Protected: jose.Header{ - Algorithm: jose.ES256, - KeyID: "bar", - ExtraHeaders: map[jose.HeaderKey]interface{}{ - "url": revokeURL, - }, - }, - }, - }, - } ctx := context.WithValue(context.Background(), provisionerContextKey, prov) - ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: wrongPayloadBytes}) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: emptyPayloadBytes}) ctx = context.WithValue(ctx, jwsContextKey, jws) return test{ ctx: ctx, @@ -680,19 +610,6 @@ func TestHandler_RevokeCert(t *testing.T) { } }, "fail/db.GetCertificateBySerial": func(t *testing.T) test { - jws := &jose.JSONWebSignature{ - Signatures: []jose.Signature{ - { - Protected: jose.Header{ - Algorithm: jose.ES256, - KeyID: "bar", - ExtraHeaders: map[jose.HeaderKey]interface{}{ - "url": revokeURL, - }, - }, - }, - }, - } ctx := context.WithValue(context.Background(), provisionerContextKey, prov) ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) ctx = context.WithValue(ctx, jwsContextKey, jws) @@ -708,27 +625,37 @@ func TestHandler_RevokeCert(t *testing.T) { err: acme.NewErrorISE("error retrieving certificate by serial"), } }, - "fail/no-account": func(t *testing.T) test { - jws := &jose.JSONWebSignature{ - Signatures: []jose.Signature{ - { - Protected: jose.Header{ - Algorithm: jose.ES256, - KeyID: "bar", - ExtraHeaders: map[jose.HeaderKey]interface{}{ - "url": revokeURL, - }, - }, - }, - }, - } + "fail/different-certificate-contents": func(t *testing.T) test { + aDifferentCert, _, err := generateCertKeyPair() + assert.FatalError(t, err) ctx := context.WithValue(context.Background(), provisionerContextKey, prov) ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) ctx = context.WithValue(ctx, jwsContextKey, jws) db := &acme.MockDB{ MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { assert.Equals(t, cert.SerialNumber.String(), serial) - return &acme.Certificate{}, nil + return &acme.Certificate{ + Leaf: aDifferentCert, + }, nil + }, + } + return test{ + db: db, + ctx: ctx, + statusCode: 500, + err: acme.NewErrorISE("certificate raw bytes are not equal"), + } + }, + "fail/no-account": func(t *testing.T) test { + ctx := context.WithValue(context.Background(), provisionerContextKey, prov) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) + ctx = context.WithValue(ctx, jwsContextKey, jws) + db := &acme.MockDB{ + MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { + assert.Equals(t, cert.SerialNumber.String(), serial) + return &acme.Certificate{ + Leaf: cert, + }, nil }, } return test{ @@ -739,19 +666,6 @@ func TestHandler_RevokeCert(t *testing.T) { } }, "fail/nil-account": func(t *testing.T) test { - jws := &jose.JSONWebSignature{ - Signatures: []jose.Signature{ - { - Protected: jose.Header{ - Algorithm: jose.ES256, - KeyID: "bar", - ExtraHeaders: map[jose.HeaderKey]interface{}{ - "url": revokeURL, - }, - }, - }, - }, - } ctx := context.WithValue(context.Background(), provisionerContextKey, prov) ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) ctx = context.WithValue(ctx, jwsContextKey, jws) @@ -759,7 +673,9 @@ func TestHandler_RevokeCert(t *testing.T) { db := &acme.MockDB{ MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { assert.Equals(t, cert.SerialNumber.String(), serial) - return &acme.Certificate{}, nil + return &acme.Certificate{ + Leaf: cert, + }, nil }, } return test{ @@ -770,19 +686,6 @@ func TestHandler_RevokeCert(t *testing.T) { } }, "fail/account-not-valid": func(t *testing.T) test { - jws := &jose.JSONWebSignature{ - Signatures: []jose.Signature{ - { - Protected: jose.Header{ - Algorithm: jose.ES256, - KeyID: "bar", - ExtraHeaders: map[jose.HeaderKey]interface{}{ - "url": revokeURL, - }, - }, - }, - }, - } acc := &acme.Account{ID: "accountID", Status: acme.StatusInvalid} ctx := context.WithValue(context.Background(), provisionerContextKey, prov) ctx = context.WithValue(ctx, accContextKey, acc) @@ -795,6 +698,7 @@ func TestHandler_RevokeCert(t *testing.T) { assert.Equals(t, cert.SerialNumber.String(), serial) return &acme.Certificate{ AccountID: "accountID", + Leaf: cert, }, nil }, } @@ -806,25 +710,12 @@ func TestHandler_RevokeCert(t *testing.T) { statusCode: 403, err: &acme.Error{ Type: "urn:ietf:params:acme:error:unauthorized", - Detail: fmt.Sprintf("No authorization provided for name %s", cert.Subject.String()), + Detail: "No authorization provided for name 127.0.0.1", Status: 403, }, } }, - "fail/account-not-authorized": func(t *testing.T) test { - jws := &jose.JSONWebSignature{ - Signatures: []jose.Signature{ - { - Protected: jose.Header{ - Algorithm: jose.ES256, - KeyID: "bar", - ExtraHeaders: map[jose.HeaderKey]interface{}{ - "url": revokeURL, - }, - }, - }, - }, - } + "fail/db.GetAuthorizationsByAccountID-error": func(t *testing.T) test { acc := &acme.Account{ID: "accountID", Status: acme.StatusValid} ctx := context.WithValue(context.Background(), provisionerContextKey, prov) ctx = context.WithValue(ctx, accContextKey, acc) @@ -837,6 +728,49 @@ func TestHandler_RevokeCert(t *testing.T) { assert.Equals(t, cert.SerialNumber.String(), serial) return &acme.Certificate{ AccountID: "differentAccountID", + Leaf: cert, + }, nil + }, + MockGetAuthorizationsByAccountID: func(ctx context.Context, accountID string) ([]*acme.Authorization, error) { + return nil, errors.New("force") + }, + } + ca := &mockCA{} + return test{ + db: db, + ca: ca, + ctx: ctx, + statusCode: 500, + err: acme.NewErrorISE("error retrieving authorizations for Account %s", "accountID"), + } + }, + "fail/account-not-authorized": func(t *testing.T) test { + acc := &acme.Account{ID: "accountID", Status: acme.StatusValid} + ctx := context.WithValue(context.Background(), provisionerContextKey, prov) + ctx = context.WithValue(ctx, accContextKey, acc) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) + ctx = context.WithValue(ctx, jwsContextKey, jws) + ctx = context.WithValue(ctx, baseURLContextKey, baseURL) + ctx = context.WithValue(ctx, chi.RouteCtxKey, chiCtx) + db := &acme.MockDB{ + MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { + assert.Equals(t, cert.SerialNumber.String(), serial) + return &acme.Certificate{ + AccountID: "differentAccountID", + Leaf: cert, + }, nil + }, + MockGetAuthorizationsByAccountID: func(ctx context.Context, accountID string) ([]*acme.Authorization, error) { + assert.Equals(t, "accountID", accountID) + return []*acme.Authorization{ + { + AccountID: "accountID", + Status: acme.StatusValid, + Identifier: acme.Identifier{ + Type: acme.IP, + Value: "127.0.1.0", + }, + }, }, nil }, } @@ -848,7 +782,7 @@ func TestHandler_RevokeCert(t *testing.T) { statusCode: 403, err: &acme.Error{ Type: "urn:ietf:params:acme:error:unauthorized", - Detail: fmt.Sprintf("No authorization provided for name %s", cert.Subject.String()), + Detail: "No authorization provided for name 127.0.0.1", Status: 403, }, } @@ -862,13 +796,13 @@ func TestHandler_RevokeCert(t *testing.T) { } jwsBytes, err := jwsEncodeJSON(rp, unauthorizedKey, "", "nonce", revokeURL) assert.FatalError(t, err) - jws, err := jose.ParseJWS(string(jwsBytes)) + parsedJWS, err := jose.ParseJWS(string(jwsBytes)) assert.FatalError(t, err) unauthorizedPayloadBytes, err := json.Marshal(jwsPayload) assert.FatalError(t, err) ctx := context.WithValue(context.Background(), provisionerContextKey, prov) ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: unauthorizedPayloadBytes}) - ctx = context.WithValue(ctx, jwsContextKey, jws) + ctx = context.WithValue(ctx, jwsContextKey, parsedJWS) ctx = context.WithValue(ctx, baseURLContextKey, baseURL) ctx = context.WithValue(ctx, chi.RouteCtxKey, chiCtx) db := &acme.MockDB{ @@ -876,12 +810,13 @@ func TestHandler_RevokeCert(t *testing.T) { assert.Equals(t, cert.SerialNumber.String(), serial) return &acme.Certificate{ AccountID: "accountID", + Leaf: cert, }, nil }, } ca := &mockCA{} acmeErr := acme.NewError(acme.ErrorUnauthorizedType, "verification of jws using certificate public key failed") - acmeErr.Detail = "No authorization provided for name CN=Test ACME Revoke Certificate" + acmeErr.Detail = "No authorization provided for name 127.0.0.1" return test{ db: db, ca: ca, @@ -891,19 +826,6 @@ func TestHandler_RevokeCert(t *testing.T) { } }, "fail/certificate-revoked-check-fails": func(t *testing.T) test { - jws := &jose.JSONWebSignature{ - Signatures: []jose.Signature{ - { - Protected: jose.Header{ - Algorithm: jose.ES256, - KeyID: "bar", - ExtraHeaders: map[jose.HeaderKey]interface{}{ - "url": revokeURL, - }, - }, - }, - }, - } acc := &acme.Account{ID: "accountID", Status: acme.StatusValid} ctx := context.WithValue(context.Background(), provisionerContextKey, prov) ctx = context.WithValue(ctx, accContextKey, acc) @@ -916,6 +838,7 @@ func TestHandler_RevokeCert(t *testing.T) { assert.Equals(t, cert.SerialNumber.String(), serial) return &acme.Certificate{ AccountID: "accountID", + Leaf: cert, }, nil }, } @@ -937,19 +860,6 @@ func TestHandler_RevokeCert(t *testing.T) { } }, "fail/certificate-already-revoked": func(t *testing.T) test { - jws := &jose.JSONWebSignature{ - Signatures: []jose.Signature{ - { - Protected: jose.Header{ - Algorithm: jose.ES256, - KeyID: "bar", - ExtraHeaders: map[jose.HeaderKey]interface{}{ - "url": revokeURL, - }, - }, - }, - }, - } acc := &acme.Account{ID: "accountID", Status: acme.StatusValid} ctx := context.WithValue(context.Background(), provisionerContextKey, prov) ctx = context.WithValue(ctx, accContextKey, acc) @@ -960,6 +870,7 @@ func TestHandler_RevokeCert(t *testing.T) { assert.Equals(t, cert.SerialNumber.String(), serial) return &acme.Certificate{ AccountID: "accountID", + Leaf: cert, }, nil }, } @@ -985,31 +896,19 @@ func TestHandler_RevokeCert(t *testing.T) { Certificate: base64.RawURLEncoding.EncodeToString(cert.Raw), ReasonCode: v(7), } - wrongReasonCodePayloadBytes, err := json.Marshal(invalidReasonPayload) + invalidReasonCodePayloadBytes, err := json.Marshal(invalidReasonPayload) assert.FatalError(t, err) - jws := &jose.JSONWebSignature{ - Signatures: []jose.Signature{ - { - Protected: jose.Header{ - Algorithm: jose.ES256, - KeyID: "bar", - ExtraHeaders: map[jose.HeaderKey]interface{}{ - "url": revokeURL, - }, - }, - }, - }, - } acc := &acme.Account{ID: "accountID", Status: acme.StatusValid} ctx := context.WithValue(context.Background(), provisionerContextKey, prov) ctx = context.WithValue(ctx, accContextKey, acc) - ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: wrongReasonCodePayloadBytes}) + ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: invalidReasonCodePayloadBytes}) ctx = context.WithValue(ctx, jwsContextKey, jws) db := &acme.MockDB{ MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { assert.Equals(t, cert.SerialNumber.String(), serial) return &acme.Certificate{ AccountID: "accountID", + Leaf: cert, }, nil }, } @@ -1032,19 +931,6 @@ func TestHandler_RevokeCert(t *testing.T) { }, "fail/prov.AuthorizeRevoke": func(t *testing.T) test { assert.FatalError(t, err) - jws := &jose.JSONWebSignature{ - Signatures: []jose.Signature{ - { - Protected: jose.Header{ - Algorithm: jose.ES256, - KeyID: "bar", - ExtraHeaders: map[jose.HeaderKey]interface{}{ - "url": revokeURL, - }, - }, - }, - }, - } mockACMEProv := &acme.MockProvisioner{ MauthorizeRevoke: func(ctx context.Context, token string) error { return errors.New("force") @@ -1060,6 +946,7 @@ func TestHandler_RevokeCert(t *testing.T) { assert.Equals(t, cert.SerialNumber.String(), serial) return &acme.Certificate{ AccountID: "accountID", + Leaf: cert, }, nil }, } @@ -1081,19 +968,6 @@ func TestHandler_RevokeCert(t *testing.T) { } }, "fail/ca.Revoke": func(t *testing.T) test { - jws := &jose.JSONWebSignature{ - Signatures: []jose.Signature{ - { - Protected: jose.Header{ - Algorithm: jose.ES256, - KeyID: "bar", - ExtraHeaders: map[jose.HeaderKey]interface{}{ - "url": revokeURL, - }, - }, - }, - }, - } acc := &acme.Account{ID: "accountID", Status: acme.StatusValid} ctx := context.WithValue(context.Background(), provisionerContextKey, prov) ctx = context.WithValue(ctx, accContextKey, acc) @@ -1104,6 +978,7 @@ func TestHandler_RevokeCert(t *testing.T) { assert.Equals(t, cert.SerialNumber.String(), serial) return &acme.Certificate{ AccountID: "accountID", + Leaf: cert, }, nil }, } @@ -1125,19 +1000,6 @@ func TestHandler_RevokeCert(t *testing.T) { } }, "fail/ca.Revoke-already-revoked": func(t *testing.T) test { - jws := &jose.JSONWebSignature{ - Signatures: []jose.Signature{ - { - Protected: jose.Header{ - Algorithm: jose.ES256, - KeyID: "bar", - ExtraHeaders: map[jose.HeaderKey]interface{}{ - "url": revokeURL, - }, - }, - }, - }, - } acc := &acme.Account{ID: "accountID", Status: acme.StatusValid} ctx := context.WithValue(context.Background(), provisionerContextKey, prov) ctx = context.WithValue(ctx, accContextKey, acc) @@ -1148,6 +1010,7 @@ func TestHandler_RevokeCert(t *testing.T) { assert.Equals(t, cert.SerialNumber.String(), serial) return &acme.Certificate{ AccountID: "accountID", + Leaf: cert, }, nil }, } @@ -1168,19 +1031,6 @@ func TestHandler_RevokeCert(t *testing.T) { } }, "ok/using-account-key": func(t *testing.T) test { - jws := &jose.JSONWebSignature{ - Signatures: []jose.Signature{ - { - Protected: jose.Header{ - Algorithm: jose.ES256, - KeyID: "bar", - ExtraHeaders: map[jose.HeaderKey]interface{}{ - "url": revokeURL, - }, - }, - }, - }, - } acc := &acme.Account{ID: "accountID", Status: acme.StatusValid} ctx := context.WithValue(context.Background(), provisionerContextKey, prov) ctx = context.WithValue(ctx, accContextKey, acc) @@ -1193,6 +1043,7 @@ func TestHandler_RevokeCert(t *testing.T) { assert.Equals(t, cert.SerialNumber.String(), serial) return &acme.Certificate{ AccountID: "accountID", + Leaf: cert, }, nil }, } @@ -1218,7 +1069,8 @@ func TestHandler_RevokeCert(t *testing.T) { MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { assert.Equals(t, cert.SerialNumber.String(), serial) return &acme.Certificate{ - AccountID: "accountID", + AccountID: "someDifferentAccountID", + Leaf: cert, }, nil }, } @@ -1264,3 +1116,400 @@ func TestHandler_RevokeCert(t *testing.T) { }) } } + +func TestHandler_isAccountAuthorized(t *testing.T) { + type test struct { + db acme.DB + ctx context.Context + existingCert *acme.Certificate + certToBeRevoked *x509.Certificate + account *acme.Account + err *acme.Error + } + accountID := "accountID" + var tests = map[string]func(t *testing.T) test{ + "fail/account-invalid": func(t *testing.T) test { + account := &acme.Account{ + ID: accountID, + Status: acme.StatusInvalid, + } + certToBeRevoked := &x509.Certificate{ + Subject: pkix.Name{ + CommonName: "127.0.0.1", + }, + } + return test{ + ctx: context.TODO(), + certToBeRevoked: certToBeRevoked, + account: account, + err: &acme.Error{ + Type: "urn:ietf:params:acme:error:unauthorized", + Status: http.StatusForbidden, + Detail: "No authorization provided for name 127.0.0.1", + Err: errors.New("account 'accountID' has status 'invalid'"), + }, + } + }, + "fail/no-certificate-identifiers": func(t *testing.T) test { + account := &acme.Account{ + ID: accountID, + Status: acme.StatusValid, + } + certToBeRevoked := &x509.Certificate{} + existingCert := &acme.Certificate{ + AccountID: "differentAccountID", + } + return test{ + ctx: context.TODO(), + existingCert: existingCert, + certToBeRevoked: certToBeRevoked, + account: account, + err: &acme.Error{ + Type: "urn:ietf:params:acme:error:unauthorized", + Status: http.StatusForbidden, + Detail: "No authorization provided", + Err: errors.New("cannot authorize revocation without providing identifiers to authorize"), + }, + } + }, + "fail/db.GetAuthorizationsByAccountID-error": func(t *testing.T) test { + account := &acme.Account{ + ID: accountID, + Status: acme.StatusValid, + } + certToBeRevoked := &x509.Certificate{ + Subject: pkix.Name{ + CommonName: "127.0.0.1", + }, + } + existingCert := &acme.Certificate{ + AccountID: "differentAccountID", + } + return test{ + db: &acme.MockDB{ + MockGetAuthorizationsByAccountID: func(ctx context.Context, accountID string) ([]*acme.Authorization, error) { + assert.Equals(t, "accountID", accountID) + return nil, errors.New("force") + }, + }, + ctx: context.TODO(), + existingCert: existingCert, + certToBeRevoked: certToBeRevoked, + account: account, + err: acme.NewErrorISE("error retrieving authorizations for Account %s: force", accountID), + } + }, + "fail/no-valid-authorizations": func(t *testing.T) test { + account := &acme.Account{ + ID: accountID, + Status: acme.StatusValid, + } + certToBeRevoked := &x509.Certificate{ + Subject: pkix.Name{ + CommonName: "127.0.0.1", + }, + } + existingCert := &acme.Certificate{ + AccountID: "differentAccountID", + } + return test{ + db: &acme.MockDB{ + MockGetAuthorizationsByAccountID: func(ctx context.Context, accountID string) ([]*acme.Authorization, error) { + assert.Equals(t, "accountID", accountID) + return []*acme.Authorization{ + { + AccountID: accountID, + Status: acme.StatusInvalid, + }, + }, nil + }, + }, + ctx: context.TODO(), + existingCert: existingCert, + certToBeRevoked: certToBeRevoked, + account: account, + err: &acme.Error{ + Type: "urn:ietf:params:acme:error:unauthorized", + Status: http.StatusForbidden, + Detail: "No authorization provided for name 127.0.0.1", + Err: errors.New("account 'accountID' does not have valid authorizations"), + }, + } + }, + "fail/authorizations-do-not-match-identifiers": func(t *testing.T) test { + account := &acme.Account{ + ID: accountID, + Status: acme.StatusValid, + } + certToBeRevoked := &x509.Certificate{ + Subject: pkix.Name{ + CommonName: "127.0.0.1", + }, + } + existingCert := &acme.Certificate{ + AccountID: "differentAccountID", + } + return test{ + db: &acme.MockDB{ + MockGetAuthorizationsByAccountID: func(ctx context.Context, accountID string) ([]*acme.Authorization, error) { + assert.Equals(t, "accountID", accountID) + return []*acme.Authorization{ + { + AccountID: accountID, + Status: acme.StatusValid, + Identifier: acme.Identifier{ + Type: acme.IP, + Value: "127.0.0.2", + }, + }, + }, nil + }, + }, + ctx: context.TODO(), + existingCert: existingCert, + certToBeRevoked: certToBeRevoked, + account: account, + err: &acme.Error{ + Type: "urn:ietf:params:acme:error:unauthorized", + Status: http.StatusForbidden, + Detail: "No authorization provided for name 127.0.0.1", + Err: errors.New("account 'accountID' does not have authorizations for all identifiers"), + }, + } + }, + "ok": func(t *testing.T) test { + account := &acme.Account{ + ID: accountID, + Status: acme.StatusValid, + } + certToBeRevoked := &x509.Certificate{ + IPAddresses: []net.IP{net.ParseIP("127.0.0.1")}, + } + existingCert := &acme.Certificate{ + AccountID: "differentAccountID", + } + return test{ + db: &acme.MockDB{ + MockGetAuthorizationsByAccountID: func(ctx context.Context, accountID string) ([]*acme.Authorization, error) { + assert.Equals(t, "accountID", accountID) + return []*acme.Authorization{ + { + AccountID: accountID, + Status: acme.StatusValid, + Identifier: acme.Identifier{ + Type: acme.IP, + Value: "127.0.0.1", + }, + }, + }, nil + }, + }, + ctx: context.TODO(), + existingCert: existingCert, + certToBeRevoked: certToBeRevoked, + account: account, + err: nil, + } + }, + } + for name, setup := range tests { + tc := setup(t) + t.Run(name, func(t *testing.T) { + h := &Handler{db: tc.db} + acmeErr := h.isAccountAuthorized(tc.ctx, tc.existingCert, tc.certToBeRevoked, tc.account) + + expectError := tc.err != nil + gotError := acmeErr != nil + if expectError != gotError { + t.Errorf("expected: %t, got: %t", expectError, gotError) + return + } + + if !gotError { + return // nothing to check; return early + } + + assert.Equals(t, acmeErr.Err.Error(), tc.err.Err.Error()) + assert.Equals(t, acmeErr.Type, tc.err.Type) + assert.Equals(t, acmeErr.Status, tc.err.Status) + assert.Equals(t, acmeErr.Detail, tc.err.Detail) + assert.Equals(t, acmeErr.Identifier, tc.err.Identifier) + assert.Equals(t, acmeErr.Subproblems, tc.err.Subproblems) + + }) + } +} + +func Test_identifierKey(t *testing.T) { + tests := []struct { + name string + identifier acme.Identifier + want string + }{ + { + name: "ip", + identifier: acme.Identifier{ + Type: acme.IP, + Value: "10.0.0.1", + }, + want: "ip|10.0.0.1", + }, + { + name: "dns", + identifier: acme.Identifier{ + Type: acme.DNS, + Value: "*.example.com", + }, + want: "dns|*.example.com", + }, + { + name: "unknown", + identifier: acme.Identifier{ + Type: "InvalidType", + Value: "<<>>", + }, + want: "unsupported|<<>>", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := identifierKey(tt.identifier) + if !cmp.Equal(tt.want, got) { + t.Errorf("identifierKey() diff = \n%s", cmp.Diff(tt.want, got)) + } + }) + } +} + +func Test_extractIdentifiers(t *testing.T) { + tests := []struct { + name string + cert *x509.Certificate + want map[string]acme.Identifier + }{ + { + name: "ip", + cert: &x509.Certificate{ + IPAddresses: []net.IP{net.ParseIP("127.0.0.1")}, + }, + want: map[string]acme.Identifier{ + "ip|127.0.0.1": { + Type: acme.IP, + Value: "127.0.0.1", + }, + }, + }, + { + name: "dns", + cert: &x509.Certificate{ + DNSNames: []string{"*.example.com"}, + }, + want: map[string]acme.Identifier{ + "dns|*.example.com": { + Type: acme.DNS, + Value: "*.example.com", + }, + }, + }, + { + name: "dns-subject", + cert: &x509.Certificate{ + Subject: pkix.Name{ + CommonName: "www.example.com", + }, + }, + want: map[string]acme.Identifier{ + "dns|www.example.com": { + Type: acme.DNS, + Value: "www.example.com", + }, + }, + }, + { + name: "ip-subject", + cert: &x509.Certificate{ + Subject: pkix.Name{ + CommonName: "127.0.0.1", + }, + }, + want: map[string]acme.Identifier{ + "dns|127.0.0.1": { // this is the currently expected behavior + Type: acme.DNS, + Value: "127.0.0.1", + }, + }, + }, + { + name: "combined", + cert: &x509.Certificate{ + Subject: pkix.Name{ + CommonName: "127.0.0.1", + }, + IPAddresses: []net.IP{net.ParseIP("127.0.0.1"), net.ParseIP("127.0.0.2")}, + DNSNames: []string{"*.example.com", "www.example.com"}, + }, + want: map[string]acme.Identifier{ + "ip|127.0.0.1": { + Type: acme.IP, + Value: "127.0.0.1", + }, + "ip|127.0.0.2": { + Type: acme.IP, + Value: "127.0.0.2", + }, + "dns|*.example.com": { + Type: acme.DNS, + Value: "*.example.com", + }, + "dns|www.example.com": { + Type: acme.DNS, + Value: "www.example.com", + }, + "dns|127.0.0.1": { // this is the currently expected behavior + Type: acme.DNS, + Value: "127.0.0.1", + }, + }, + }, + { + name: "ip-duplicates", + cert: &x509.Certificate{ + IPAddresses: []net.IP{net.ParseIP("127.0.0.1"), net.ParseIP("127.0.0.1"), net.ParseIP("127.0.0.2")}, + }, + want: map[string]acme.Identifier{ + "ip|127.0.0.1": { + Type: acme.IP, + Value: "127.0.0.1", + }, + "ip|127.0.0.2": { + Type: acme.IP, + Value: "127.0.0.2", + }, + }, + }, + { + name: "dns-duplicates", + cert: &x509.Certificate{ + DNSNames: []string{"*.example.com", "www.example.com", "www.example.com"}, + }, + want: map[string]acme.Identifier{ + "dns|*.example.com": { + Type: acme.DNS, + Value: "*.example.com", + }, + "dns|www.example.com": { + Type: acme.DNS, + Value: "www.example.com", + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := extractIdentifiers(tt.cert) + if !cmp.Equal(tt.want, got) { + t.Errorf("extractIdentifiers() diff=\n%s", cmp.Diff(tt.want, got)) + } + }) + } +} diff --git a/acme/db.go b/acme/db.go index 67053269..1675c7e7 100644 --- a/acme/db.go +++ b/acme/db.go @@ -25,6 +25,7 @@ type DB interface { CreateAuthorization(ctx context.Context, az *Authorization) error GetAuthorization(ctx context.Context, id string) (*Authorization, error) UpdateAuthorization(ctx context.Context, az *Authorization) error + GetAuthorizationsByAccountID(ctx context.Context, accountID string) ([]*Authorization, error) CreateCertificate(ctx context.Context, cert *Certificate) error GetCertificate(ctx context.Context, id string) (*Certificate, error) @@ -51,9 +52,10 @@ type MockDB struct { MockCreateNonce func(ctx context.Context) (Nonce, error) MockDeleteNonce func(ctx context.Context, nonce Nonce) error - MockCreateAuthorization func(ctx context.Context, az *Authorization) error - MockGetAuthorization func(ctx context.Context, id string) (*Authorization, error) - MockUpdateAuthorization func(ctx context.Context, az *Authorization) error + MockCreateAuthorization func(ctx context.Context, az *Authorization) error + MockGetAuthorization func(ctx context.Context, id string) (*Authorization, error) + MockUpdateAuthorization func(ctx context.Context, az *Authorization) error + MockGetAuthorizationsByAccountID func(ctx context.Context, accountID string) ([]*Authorization, error) MockCreateCertificate func(ctx context.Context, cert *Certificate) error MockGetCertificate func(ctx context.Context, id string) (*Certificate, error) @@ -162,6 +164,16 @@ func (m *MockDB) UpdateAuthorization(ctx context.Context, az *Authorization) err return m.MockError } +// GetAuthorizationsByAccountID mock +func (m *MockDB) GetAuthorizationsByAccountID(ctx context.Context, accountID string) ([]*Authorization, error) { + if m.MockGetAuthorizationsByAccountID != nil { + return m.MockGetAuthorizationsByAccountID(ctx, accountID) + } else if m.MockError != nil { + return nil, m.MockError + } + return nil, m.MockError +} + // CreateCertificate mock func (m *MockDB) CreateCertificate(ctx context.Context, cert *Certificate) error { if m.MockCreateCertificate != nil { diff --git a/acme/db/nosql/authz.go b/acme/db/nosql/authz.go index 6decbe4f..01cb7fed 100644 --- a/acme/db/nosql/authz.go +++ b/acme/db/nosql/authz.go @@ -116,3 +116,37 @@ func (db *DB) UpdateAuthorization(ctx context.Context, az *acme.Authorization) e nu.Error = az.Error return db.save(ctx, old.ID, nu, old, "authz", authzTable) } + +// GetAuthorizationsByAccountID retrieves and unmarshals ACME authz types from the database. +func (db *DB) GetAuthorizationsByAccountID(ctx context.Context, accountID string) ([]*acme.Authorization, error) { + entries, err := db.db.List(authzTable) + if err != nil { + return nil, errors.Wrapf(err, "error listing authz") + } + authzs := []*acme.Authorization{} + for _, entry := range entries { + dbaz := new(dbAuthz) + if err = json.Unmarshal(entry.Value, dbaz); err != nil { + return nil, errors.Wrapf(err, "error unmarshaling dbAuthz key '%s' into dbAuthz struct", string(entry.Key)) + } + // Filter out all dbAuthzs that don't belong to the accountID. This + // could be made more efficient with additional data structures mapping the + // Account ID to authorizations. Not trivial to do, though. + if dbaz.AccountID != accountID { + continue + } + authzs = append(authzs, &acme.Authorization{ + ID: dbaz.ID, + AccountID: dbaz.AccountID, + Identifier: dbaz.Identifier, + Status: dbaz.Status, + Challenges: nil, // challenges not required for current use case + Wildcard: dbaz.Wildcard, + ExpiresAt: dbaz.ExpiresAt, + Token: dbaz.Token, + Error: dbaz.Error, + }) + } + + return authzs, nil +} diff --git a/acme/db/nosql/authz_test.go b/acme/db/nosql/authz_test.go index 01c255dc..2e5dd3ea 100644 --- a/acme/db/nosql/authz_test.go +++ b/acme/db/nosql/authz_test.go @@ -3,9 +3,11 @@ package nosql import ( "context" "encoding/json" + "fmt" "testing" "time" + "github.com/google/go-cmp/cmp" "github.com/pkg/errors" "github.com/smallstep/assert" "github.com/smallstep/certificates/acme" @@ -614,3 +616,154 @@ func TestDB_UpdateAuthorization(t *testing.T) { }) } } + +func TestDB_GetAuthorizationsByAccountID(t *testing.T) { + azID := "azID" + accountID := "accountID" + type test struct { + db nosql.DB + err error + acmeErr *acme.Error + authzs []*acme.Authorization + } + var tests = map[string]func(t *testing.T) test{ + "fail/db.List-error": func(t *testing.T) test { + return test{ + db: &db.MockNoSQLDB{ + MList: func(bucket []byte) ([]*nosqldb.Entry, error) { + assert.Equals(t, bucket, authzTable) + return nil, errors.New("force") + }, + }, + err: errors.New("error listing authz: force"), + } + }, + "fail/unmarshal": func(t *testing.T) test { + b := []byte(`{malformed}`) + return test{ + db: &db.MockNoSQLDB{ + MList: func(bucket []byte) ([]*nosqldb.Entry, error) { + assert.Equals(t, bucket, authzTable) + return []*nosqldb.Entry{ + { + Bucket: bucket, + Key: []byte(azID), + Value: b, + }, + }, nil + }, + }, + authzs: nil, + err: fmt.Errorf("error unmarshaling dbAuthz key '%s' into dbAuthz struct", azID), + } + }, + "ok": func(t *testing.T) test { + now := clock.Now() + dbaz := &dbAuthz{ + ID: azID, + AccountID: accountID, + Identifier: acme.Identifier{ + Type: "dns", + Value: "test.ca.smallstep.com", + }, + Status: acme.StatusValid, + Token: "token", + CreatedAt: now, + ExpiresAt: now.Add(5 * time.Minute), + ChallengeIDs: []string{"foo", "bar"}, + Wildcard: true, + } + b, err := json.Marshal(dbaz) + assert.FatalError(t, err) + + return test{ + db: &db.MockNoSQLDB{ + MList: func(bucket []byte) ([]*nosqldb.Entry, error) { + assert.Equals(t, bucket, authzTable) + return []*nosqldb.Entry{ + { + Bucket: bucket, + Key: []byte(azID), + Value: b, + }, + }, nil + }, + }, + authzs: []*acme.Authorization{ + { + ID: dbaz.ID, + AccountID: dbaz.AccountID, + Token: dbaz.Token, + Identifier: dbaz.Identifier, + Status: dbaz.Status, + Challenges: nil, + Wildcard: dbaz.Wildcard, + ExpiresAt: dbaz.ExpiresAt, + Error: dbaz.Error, + }, + }, + } + }, + "ok/skip-different-account": func(t *testing.T) test { + now := clock.Now() + dbaz := &dbAuthz{ + ID: azID, + AccountID: "differentAccountID", + Identifier: acme.Identifier{ + Type: "dns", + Value: "test.ca.smallstep.com", + }, + Status: acme.StatusValid, + Token: "token", + CreatedAt: now, + ExpiresAt: now.Add(5 * time.Minute), + ChallengeIDs: []string{"foo", "bar"}, + Wildcard: true, + } + b, err := json.Marshal(dbaz) + assert.FatalError(t, err) + + return test{ + db: &db.MockNoSQLDB{ + MList: func(bucket []byte) ([]*nosqldb.Entry, error) { + assert.Equals(t, bucket, authzTable) + return []*nosqldb.Entry{ + { + Bucket: bucket, + Key: []byte(azID), + Value: b, + }, + }, nil + }, + }, + authzs: []*acme.Authorization{}, + } + }, + } + for name, run := range tests { + tc := run(t) + t.Run(name, func(t *testing.T) { + d := DB{db: tc.db} + if azs, err := d.GetAuthorizationsByAccountID(context.Background(), accountID); err != nil { + switch k := err.(type) { + case *acme.Error: + if assert.NotNil(t, tc.acmeErr) { + assert.Equals(t, k.Type, tc.acmeErr.Type) + assert.Equals(t, k.Detail, tc.acmeErr.Detail) + assert.Equals(t, k.Status, tc.acmeErr.Status) + assert.Equals(t, k.Err.Error(), tc.acmeErr.Err.Error()) + assert.Equals(t, k.Detail, tc.acmeErr.Detail) + } + default: + if assert.NotNil(t, tc.err) { + assert.HasPrefix(t, err.Error(), tc.err.Error()) + } + } + } else if assert.Nil(t, tc.err) { + if !cmp.Equal(azs, tc.authzs) { + t.Errorf("db.GetAuthorizationsByAccountID() diff =\n%s", cmp.Diff(azs, tc.authzs)) + } + } + }) + } +} diff --git a/acme/order.go b/acme/order.go index bd820da1..d4a4c300 100644 --- a/acme/order.go +++ b/acme/order.go @@ -290,6 +290,9 @@ func canonicalize(csr *x509.CertificateRequest) (canonicalized *x509.Certificate // MUST appear either in the commonName portion of the requested subject // name or in an extensionRequest attribute [RFC2985] requesting a // subjectAltName extension, or both. + // TODO(hs): we might want to check if the CommonName is in fact a DNS (and cannot + // be parsed as IP). This is related to https://github.com/smallstep/cli/pull/576 + // (ACME IP SANS) if csr.Subject.CommonName != "" { // nolint:gocritic canonicalized.DNSNames = append(csr.DNSNames, csr.Subject.CommonName) diff --git a/go.mod b/go.mod index 394eb1a4..830cab82 100644 --- a/go.mod +++ b/go.mod @@ -18,6 +18,7 @@ require ( github.com/go-kit/kit v0.10.0 // indirect github.com/go-piv/piv-go v1.7.0 github.com/golang/mock v1.6.0 + github.com/google/go-cmp v0.5.6 github.com/google/uuid v1.3.0 github.com/googleapis/gax-go/v2 v2.0.5 github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect From 47a8a3c46344bbf4262e3e08804bd4fe96ab7e8e Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Thu, 2 Dec 2021 17:11:36 +0100 Subject: [PATCH 27/36] Add test case for ACME Revoke to Authority --- authority/tls.go | 1 + authority/tls_test.go | 17 +++++++++++++++++ db/db.go | 1 + 3 files changed, 19 insertions(+) diff --git a/authority/tls.go b/authority/tls.go index 9cd938a4..6e213ca6 100644 --- a/authority/tls.go +++ b/authority/tls.go @@ -360,6 +360,7 @@ func (a *Authority) Revoke(ctx context.Context, revokeOpts *RevokeOptions) error ReasonCode: revokeOpts.ReasonCode, Reason: revokeOpts.Reason, MTLS: revokeOpts.MTLS, + ACME: revokeOpts.ACME, RevokedAt: time.Now().UTC(), } diff --git a/authority/tls_test.go b/authority/tls_test.go index 03beb5c1..060b3bff 100644 --- a/authority/tls_test.go +++ b/authority/tls_test.go @@ -1267,6 +1267,23 @@ func TestAuthority_Revoke(t *testing.T) { }, } }, + "ok/ACME": func() test { + _a := testAuthority(t, WithDatabase(&db.MockAuthDB{})) + + crt, err := pemutil.ReadCertificate("./testdata/certs/foo.crt") + assert.FatalError(t, err) + + return test{ + auth: _a, + opts: &RevokeOptions{ + Crt: crt, + Serial: "102012593071130646873265215610956555026", + ReasonCode: reasonCode, + Reason: reason, + ACME: true, + }, + } + }, } for name, f := range tests { tc := f() diff --git a/db/db.go b/db/db.go index 2643e577..6d48723f 100644 --- a/db/db.go +++ b/db/db.go @@ -104,6 +104,7 @@ type RevokedCertificateInfo struct { RevokedAt time.Time TokenID string MTLS bool + ACME bool } // IsRevoked returns whether or not a certificate with the given identifier From 9fd147f3da7a602a0c1500678b54340c040df749 Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Thu, 2 Dec 2021 16:44:57 -0800 Subject: [PATCH 28/36] Change error message. --- api/sshRenew.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/sshRenew.go b/api/sshRenew.go index 8d07ba01..57b6f432 100644 --- a/api/sshRenew.go +++ b/api/sshRenew.go @@ -60,7 +60,7 @@ func (h *caHandler) SSHRenew(w http.ResponseWriter, r *http.Request) { newCert, err := h.Authority.RenewSSH(ctx, oldCert) if err != nil { - WriteError(w, errs.ForbiddenErr(err, "error signing ssh certificate")) + WriteError(w, errs.ForbiddenErr(err, "error renewing ssh certificate")) return } @@ -70,7 +70,7 @@ func (h *caHandler) SSHRenew(w http.ResponseWriter, r *http.Request) { identity, err := h.renewIdentityCertificate(r, notBefore, notAfter) if err != nil { - WriteError(w, errs.ForbiddenErr(err, "error signing identity certificate")) + WriteError(w, errs.ForbiddenErr(err, "error renewing identity certificate")) return } From 004fc054d570908479915306d98ca07761ccd491 Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Fri, 3 Dec 2021 15:06:28 +0100 Subject: [PATCH 29/36] Fix PR comments --- acme/api/handler.go | 8 ++++---- acme/api/revoke.go | 5 ++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/acme/api/handler.go b/acme/api/handler.go index d6153184..09ca03a3 100644 --- a/acme/api/handler.go +++ b/acme/api/handler.go @@ -101,16 +101,16 @@ func (h *Handler) Route(r api.Router) { r.MethodFunc("HEAD", getPath(DirectoryLinkType, "{provisionerID}"), h.baseURLFromRequest(h.lookupProvisioner(h.GetDirectory))) validatingMiddleware := func(next nextHTTP) nextHTTP { - return h.baseURLFromRequest(h.lookupProvisioner(h.addNonce(h.addDirLink(h.verifyContentType(h.parseJWS(next)))))) + return h.baseURLFromRequest(h.lookupProvisioner(h.addNonce(h.addDirLink(h.verifyContentType(h.parseJWS(h.validateJWS(next))))))) } extractPayloadByJWK := func(next nextHTTP) nextHTTP { - return validatingMiddleware(h.validateJWS(h.extractJWK(h.verifyAndExtractJWSPayload(next)))) + return validatingMiddleware(h.extractJWK(h.verifyAndExtractJWSPayload(next))) } extractPayloadByKid := func(next nextHTTP) nextHTTP { - return validatingMiddleware(h.validateJWS(h.lookupJWK(h.verifyAndExtractJWSPayload(next)))) + return validatingMiddleware(h.lookupJWK(h.verifyAndExtractJWSPayload(next))) } extractPayloadByKidOrJWK := func(next nextHTTP) nextHTTP { - return validatingMiddleware(h.validateJWS(h.extractOrLookupJWK(h.verifyAndExtractJWSPayload(next)))) + return validatingMiddleware(h.extractOrLookupJWK(h.verifyAndExtractJWSPayload(next))) } r.MethodFunc("POST", getPath(NewAccountLinkType, "{provisionerID}"), extractPayloadByJWK(h.NewAccount)) diff --git a/acme/api/revoke.go b/acme/api/revoke.go index 209bc204..4d31c7be 100644 --- a/acme/api/revoke.go +++ b/acme/api/revoke.go @@ -205,7 +205,7 @@ func identifierKey(identifier acme.Identifier) string { } // extractIdentifiers extracts ACME identifiers from an x509 certificate and -// creates a map from them. The map ensures that double SANs are deduplicated. +// creates a map from them. The map ensures that duplicate SANs are deduplicated. // The Subject CommonName is included, because RFC8555 7.4 states that DNS // identifiers can come from either the CommonName or a DNS SAN or both. When // authorizing issuance, the DNS identifier must be in the request and will be @@ -227,7 +227,6 @@ func extractIdentifiers(cert *x509.Certificate) map[string]acme.Identifier { } result[identifierKey(identifier)] = identifier } - // TODO(hs): should we include the CommonName or not? if cert.Subject.CommonName != "" { identifier := acme.Identifier{ // assuming only DNS can be in Common Name (RFC8555, 7.4); RFC8738 @@ -302,7 +301,7 @@ func validateReasonCode(reasonCode *int) *acme.Error { return nil } -// revokeOptions determines the the RevokeOptions for the Authority to use in revocation +// revokeOptions determines the RevokeOptions for the Authority to use in revocation func revokeOptions(serial string, certToBeRevoked *x509.Certificate, reasonCode *int) *authority.RevokeOptions { opts := &authority.RevokeOptions{ Serial: serial, From 0cebde3db52d1f6a19982936a2983753fbc62684 Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Fri, 3 Dec 2021 15:11:34 -0800 Subject: [PATCH 30/36] Change fallback message on RekeySSH. --- api/sshRekey.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/sshRekey.go b/api/sshRekey.go index b2c55509..8670f0bd 100644 --- a/api/sshRekey.go +++ b/api/sshRekey.go @@ -68,7 +68,7 @@ func (h *caHandler) SSHRekey(w http.ResponseWriter, r *http.Request) { newCert, err := h.Authority.RekeySSH(ctx, oldCert, publicKey, signOpts...) if err != nil { - WriteError(w, errs.ForbiddenErr(err, "error signing ssh certificate")) + WriteError(w, errs.ForbiddenErr(err, "error rekeying ssh certificate")) return } @@ -78,7 +78,7 @@ func (h *caHandler) SSHRekey(w http.ResponseWriter, r *http.Request) { identity, err := h.renewIdentityCertificate(r, notBefore, notAfter) if err != nil { - WriteError(w, errs.ForbiddenErr(err, "error signing identity certificate")) + WriteError(w, errs.ForbiddenErr(err, "error renewing identity certificate")) return } From e0fee84694be3ef42972e7261c38f6c94cc1b405 Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Fri, 3 Dec 2021 15:24:42 -0800 Subject: [PATCH 31/36] Add comment about public key validator. --- authority/provisioner/sign_ssh_options.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/authority/provisioner/sign_ssh_options.go b/authority/provisioner/sign_ssh_options.go index 01634dad..a2ca78b1 100644 --- a/authority/provisioner/sign_ssh_options.go +++ b/authority/provisioner/sign_ssh_options.go @@ -414,6 +414,10 @@ func (v *sshCertDefaultValidator) Valid(cert *ssh.Certificate, o SignSSHOptions) type sshDefaultPublicKeyValidator struct{} // Valid checks that certificate request common name matches the one configured. +// +// TODO: this is the only validator that checks the key type. We should execute +// this before the signing. We should add a new validations interface or extend +// SSHCertOptionsValidator with the key. func (v sshDefaultPublicKeyValidator) Valid(cert *ssh.Certificate, o SignSSHOptions) error { if cert.Key == nil { return errs.BadRequest("ssh certificate key cannot be nil") From accb0710a14bd60358290811488e3ffb2bd28538 Mon Sep 17 00:00:00 2001 From: Carl Tashian Date: Tue, 7 Dec 2021 10:02:44 -0800 Subject: [PATCH 32/36] Star gif --- README.md | 2 ++ docs/images/star.gif | Bin 0 -> 311996 bytes 2 files changed, 2 insertions(+) create mode 100644 docs/images/star.gif diff --git a/README.md b/README.md index 65116b38..5c29ccdf 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,8 @@ To get up and running quickly, or as an alternative to running your own `step-ca [![GitHub stars](https://img.shields.io/github/stars/smallstep/certificates.svg?style=social)](https://github.com/smallstep/certificates/stargazers) [![Twitter followers](https://img.shields.io/twitter/follow/smallsteplabs.svg?label=Follow&style=social)](https://twitter.com/intent/follow?screen_name=smallsteplabs) +![star us](https://github.com/smallstep/certificates/raw/master/docs/images/star.gif) + ## Features ### 🦾 A fast, stable, flexible private CA diff --git a/docs/images/star.gif b/docs/images/star.gif new file mode 100644 index 0000000000000000000000000000000000000000..e40466badef9c110b8dc684ec3dc3f4cf991ae43 GIT binary patch literal 311996 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
  • _<%7*U`o!cMI+#f05 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%0DG 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⪚kSsTTM%v$H_PX;Y6(P)y6si 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⁡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 literal 0 HcmV?d00001 From c0255b7caa145b4747968d99d0cd5783b0f79066 Mon Sep 17 00:00:00 2001 From: Carl Tashian Date: Tue, 7 Dec 2021 10:07:50 -0800 Subject: [PATCH 33/36] Update star gif --- docs/images/star.gif | Bin 311996 -> 53325 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/star.gif b/docs/images/star.gif index e40466badef9c110b8dc684ec3dc3f4cf991ae43..f6148bfffdcc74d8f96dab22948eca8b083d45f2 100644 GIT binary patch literal 53325 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 literal 311996 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

  • _<%7*U`o!cMI+#f05 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%0DG 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⪚kSsTTM%v$H_PX;Y6(P)y6si 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⁡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 From 53ebd85327fcc29b370a97154e63bda06d0f91e8 Mon Sep 17 00:00:00 2001 From: Carl Tashian Date: Tue, 7 Dec 2021 10:17:48 -0800 Subject: [PATCH 34/36] Update star gif size --- docs/images/star.gif | Bin 53325 -> 91148 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/star.gif b/docs/images/star.gif index f6148bfffdcc74d8f96dab22948eca8b083d45f2..eef9d70753f9447a16d0e5dd5d3531c489806a63 100644 GIT binary patch literal 91148 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

    df(LbMlU<-$c;nGPpL{a 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 literal 53325 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 From 0524122191cecc55086d1eadedfe4f47158ba219 Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Wed, 8 Dec 2021 16:28:14 +0100 Subject: [PATCH 35/36] Remove authorization flow for different Account private keys As discussed in https://github.com/smallstep/certificates/issues/767, we opted for not including this authorization flow to prevent users from getting OOMs. We can add the functionality back when the underlying data store can provide access to a long list of Authorizations more efficiently, for example when a callback is implemented. --- acme/api/revoke.go | 95 ++-------- acme/api/revoke_test.go | 379 ++++++++++------------------------------ 2 files changed, 103 insertions(+), 371 deletions(-) diff --git a/acme/api/revoke.go b/acme/api/revoke.go index 4d31c7be..d01e401c 100644 --- a/acme/api/revoke.go +++ b/acme/api/revoke.go @@ -153,91 +153,22 @@ func (h *Handler) isAccountAuthorized(ctx context.Context, dbCert *acme.Certific } certificateBelongsToAccount := dbCert.AccountID == account.ID if certificateBelongsToAccount { - return nil // return early; skip relatively expensive database check - } - requiredIdentifiers := extractIdentifiers(certToBeRevoked) - if len(requiredIdentifiers) == 0 { - return wrapUnauthorizedError(certToBeRevoked, nil, "cannot authorize revocation without providing identifiers to authorize", nil) - } - authzs, err := h.db.GetAuthorizationsByAccountID(ctx, account.ID) - if err != nil { - return acme.WrapErrorISE(err, "error retrieving authorizations for Account %s", account.ID) - } - authorizedIdentifiers := map[string]acme.Identifier{} - for _, authz := range authzs { - // Only valid Authorizations are included - if authz.Status != acme.StatusValid { - continue - } - authorizedIdentifiers[identifierKey(authz.Identifier)] = authz.Identifier - } - if len(authorizedIdentifiers) == 0 { - unauthorizedIdentifiers := []acme.Identifier{} - for _, identifier := range requiredIdentifiers { - unauthorizedIdentifiers = append(unauthorizedIdentifiers, identifier) - } - return wrapUnauthorizedError(certToBeRevoked, unauthorizedIdentifiers, fmt.Sprintf("account '%s' does not have valid authorizations", account.ID), nil) - } - unauthorizedIdentifiers := []acme.Identifier{} - for key := range requiredIdentifiers { - _, ok := authorizedIdentifiers[key] - if !ok { - unauthorizedIdentifiers = append(unauthorizedIdentifiers, requiredIdentifiers[key]) - } - } - if len(unauthorizedIdentifiers) != 0 { - return wrapUnauthorizedError(certToBeRevoked, unauthorizedIdentifiers, fmt.Sprintf("account '%s' does not have authorizations for all identifiers", account.ID), nil) + return nil // return early } - return nil -} + // TODO(hs): according to RFC8555: 7.6, a server MUST consider the following accounts authorized + // to revoke a certificate: + // + // o the account that issued the certificate. + // o an account that holds authorizations for all of the identifiers in the certificate. + // + // We currently only support the first case. The second might result in step going OOM when + // large numbers of Authorizations are involved when the current nosql interface is in use. + // We want to protect users from this failure scenario, so that's why it hasn't been added yet. + // This issue is tracked in https://github.com/smallstep/certificates/issues/767 -// identifierKey creates a unique key for an ACME identifier using -// the following format: ip|127.0.0.1; dns|*.example.com -func identifierKey(identifier acme.Identifier) string { - if identifier.Type == acme.IP { - return "ip|" + identifier.Value - } - if identifier.Type == acme.DNS { - return "dns|" + identifier.Value - } - return "unsupported|" + identifier.Value -} - -// extractIdentifiers extracts ACME identifiers from an x509 certificate and -// creates a map from them. The map ensures that duplicate SANs are deduplicated. -// The Subject CommonName is included, because RFC8555 7.4 states that DNS -// identifiers can come from either the CommonName or a DNS SAN or both. When -// authorizing issuance, the DNS identifier must be in the request and will be -// included in the validation (see Order.sans()) as of now. This means that the -// CommonName will in fact have an authorization available. -func extractIdentifiers(cert *x509.Certificate) map[string]acme.Identifier { - result := map[string]acme.Identifier{} - for _, name := range cert.DNSNames { - identifier := acme.Identifier{ - Type: acme.DNS, - Value: name, - } - result[identifierKey(identifier)] = identifier - } - for _, ip := range cert.IPAddresses { - identifier := acme.Identifier{ - Type: acme.IP, - Value: ip.String(), - } - result[identifierKey(identifier)] = identifier - } - if cert.Subject.CommonName != "" { - identifier := acme.Identifier{ - // assuming only DNS can be in Common Name (RFC8555, 7.4); RFC8738 - // IP Identifier Validation Extension does not state anything about this. - // This logic is in accordance with the logic in order.canonicalize() - Type: acme.DNS, - Value: cert.Subject.CommonName, - } - result[identifierKey(identifier)] = identifier - } - return result + // not authorized; fail closed. + return wrapUnauthorizedError(certToBeRevoked, nil, fmt.Sprintf("account '%s' is not authorized", account.ID), nil) } // wrapRevokeErr is a best effort implementation to transform an error during diff --git a/acme/api/revoke_test.go b/acme/api/revoke_test.go index cf036abb..4ff54405 100644 --- a/acme/api/revoke_test.go +++ b/acme/api/revoke_test.go @@ -715,35 +715,6 @@ func TestHandler_RevokeCert(t *testing.T) { }, } }, - "fail/db.GetAuthorizationsByAccountID-error": func(t *testing.T) test { - acc := &acme.Account{ID: "accountID", Status: acme.StatusValid} - ctx := context.WithValue(context.Background(), provisionerContextKey, prov) - ctx = context.WithValue(ctx, accContextKey, acc) - ctx = context.WithValue(ctx, payloadContextKey, &payloadInfo{value: payloadBytes}) - ctx = context.WithValue(ctx, jwsContextKey, jws) - ctx = context.WithValue(ctx, baseURLContextKey, baseURL) - ctx = context.WithValue(ctx, chi.RouteCtxKey, chiCtx) - db := &acme.MockDB{ - MockGetCertificateBySerial: func(ctx context.Context, serial string) (*acme.Certificate, error) { - assert.Equals(t, cert.SerialNumber.String(), serial) - return &acme.Certificate{ - AccountID: "differentAccountID", - Leaf: cert, - }, nil - }, - MockGetAuthorizationsByAccountID: func(ctx context.Context, accountID string) ([]*acme.Authorization, error) { - return nil, errors.New("force") - }, - } - ca := &mockCA{} - return test{ - db: db, - ca: ca, - ctx: ctx, - statusCode: 500, - err: acme.NewErrorISE("error retrieving authorizations for Account %s", "accountID"), - } - }, "fail/account-not-authorized": func(t *testing.T) test { acc := &acme.Account{ID: "accountID", Status: acme.StatusValid} ctx := context.WithValue(context.Background(), provisionerContextKey, prov) @@ -1150,101 +1121,13 @@ func TestHandler_isAccountAuthorized(t *testing.T) { }, } }, - "fail/no-certificate-identifiers": func(t *testing.T) test { - account := &acme.Account{ - ID: accountID, - Status: acme.StatusValid, - } - certToBeRevoked := &x509.Certificate{} - existingCert := &acme.Certificate{ - AccountID: "differentAccountID", - } - return test{ - ctx: context.TODO(), - existingCert: existingCert, - certToBeRevoked: certToBeRevoked, - account: account, - err: &acme.Error{ - Type: "urn:ietf:params:acme:error:unauthorized", - Status: http.StatusForbidden, - Detail: "No authorization provided", - Err: errors.New("cannot authorize revocation without providing identifiers to authorize"), - }, - } - }, - "fail/db.GetAuthorizationsByAccountID-error": func(t *testing.T) test { + "fail/different-account": func(t *testing.T) test { account := &acme.Account{ ID: accountID, Status: acme.StatusValid, } certToBeRevoked := &x509.Certificate{ - Subject: pkix.Name{ - CommonName: "127.0.0.1", - }, - } - existingCert := &acme.Certificate{ - AccountID: "differentAccountID", - } - return test{ - db: &acme.MockDB{ - MockGetAuthorizationsByAccountID: func(ctx context.Context, accountID string) ([]*acme.Authorization, error) { - assert.Equals(t, "accountID", accountID) - return nil, errors.New("force") - }, - }, - ctx: context.TODO(), - existingCert: existingCert, - certToBeRevoked: certToBeRevoked, - account: account, - err: acme.NewErrorISE("error retrieving authorizations for Account %s: force", accountID), - } - }, - "fail/no-valid-authorizations": func(t *testing.T) test { - account := &acme.Account{ - ID: accountID, - Status: acme.StatusValid, - } - certToBeRevoked := &x509.Certificate{ - Subject: pkix.Name{ - CommonName: "127.0.0.1", - }, - } - existingCert := &acme.Certificate{ - AccountID: "differentAccountID", - } - return test{ - db: &acme.MockDB{ - MockGetAuthorizationsByAccountID: func(ctx context.Context, accountID string) ([]*acme.Authorization, error) { - assert.Equals(t, "accountID", accountID) - return []*acme.Authorization{ - { - AccountID: accountID, - Status: acme.StatusInvalid, - }, - }, nil - }, - }, - ctx: context.TODO(), - existingCert: existingCert, - certToBeRevoked: certToBeRevoked, - account: account, - err: &acme.Error{ - Type: "urn:ietf:params:acme:error:unauthorized", - Status: http.StatusForbidden, - Detail: "No authorization provided for name 127.0.0.1", - Err: errors.New("account 'accountID' does not have valid authorizations"), - }, - } - }, - "fail/authorizations-do-not-match-identifiers": func(t *testing.T) test { - account := &acme.Account{ - ID: accountID, - Status: acme.StatusValid, - } - certToBeRevoked := &x509.Certificate{ - Subject: pkix.Name{ - CommonName: "127.0.0.1", - }, + IPAddresses: []net.IP{net.ParseIP("127.0.0.1")}, } existingCert := &acme.Certificate{ AccountID: "differentAccountID", @@ -1259,7 +1142,7 @@ func TestHandler_isAccountAuthorized(t *testing.T) { Status: acme.StatusValid, Identifier: acme.Identifier{ Type: acme.IP, - Value: "127.0.0.2", + Value: "127.0.0.1", }, }, }, nil @@ -1272,8 +1155,8 @@ func TestHandler_isAccountAuthorized(t *testing.T) { err: &acme.Error{ Type: "urn:ietf:params:acme:error:unauthorized", Status: http.StatusForbidden, - Detail: "No authorization provided for name 127.0.0.1", - Err: errors.New("account 'accountID' does not have authorizations for all identifiers"), + Detail: "No authorization provided", + Err: errors.New("account 'accountID' is not authorized"), }, } }, @@ -1286,7 +1169,7 @@ func TestHandler_isAccountAuthorized(t *testing.T) { IPAddresses: []net.IP{net.ParseIP("127.0.0.1")}, } existingCert := &acme.Certificate{ - AccountID: "differentAccountID", + AccountID: "accountID", } return test{ db: &acme.MockDB{ @@ -1340,176 +1223,94 @@ func TestHandler_isAccountAuthorized(t *testing.T) { } } -func Test_identifierKey(t *testing.T) { - tests := []struct { - name string - identifier acme.Identifier - want string - }{ - { - name: "ip", - identifier: acme.Identifier{ - Type: acme.IP, - Value: "10.0.0.1", - }, - want: "ip|10.0.0.1", +func Test_wrapUnauthorizedError(t *testing.T) { + type test struct { + cert *x509.Certificate + unauthorizedIdentifiers []acme.Identifier + msg string + err error + want *acme.Error + } + var tests = map[string]func(t *testing.T) test{ + "unauthorizedIdentifiers": func(t *testing.T) test { + acmeErr := acme.NewError(acme.ErrorUnauthorizedType, "account 'accountID' is not authorized") + acmeErr.Status = http.StatusForbidden + acmeErr.Detail = "No authorization provided for name 127.0.0.1" + return test{ + err: nil, + cert: nil, + unauthorizedIdentifiers: []acme.Identifier{ + { + Type: acme.IP, + Value: "127.0.0.1", + }, + }, + msg: "account 'accountID' is not authorized", + want: acmeErr, + } }, - { - name: "dns", - identifier: acme.Identifier{ - Type: acme.DNS, - Value: "*.example.com", - }, - want: "dns|*.example.com", + "subject": func(t *testing.T) test { + acmeErr := acme.NewError(acme.ErrorUnauthorizedType, "account 'accountID' is not authorized") + acmeErr.Status = http.StatusForbidden + acmeErr.Detail = "No authorization provided for name test.example.com" + cert := &x509.Certificate{ + Subject: pkix.Name{ + CommonName: "test.example.com", + }, + } + return test{ + err: nil, + cert: cert, + unauthorizedIdentifiers: []acme.Identifier{}, + msg: "account 'accountID' is not authorized", + want: acmeErr, + } }, - { - name: "unknown", - identifier: acme.Identifier{ - Type: "InvalidType", - Value: "<<>>", - }, - want: "unsupported|<<>>", + "wrap-subject": func(t *testing.T) test { + acmeErr := acme.NewError(acme.ErrorUnauthorizedType, "verification of jws using certificate public key failed: square/go-jose: error in cryptographic primitive") + acmeErr.Status = http.StatusForbidden + acmeErr.Detail = "No authorization provided for name test.example.com" + cert := &x509.Certificate{ + Subject: pkix.Name{ + CommonName: "test.example.com", + }, + } + return test{ + err: errors.New("square/go-jose: error in cryptographic primitive"), + cert: cert, + unauthorizedIdentifiers: []acme.Identifier{}, + msg: "verification of jws using certificate public key failed", + want: acmeErr, + } + }, + "default": func(t *testing.T) test { + acmeErr := acme.NewError(acme.ErrorUnauthorizedType, "account 'accountID' is not authorized") + acmeErr.Status = http.StatusForbidden + acmeErr.Detail = "No authorization provided" + cert := &x509.Certificate{ + Subject: pkix.Name{ + CommonName: "", + }, + } + return test{ + err: nil, + cert: cert, + unauthorizedIdentifiers: []acme.Identifier{}, + msg: "account 'accountID' is not authorized", + want: acmeErr, + } }, } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got := identifierKey(tt.identifier) - if !cmp.Equal(tt.want, got) { - t.Errorf("identifierKey() diff = \n%s", cmp.Diff(tt.want, got)) - } - }) - } -} - -func Test_extractIdentifiers(t *testing.T) { - tests := []struct { - name string - cert *x509.Certificate - want map[string]acme.Identifier - }{ - { - name: "ip", - cert: &x509.Certificate{ - IPAddresses: []net.IP{net.ParseIP("127.0.0.1")}, - }, - want: map[string]acme.Identifier{ - "ip|127.0.0.1": { - Type: acme.IP, - Value: "127.0.0.1", - }, - }, - }, - { - name: "dns", - cert: &x509.Certificate{ - DNSNames: []string{"*.example.com"}, - }, - want: map[string]acme.Identifier{ - "dns|*.example.com": { - Type: acme.DNS, - Value: "*.example.com", - }, - }, - }, - { - name: "dns-subject", - cert: &x509.Certificate{ - Subject: pkix.Name{ - CommonName: "www.example.com", - }, - }, - want: map[string]acme.Identifier{ - "dns|www.example.com": { - Type: acme.DNS, - Value: "www.example.com", - }, - }, - }, - { - name: "ip-subject", - cert: &x509.Certificate{ - Subject: pkix.Name{ - CommonName: "127.0.0.1", - }, - }, - want: map[string]acme.Identifier{ - "dns|127.0.0.1": { // this is the currently expected behavior - Type: acme.DNS, - Value: "127.0.0.1", - }, - }, - }, - { - name: "combined", - cert: &x509.Certificate{ - Subject: pkix.Name{ - CommonName: "127.0.0.1", - }, - IPAddresses: []net.IP{net.ParseIP("127.0.0.1"), net.ParseIP("127.0.0.2")}, - DNSNames: []string{"*.example.com", "www.example.com"}, - }, - want: map[string]acme.Identifier{ - "ip|127.0.0.1": { - Type: acme.IP, - Value: "127.0.0.1", - }, - "ip|127.0.0.2": { - Type: acme.IP, - Value: "127.0.0.2", - }, - "dns|*.example.com": { - Type: acme.DNS, - Value: "*.example.com", - }, - "dns|www.example.com": { - Type: acme.DNS, - Value: "www.example.com", - }, - "dns|127.0.0.1": { // this is the currently expected behavior - Type: acme.DNS, - Value: "127.0.0.1", - }, - }, - }, - { - name: "ip-duplicates", - cert: &x509.Certificate{ - IPAddresses: []net.IP{net.ParseIP("127.0.0.1"), net.ParseIP("127.0.0.1"), net.ParseIP("127.0.0.2")}, - }, - want: map[string]acme.Identifier{ - "ip|127.0.0.1": { - Type: acme.IP, - Value: "127.0.0.1", - }, - "ip|127.0.0.2": { - Type: acme.IP, - Value: "127.0.0.2", - }, - }, - }, - { - name: "dns-duplicates", - cert: &x509.Certificate{ - DNSNames: []string{"*.example.com", "www.example.com", "www.example.com"}, - }, - want: map[string]acme.Identifier{ - "dns|*.example.com": { - Type: acme.DNS, - Value: "*.example.com", - }, - "dns|www.example.com": { - Type: acme.DNS, - Value: "www.example.com", - }, - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got := extractIdentifiers(tt.cert) - if !cmp.Equal(tt.want, got) { - t.Errorf("extractIdentifiers() diff=\n%s", cmp.Diff(tt.want, got)) - } + for name, prep := range tests { + tc := prep(t) + t.Run(name, func(t *testing.T) { + acmeErr := wrapUnauthorizedError(tc.cert, tc.unauthorizedIdentifiers, tc.msg, tc.err) + assert.Equals(t, acmeErr.Err.Error(), tc.want.Err.Error()) + assert.Equals(t, acmeErr.Type, tc.want.Type) + assert.Equals(t, acmeErr.Status, tc.want.Status) + assert.Equals(t, acmeErr.Detail, tc.want.Detail) + assert.Equals(t, acmeErr.Identifier, tc.want.Identifier) + assert.Equals(t, acmeErr.Subproblems, tc.want.Subproblems) }) } } From 00539d07c924f5217888a5e849e92ae7e3f6c87b Mon Sep 17 00:00:00 2001 From: Herman Slatman Date: Thu, 9 Dec 2021 09:42:38 +0100 Subject: [PATCH 36/36] Add changelog entry for ACME revocation --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e9d0bc4..b41a90e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased - 0.18.1] - DATE ### Added +- Support for ACME revocation. ### Changed ### Deprecated ### Removed