Backport go 1.15 changes for 0-10-0 (#1334)

* pkg/storage/redis: use SANs cert

Since go1.15, X.509 CommonName is deprecated, switch to a SANs
certificate for test redis TLS.

While at it, add instruction to genearte cert and build test image.

See: https://golang.org/doc/go1.15#commonname

* config: do not test for exact route id

Different go version can genearte different route id, due to the fact
that we are relying on xxhash.

* internal/controlplane: mocking policy name in test

We don't have to test for exact policy name, as it does not make sense
and force us to change test every new go release.

Co-authored-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
This commit is contained in:
Travis Groth 2020-08-25 16:59:36 -04:00 committed by GitHub
parent 9efeabd956
commit 683c591f14
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 205 additions and 147 deletions

View file

@ -93,28 +93,24 @@ func Test_PolicyRouteID(t *testing.T) {
name string name string
basePolicy *Policy basePolicy *Policy
comparePolicy *Policy comparePolicy *Policy
wantID uint64
wantSame bool wantSame bool
}{ }{
{ {
"same", "same",
&Policy{From: "https://pomerium.io", To: "http://localhost", AllowedUsers: []string{"foo@bar.com"}}, &Policy{From: "https://pomerium.io", To: "http://localhost", AllowedUsers: []string{"foo@bar.com"}},
&Policy{From: "https://pomerium.io", To: "http://localhost", AllowedGroups: []string{"allusers"}}, &Policy{From: "https://pomerium.io", To: "http://localhost", AllowedGroups: []string{"allusers"}},
6315033228798964203,
true, true,
}, },
{ {
"different from", "different from",
&Policy{From: "https://pomerium.io", To: "http://localhost"}, &Policy{From: "https://pomerium.io", To: "http://localhost"},
&Policy{From: "https://notpomerium.io", To: "http://localhost"}, &Policy{From: "https://notpomerium.io", To: "http://localhost"},
6315033228798964203,
false, false,
}, },
{ {
"different path", "different path",
&Policy{From: "https://pomerium.io", To: "http://localhost"}, &Policy{From: "https://pomerium.io", To: "http://localhost"},
&Policy{From: "https://pomerium.io", To: "http://localhost", Path: "/foo"}, &Policy{From: "https://pomerium.io", To: "http://localhost", Path: "/foo"},
6315033228798964203,
false, false,
}, },
} }
@ -127,7 +123,6 @@ func Test_PolicyRouteID(t *testing.T) {
assert.NoError(t, tt.comparePolicy.Validate()) assert.NoError(t, tt.comparePolicy.Validate())
assert.Equal(t, tt.wantSame, tt.basePolicy.RouteID() == tt.comparePolicy.RouteID()) assert.Equal(t, tt.wantSame, tt.basePolicy.RouteID() == tt.comparePolicy.RouteID())
assert.Equal(t, tt.wantID, tt.basePolicy.RouteID())
}) })
} }
} }

View file

@ -171,10 +171,6 @@ func inlineFilename(name string) *envoy_config_core_v3.DataSource {
} }
} }
func getPolicyName(policy *config.Policy) string {
return fmt.Sprintf("policy-%x", policy.RouteID())
}
func envoyTLSCertificateFromGoTLSCertificate(cert *tls.Certificate) *envoy_extensions_transport_sockets_tls_v3.TlsCertificate { func envoyTLSCertificateFromGoTLSCertificate(cert *tls.Certificate) *envoy_extensions_transport_sockets_tls_v3.TlsCertificate {
envoyCert := &envoy_extensions_transport_sockets_tls_v3.TlsCertificate{} envoyCert := &envoy_extensions_transport_sockets_tls_v3.TlsCertificate{}
var chain bytes.Buffer var chain bytes.Buffer

View file

@ -98,6 +98,10 @@ func buildControlPlanePrefixRoute(prefix string) *envoy_config_route_v3.Route {
} }
} }
var getPolicyName = func(policy *config.Policy) string {
return fmt.Sprintf("policy-%x", policy.RouteID())
}
func buildPolicyRoutes(options *config.Options, domain string) []*envoy_config_route_v3.Route { func buildPolicyRoutes(options *config.Options, domain string) []*envoy_config_route_v3.Route {
var routes []*envoy_config_route_v3.Route var routes []*envoy_config_route_v3.Route
responseHeadersToAdd := toEnvoyHeaders(options.Headers) responseHeadersToAdd := toEnvoyHeaders(options.Headers)

View file

@ -1,6 +1,7 @@
package controlplane package controlplane
import ( import (
"fmt"
"net/url" "net/url"
"testing" "testing"
"time" "time"
@ -9,6 +10,14 @@ import (
"github.com/pomerium/pomerium/internal/testutil" "github.com/pomerium/pomerium/internal/testutil"
) )
func policyNameFunc() func(*config.Policy) string {
i := 0
return func(*config.Policy) string {
i++
return fmt.Sprintf("policy-%d", i)
}
}
func Test_buildGRPCRoutes(t *testing.T) { func Test_buildGRPCRoutes(t *testing.T) {
routes := buildGRPCRoutes() routes := buildGRPCRoutes()
testutil.AssertProtoJSONEqual(t, ` testutil.AssertProtoJSONEqual(t, `
@ -210,6 +219,10 @@ func Test_buildControlPlanePrefixRoute(t *testing.T) {
} }
func Test_buildPolicyRoutes(t *testing.T) { func Test_buildPolicyRoutes(t *testing.T) {
defer func(f func(*config.Policy) string) {
getPolicyName = f
}(getPolicyName)
getPolicyName = policyNameFunc()
routes := buildPolicyRoutes(&config.Options{ routes := buildPolicyRoutes(&config.Options{
CookieName: "pomerium", CookieName: "pomerium",
DefaultUpstreamTimeout: time.Second * 3, DefaultUpstreamTimeout: time.Second * 3,
@ -283,7 +296,7 @@ func Test_buildPolicyRoutes(t *testing.T) {
}, },
"route": { "route": {
"autoHostRewrite": true, "autoHostRewrite": true,
"cluster": "policy-701142725541ce1f", "cluster": "policy-1",
"timeout": "3s", "timeout": "3s",
"upgradeConfigs": [ "upgradeConfigs": [
{ "enabled": false, "upgradeType": "websocket"}, { "enabled": false, "upgradeType": "websocket"},
@ -306,7 +319,7 @@ func Test_buildPolicyRoutes(t *testing.T) {
}, },
"route": { "route": {
"autoHostRewrite": false, "autoHostRewrite": false,
"cluster": "policy-35b6cce9d52d36ed", "cluster": "policy-2",
"timeout": "0s", "timeout": "0s",
"upgradeConfigs": [ "upgradeConfigs": [
{ "enabled": true, "upgradeType": "websocket"}, { "enabled": true, "upgradeType": "websocket"},
@ -329,7 +342,7 @@ func Test_buildPolicyRoutes(t *testing.T) {
}, },
"route": { "route": {
"autoHostRewrite": true, "autoHostRewrite": true,
"cluster": "policy-8935ca8067709cf7", "cluster": "policy-3",
"timeout": "60s", "timeout": "60s",
"upgradeConfigs": [ "upgradeConfigs": [
{ "enabled": false, "upgradeType": "websocket"}, { "enabled": false, "upgradeType": "websocket"},
@ -362,7 +375,7 @@ func Test_buildPolicyRoutes(t *testing.T) {
}, },
"route": { "route": {
"autoHostRewrite": true, "autoHostRewrite": true,
"cluster": "policy-45c2908c3d6f0e52", "cluster": "policy-4",
"timeout": "3s", "timeout": "3s",
"upgradeConfigs": [ "upgradeConfigs": [
{ "enabled": false, "upgradeType": "websocket"}, { "enabled": false, "upgradeType": "websocket"},
@ -385,7 +398,7 @@ func Test_buildPolicyRoutes(t *testing.T) {
}, },
"route": { "route": {
"autoHostRewrite": true, "autoHostRewrite": true,
"cluster": "policy-8935ca8067709cf7", "cluster": "policy-5",
"timeout": "60s", "timeout": "60s",
"upgradeConfigs": [ "upgradeConfigs": [
{ "enabled": false, "upgradeType": "websocket"}, { "enabled": false, "upgradeType": "websocket"},
@ -409,7 +422,7 @@ func Test_buildPolicyRoutes(t *testing.T) {
}, },
"route": { "route": {
"autoHostRewrite": false, "autoHostRewrite": false,
"cluster": "policy-35b6cce9d52d36ed", "cluster": "policy-6",
"timeout": "3s", "timeout": "3s",
"upgradeConfigs": [ "upgradeConfigs": [
{ "enabled": false, "upgradeType": "websocket"}, { "enabled": false, "upgradeType": "websocket"},
@ -432,7 +445,7 @@ func Test_buildPolicyRoutes(t *testing.T) {
}, },
"route": { "route": {
"autoHostRewrite": false, "autoHostRewrite": false,
"cluster": "policy-35b6cce9d52d36ed", "cluster": "policy-7",
"timeout": "0s", "timeout": "0s",
"upgradeConfigs": [ "upgradeConfigs": [
{ "enabled": true, "upgradeType": "websocket"}, { "enabled": true, "upgradeType": "websocket"},
@ -447,6 +460,10 @@ func Test_buildPolicyRoutes(t *testing.T) {
// Make sure default Headers are set for response. // Make sure default Headers are set for response.
// See also https://github.com/pomerium/pomerium/issues/901 // See also https://github.com/pomerium/pomerium/issues/901
func TestAddOptionsHeadersToResponse(t *testing.T) { func TestAddOptionsHeadersToResponse(t *testing.T) {
defer func(f func(*config.Policy) string) {
getPolicyName = f
}(getPolicyName)
getPolicyName = policyNameFunc()
routes := buildPolicyRoutes(&config.Options{ routes := buildPolicyRoutes(&config.Options{
CookieName: "pomerium", CookieName: "pomerium",
DefaultUpstreamTimeout: time.Second * 3, DefaultUpstreamTimeout: time.Second * 3,
@ -476,7 +493,7 @@ func TestAddOptionsHeadersToResponse(t *testing.T) {
}, },
"route": { "route": {
"autoHostRewrite": true, "autoHostRewrite": true,
"cluster": "policy-701142725541ce1f", "cluster": "policy-1",
"timeout": "3s", "timeout": "3s",
"upgradeConfigs": [ "upgradeConfigs": [
{ "enabled": false, "upgradeType": "websocket"}, { "enabled": false, "upgradeType": "websocket"},
@ -496,6 +513,10 @@ func TestAddOptionsHeadersToResponse(t *testing.T) {
} }
func Test_buildPolicyRoutesWithDestinationPath(t *testing.T) { func Test_buildPolicyRoutesWithDestinationPath(t *testing.T) {
defer func(f func(*config.Policy) string) {
getPolicyName = f
}(getPolicyName)
getPolicyName = policyNameFunc()
routes := buildPolicyRoutes(&config.Options{ routes := buildPolicyRoutes(&config.Options{
CookieName: "pomerium", CookieName: "pomerium",
DefaultUpstreamTimeout: time.Second * 3, DefaultUpstreamTimeout: time.Second * 3,
@ -526,7 +547,7 @@ func Test_buildPolicyRoutesWithDestinationPath(t *testing.T) {
"route": { "route": {
"autoHostRewrite": true, "autoHostRewrite": true,
"prefixRewrite": "/bar", "prefixRewrite": "/bar",
"cluster": "policy-605b7be39724cb4f", "cluster": "policy-1",
"timeout": "3s", "timeout": "3s",
"upgradeConfigs": [ "upgradeConfigs": [
{ "enabled": false, "upgradeType": "websocket"}, { "enabled": false, "upgradeType": "websocket"},

13
pkg/storage/redis/testdata/README.md vendored Normal file
View file

@ -0,0 +1,13 @@
# Redis test server
## Genearte test certs
```sh
./create_test_cert.sh
```
## Build docker image
```sh
docker build -t gnouc/pomerium-redis-tls:latest .
```

View file

@ -0,0 +1,27 @@
#!/bin/bash
#!/bin/bash
mkdir -p tls
openssl genrsa -out tls/ca.key 4096
openssl req \
-x509 -new -nodes -sha256 \
-key tls/ca.key \
-days 3650 \
-subj '/O=Redis Test/CN=Pomerium CA' \
-out tls/ca.crt
openssl genrsa -out tls/redis.key 2048
openssl req \
-new -sha256 \
-key tls/redis.key \
-subj '/O=Redis Test/CN=Server' | \
openssl x509 \
-req -sha256 \
-CA tls/ca.crt \
-CAkey tls/ca.key \
-CAserial tls/ca.txt \
-CAcreateserial \
-days 3650 \
-out tls/redis.crt \
-extensions san \
-extfile tls/req.conf
openssl dhparam -out tls/redis.dh 2048

View file

@ -1,29 +1,27 @@
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
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
izm4jRW7jSLxfw==
-----END CERTIFICATE----- -----END CERTIFICATE-----

View file

@ -1,51 +1,51 @@
-----BEGIN RSA PRIVATE KEY----- -----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----

View file

@ -1 +1 @@
D2B95B278BB44405 A067BAEC40B36AD7

View file

@ -1,23 +1,23 @@
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIID2jCCAcICCQDSuVsni7REBTANBgkqhkiG9w0BAQsFADA1MRMwEQYDVQQKDApS MIID1zCCAb+gAwIBAgIJAKBnuuxAs2rXMA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
ZWRpcyBUZXN0MR4wHAYDVQQDDBVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMjAw BAMMC1BvbWVyaXVtIENBMB4XDTIwMDgxMjA1MzYyN1oXDTMwMDgxMDA1MzYyN1ow
NzMwMDQyMzQ0WhcNMjEwNzMwMDQyMzQ0WjApMRMwEQYDVQQKDApSZWRpcyBUZXN0 JjETMBEGA1UECgwKUmVkaXMgVGVzdDEPMA0GA1UEAwwGU2VydmVyMIIBIjANBgkq
MRIwEAYDVQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyKobpOg3TTZcrbprJttPs9fbF1gVOKOk
AoIBAQDlqpPoUThTy+bbhKynsb1q/jSkh6UlvaitCgLANlmpQzGMLkK7lRcOF3GA P40Rs5k/kjRGnIaqme3rh38KhRN2Fb59td6QpdyNkbq5noD19O+2MOk9k6KD0cN2
VthohYcHEitUzqtgkqYtdruQ38/fWRJZUnfjV8wCp9pVZ8iVnPr6oAXN/u0REeye ClhGt6//yqp5WXPWLeZ5L5SENPOxxxNkpnF/wAwlbj0mQpQvtLUZ63dqk6wDoJP7
jrwnEzEao1Bn9QpLtHB7o0GsHgEcu1DpZGWxjZY6TNcO1OT61slYvmXM7D0oEPD8 WBTZDbGJy04eTP9wGSyFYCBu4n7LeeeZVzxREoj4mg/1mEHkWy87fvkWfK9ZJXRt
P05uGgImpmD9gE0pZTMnZKCjdErBE+9AldbHpQEQukQ60DBw4Px8fSWYdXOUbi4H JxkuE+Y62mz6r9BqWhXdKOB065iXhsO4Rc11RbNk5Gu7e/lE6cAcxHLMGbCM0lly
12AcNq//LFtpEtsFZ2FtUoRxhwVxeXmoPkYmnz1ZUssWtND/AMYcke3+OJ+hh4tU 4yz+z+dJUv3uT9uGXM/3KnJmpuGfJElQ0OvnlbUNvcqf2RNtLTb8pQIDAQABoxgw
qU28IOj2muCFs9Ibh+ecFwXZFzgrAgMBAAEwDQYJKoZIhvcNAQELBQADggIBAD+J FjAUBgNVHREEDTALgglsb2NhbGhvc3QwDQYJKoZIhvcNAQELBQADggIBAGXEw4cy
/MKK7e8PDSNqZl5vKj4CWZCAiHDFTIuyjGN0SBGlhIAVYEmUU28QHIpB7P/BTbih S/3kpLa1NMhFI8cwa1WmVTHK9caqH/fZ45ScSk88HJsjQEHai520GH9Hz3Oe1891
ToUW9Z1AEcbNbo3jRnLftZ5dHT0m7VxmFhTw3S2+D8oFuFOSVGQ49UFFb/Mc6VXT 2otLGLho10WKrYZeLneJy6vgisNH9oFw/XPzp3B8s4WLccP/mDg3LFSz9D3rp4lp
AIhgSSfMo0Sl83oyA35U4bKBkyW+3zPm/Tlagqsotxp4IMfDNc1dAMoeVSS8Pb5k RrvrDTrth9l1w0JgRUTpfSkMxchl873A3JU2QXusm2IPk2ICBtAiH8DNR+JEAf5n
KZxxGBU7dkxeLVywzTloVXduMuE6eVOZgEOCPCG419RHUFSvZKSxIjatgK+bkw9H msKzA+RO14Dc0MYf1/GN7RVtrPVLeahumtdvnJ5hbOpnzTMt9wfIBJU+X6J+WDPE
WYtGduRZinU2QDlnTZVhq78rqhrsloW4uCfpBo/DF5V043iQ5RmGuLzFkilRvpZQ zkSnyBOtrWVwc/ZrkX8jk5rhVji/AEZrQw6CDliIq3Dh/80FFY+qhQW7O7DqI+J6
QAAbc2qWxUJKl61TprY9RD1vp35TXuTsJIiiGYYOXJjc1lEE7VjRi1JDPPtT2DpW r64Z1JKVJA/DiwUhv0dgwtCpXkLcHJN5gq8jWnhj5pSQ2TL+whnEmTQmPTNEmxWz
GDJE/ma7VwzHUf3+AOrq4TH1Cjw0v0sz2rwkS4KAKTqz/CYoIg1wwUnOOr5FfSSP lep9vUOdGXwW2khmi+TcGNJeVMp6DD0CZEFlGZ9qSKQ7fyRLGgry/iPnBYPKSg6T
6rzaAhtWK3+jJW6jf1+Loe7FtEeL8uzILbxmHrjoBLvRU8zlLYvXl9TnPDXRE2TF OjLMS9G3cdApaod7M4479j4EK7V3bK4dnRp+qmg2TXhF+F+zRLf21THMip6AEz2u
4mSySab4OVILxf0ykRdrsO9of10xl3x5MKAbEsHiwsMrA47lN8WxF/BD2OhZMMA7 pTFhqCYq42K8Mxa+TjKwSplTE/jS0O5zpJuPDnTXNM57x2Unlhi5fNaveg7fb8Np
HOWoB+O5qrwHSQJiVCRWWw3OpCeguMgrC8u4gWM6i589yH6fpRwH5dxCtIcrJBmB Fyn+vMbxNW9z6naR35XeEyvcV5zAluh5oseXXIzr1xurRmWNgg2Fx5E5oPeEZx3L
YuhPo+21yI3+v6ylQcY2Rrh7k5TlCpCQYFHfcmOV egElJVL3xwac403pmA3057t4C4/ZFg4gXuUB
-----END CERTIFICATE----- -----END CERTIFICATE-----

View file

@ -1,8 +1,8 @@
-----BEGIN DH PARAMETERS----- -----BEGIN DH PARAMETERS-----
MIIBCAKCAQEA0z6Tn69LEeG4+pooHvW9ENMBqdd23JD0UvB69TknOLogvSFUpQwI MIIBCAKCAQEA4BcCbibc5Tc0JoUfkJkoY5L99tpEpB6CL4TCxC1jyiqrNoclEb2D
JNlhisC0a4LjuBD07X9drWW1uL2yb8vgexGRpWxLmPMEUTMTCRzkHVQEHSkV6MJn Tc8f/mnOKS8MuAZOOiyHQh9n1FyN0rudLIOUzGjVzmTNUXo8Md7N3pM3caZeFYbp
todbgVQ4c2DRGAsSA8VY5XVGIf6w7IUJ/OagyQ/Gr/9+DzliOC7svQlR2iKogX/s AoY7E9ISlYFm20zaeTziWUC8Yxs+WFEJbDbHScCW3KAqEevM/KfG1TpXKSqJkKGV
P4+qk0is8lpMMBzhz1bzo4zsJ8NMFqzYGQzuYzlEQlI6UCiiR2+rd6Fh83RbPb12 zkVyKJItObFCTlGclvRxC7Ajq/+o7fF1U6rfkiuMstXTXxOpvE6KiHkppXlf0gmW
4o9XKr0Wh+hAwl6EOERMmHR2UBYFn1+It6vmcg8uJnoEWzSiZTWOXqID3YeRyCPi 81XJ3k7VOWPBIBdbeJGXrLajU7WuKiNnTvUlf7XEJq5/fy1CkJdxFL/QFCNNp9kR
Myz43Ir5tHMz3V6gVSBZnhex09w58FjRkwIBAg== 8NYanjTl6vZgaN7+UbWI69LF/CL7kaBOAwIBAg==
-----END DH PARAMETERS----- -----END DH PARAMETERS-----

View file

@ -1,27 +1,27 @@
-----BEGIN RSA PRIVATE KEY----- -----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----

View file

@ -0,0 +1,4 @@
[req]
distinguished_name=req
[san]
subjectAltName=DNS:localhost