Skip to content

Commit

Permalink
Overwrite agent leaf cert trust domain on the servers
Browse files Browse the repository at this point in the history
  • Loading branch information
mkeeler committed Jun 30, 2020
1 parent 19040f1 commit 2ddcba0
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions agent/consul/connect_ca_endpoint.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"errors"
"fmt"
"net/url"
"reflect"
"strings"
"time"
Expand Down Expand Up @@ -427,6 +428,30 @@ func (s *ConnectCA) Sign(
return fmt.Errorf("SPIFFE ID in CSR from a different trust domain: %s, "+
"we are %s", serviceID.Host, signingID.Host())
}
} else {
// isAgent - if we support more ID types then this would need to be an else if
// here we are just automatically fixing the trust domain. For auto-encrypt and
// auto-config they make certificate requests before learning about the roots
// so they will have a dummy trust domain in the CSR.
trustDomain := signingID.Host()
if agentID.Host != trustDomain {
originalURI := agentID.URI()

agentID.Host = trustDomain
csr.Subject.CommonName = connect.AgentCN(agentID.Agent, trustDomain)

// recreate the URIs list
uris := make([]*url.URL, len(csr.URIs))
for i, uri := range csr.URIs {
if originalURI.String() == uri.String() {
uris[i] = agentID.URI()
} else {
uris[i] = uri
}
}

csr.URIs = uris
}
}

// Verify that the ACL token provided has permission to act as this service
Expand Down

0 comments on commit 2ddcba0

Please sign in to comment.