Skip to content

Commit 17ee7ae

Browse files
ameowliaclaude
andcommitted
fix(envoyconfig): use DNS SAN type for MatchTypedSubjectAltNames
Diego container identity certs use DNSNames (container GUID + internal routes), not URI SANs. Hardcode SanType=DNS to match actual cert structure. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 5ef0b24 commit 17ee7ae

3 files changed

Lines changed: 8 additions & 12 deletions

File tree

src/code.cloudfoundry.org/executor/depot/containerstore/proxy_config_handler_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -625,7 +625,7 @@ var _ = Describe("ProxyConfigHandler", func() {
625625
chainedCert := fmt.Sprintf("%s%s", cert, cert)
626626
containerProxyTrustedCACerts = []string{cert, chainedCert}
627627
inlinedCert = fmt.Sprintf("%s%s", cert, chainedCert)
628-
containerProxyVerifySubjectAltName = []string{"spiffe://cf.internal/app", "gorouter.service.cf.internal"}
628+
containerProxyVerifySubjectAltName = []string{"valid-alt-name-1", "valid-alt-name-2"}
629629
})
630630

631631
It("creates appropriate sds-id-validation-context.yaml configuration file", func() {
@@ -651,8 +651,8 @@ var _ = Describe("ProxyConfigHandler", func() {
651651
},
652652
},
653653
MatchTypedSubjectAltNames: []*envoy_tls.SubjectAltNameMatcher{
654-
{SanType: envoy_tls.SubjectAltNameMatcher_URI, Matcher: &envoy_matcher.StringMatcher{MatchPattern: &envoy_matcher.StringMatcher_Exact{Exact: "spiffe://cf.internal/app"}}},
655-
{SanType: envoy_tls.SubjectAltNameMatcher_DNS, Matcher: &envoy_matcher.StringMatcher{MatchPattern: &envoy_matcher.StringMatcher_Exact{Exact: "gorouter.service.cf.internal"}}},
654+
{SanType: envoy_tls.SubjectAltNameMatcher_DNS, Matcher: &envoy_matcher.StringMatcher{MatchPattern: &envoy_matcher.StringMatcher_Exact{Exact: "valid-alt-name-1"}}},
655+
{SanType: envoy_tls.SubjectAltNameMatcher_DNS, Matcher: &envoy_matcher.StringMatcher{MatchPattern: &envoy_matcher.StringMatcher_Exact{Exact: "valid-alt-name-2"}}},
656656
},
657657
},
658658
}))

src/code.cloudfoundry.org/executor/envoyconfig/config.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -422,12 +422,8 @@ func generateSDSCAResourceSecret(container executor.Container, idCred Credential
422422
}
423423
var matchers []*envoy_tls.SubjectAltNameMatcher
424424
for _, s := range subjectAltNames {
425-
sanType := envoy_tls.SubjectAltNameMatcher_DNS
426-
if strings.Contains(s, "://") {
427-
sanType = envoy_tls.SubjectAltNameMatcher_URI
428-
}
429425
matchers = append(matchers, &envoy_tls.SubjectAltNameMatcher{
430-
SanType: sanType,
426+
SanType: envoy_tls.SubjectAltNameMatcher_DNS,
431427
Matcher: &envoy_matcher.StringMatcher{MatchPattern: &envoy_matcher.StringMatcher_Exact{Exact: s}},
432428
})
433429
}

src/code.cloudfoundry.org/executor/envoyconfig/config_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,18 +134,18 @@ func TestGenerateSDSCAResource(t *testing.T) {
134134
container := executor.Container{Guid: "meow-guid"}
135135
idCred := Credential{}
136136
trusted := []string{}
137-
yaml, err := GenerateSDSCAResource(container, idCred, trusted, []string{"spiffe://meow", "gorouter.service.cf.internal"})
137+
yaml, err := GenerateSDSCAResource(container, idCred, trusted, []string{"some-guid.cf.internal", "gorouter.service.cf.internal"})
138138
if err != nil {
139139
t.Fatal(err)
140140
}
141141
if !bytes.Contains(yaml, []byte("id-validation-context")) {
142142
t.Error("YAML missing validation context name")
143143
}
144-
if !bytes.Contains(yaml, []byte("spiffe://meow")) {
145-
t.Error("YAML missing URI SAN")
144+
if !bytes.Contains(yaml, []byte("some-guid.cf.internal")) {
145+
t.Error("YAML missing first DNS SAN")
146146
}
147147
if !bytes.Contains(yaml, []byte("gorouter.service.cf.internal")) {
148-
t.Error("YAML missing DNS SAN")
148+
t.Error("YAML missing second DNS SAN")
149149
}
150150
}
151151

0 commit comments

Comments
 (0)