Skip to content

Commit bfa3ac9

Browse files
authored
Merge pull request #1012 from 3scale/3.5-merge
3.5 stable to master
2 parents 6f6aeb0 + 151fba8 commit bfa3ac9

19 files changed

+194
-140
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,14 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
66

77
## [Unreleased]
88

9+
### Added
10+
11+
- Ability to configure client certificate chain depth [PR #1006](https://github.com/3scale/APIcast/pull/1006)
12+
913
### Fixed
1014

1115
- Fixed incorrect description of the `client` attribute in the Keycloak role check policy [PR #1005](https://github.com/3scale/APIcast/pull/1005), [THREESCALE_1867](https://issues.jboss.org/browse/THREESCALE-1867)
16+
- Segfault when normalizing some client certificates [PR #1006](https://github.com/3scale/APIcast/pull/1006)
1217

1318
## [3.5.0-rc1] - 2019-03-29
1419

doc/parameters.md

+8
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,14 @@ Path to a file with passphrases for the SSL cert keys specified with
155155
- `on`: reuses SSL sessions.
156156
- `off`: does not reuse SSL sessions.
157157

158+
### `APICAST_PROXY_HTTPS_VERIFY_DEPTH`
159+
160+
**Default:** 1
161+
**Values:** positive integers
162+
163+
Defines the maximum length of the client certificate chain.
164+
If this parameter has 1 as its value, it implies that this length might include one additional certificate (eg. intermediate CA).
165+
158166
### `APICAST_REPORTING_THREADS`
159167

160168
**Default**: 0

gateway/http.d/apicast.conf.liquid

+1
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ server {
7272

7373
ssl_verify_client optional_no_ca;
7474
ssl_certificate_by_lua_block { require('apicast.executor'):ssl_certificate() }
75+
ssl_verify_depth {{ env.APICAST_HTTPS_VERIFY_DEPTH | default: 1 }};
7576
{%- endif %}
7677

7778
server_name _;

gateway/src/resty/openssl/x509.lua

+2-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ local function normalize_pem_cert(str)
5555
if not str then return end
5656
if #(str) == 0 then return end
5757

58-
return re_gsub(str, [[\s(?!CERTIFICATE)]], '\n', 'oj')
58+
-- using also jit compiler (j) will result in a segfault with some certificates
59+
return re_gsub(str, [[\s(?!CERTIFICATE)]], '\n', 'o')
5960
end
6061

6162
function _M.parse_pem_cert(str)

spec/policy/tls_validation/tls_validation_spec.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
local _M = require('apicast.policy.tls_validation')
22

33
local server = assert(fixture('CA', 'server.crt'))
4-
local CA = assert(fixture('CA', 'CA.crt'))
4+
local CA = assert(fixture('CA', 'intermediate-ca.crt'))
55
local client = assert(fixture('CA', 'client.crt'))
66

77
describe('tls_validation policy', function()

t/apicast-policy-tls_validation.t

+49-1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ to_json({
3434
}]
3535
});
3636
--- test env
37+
proxy_ssl_verify on;
38+
proxy_ssl_trusted_certificate $TEST_NGINX_SERVER_ROOT/html/ca.crt;
3739
proxy_ssl_certificate $TEST_NGINX_SERVER_ROOT/html/client.crt;
3840
proxy_ssl_certificate_key $TEST_NGINX_SERVER_ROOT/html/client.key;
3941
proxy_pass https://$server_addr:$apicast_port/t;
@@ -60,7 +62,7 @@ to_json({
6062
{ name => 'apicast.policy.tls_validation',
6163
configuration => {
6264
whitelist => [
63-
{ pem_certificate => CORE::join('', read_file('t/fixtures/CA/CA.crt')) }
65+
{ pem_certificate => CORE::join('', read_file('t/fixtures/CA/intermediate-ca.crt')) }
6466
]
6567
}
6668
},
@@ -70,6 +72,8 @@ to_json({
7072
}]
7173
});
7274
--- test env
75+
proxy_ssl_verify on;
76+
proxy_ssl_trusted_certificate $TEST_NGINX_SERVER_ROOT/html/ca.crt;
7377
proxy_ssl_certificate $TEST_NGINX_SERVER_ROOT/html/client.crt;
7478
proxy_ssl_certificate_key $TEST_NGINX_SERVER_ROOT/html/client.key;
7579
proxy_pass https://$server_addr:$apicast_port/t;
@@ -104,6 +108,8 @@ to_json({
104108
}]
105109
});
106110
--- test env
111+
proxy_ssl_verify on;
112+
proxy_ssl_trusted_certificate $TEST_NGINX_SERVER_ROOT/html/ca.crt;
107113
proxy_ssl_certificate $TEST_NGINX_SERVER_ROOT/html/client.crt;
108114
proxy_ssl_certificate_key $TEST_NGINX_SERVER_ROOT/html/client.key;
109115
proxy_pass https://$server_addr:$apicast_port/t;
@@ -138,6 +144,8 @@ to_json({
138144
}]
139145
});
140146
--- test env
147+
proxy_ssl_verify on;
148+
proxy_ssl_trusted_certificate $TEST_NGINX_SERVER_ROOT/html/ca.crt;
141149
proxy_pass https://$server_addr:$apicast_port/t;
142150
proxy_set_header Host localhost;
143151
log_by_lua_block { collectgarbage() }
@@ -148,3 +156,43 @@ Invalid certificate verification context
148156
[error]
149157
[alert]
150158
--- user_files fixture=CA/files.pl eval
159+
160+
161+
162+
=== TEST 5: TLS Client Certificate contains whole certificate chain
163+
--- env eval
164+
("APICAST_HTTPS_VERIFY_DEPTH" => 2)
165+
--- configuration eval
166+
use JSON qw(to_json);
167+
use File::Slurp qw(read_file);
168+
169+
to_json({
170+
services => [{
171+
proxy => {
172+
policy_chain => [
173+
{ name => 'apicast.policy.tls_validation',
174+
configuration => {
175+
whitelist => [
176+
{ pem_certificate => CORE::join('', read_file('t/fixtures/CA/intermediate-ca.crt')) }
177+
]
178+
}
179+
},
180+
{ name => 'apicast.policy.echo' },
181+
]
182+
}
183+
}]
184+
});
185+
--- test env
186+
proxy_ssl_verify on;
187+
proxy_ssl_trusted_certificate $TEST_NGINX_SERVER_ROOT/html/ca.crt;
188+
proxy_ssl_certificate $TEST_NGINX_SERVER_ROOT/html/client-bundle.crt;
189+
proxy_ssl_certificate_key $TEST_NGINX_SERVER_ROOT/html/client.key;
190+
proxy_pass https://$server_addr:$apicast_port/t;
191+
proxy_set_header Host localhost;
192+
log_by_lua_block { collectgarbage() }
193+
--- response_body
194+
GET /t HTTP/1.0
195+
--- error_code: 200
196+
--- no_error_log
197+
[error]
198+
--- user_files fixture=CA/files.pl eval

t/fixtures/CA/CA.crt

-19
This file was deleted.

t/fixtures/CA/CA.key

-27
This file was deleted.

t/fixtures/CA/Makefile

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
all: client.key client.crt server.key server.crt ca-bundle.crt:
2+
3+
EXPIRATION := 87600h # 10 years
4+
5+
clean:
6+
rm *.crt *.key
7+
8+
# http://smallstep.com
9+
root-ca.crt root-ca.key:
10+
step certificate create root-ca root-ca.crt root-ca.key --profile root-ca \
11+
--no-password --insecure --not-after=${EXPIRATION}
12+
13+
intermediate-ca.crt intermediate-ca.key: root-ca.crt root-ca.key
14+
step certificate create intermediate-ca intermediate-ca.crt intermediate-ca.key \
15+
--profile intermediate-ca --ca ./root-ca.crt --ca-key ./root-ca.key \
16+
--no-password --insecure --not-after=${EXPIRATION}
17+
18+
ca-bundle.crt: intermediate-ca.crt root-ca.crt
19+
step certificate bundle intermediate-ca.crt root-ca.crt $@
20+
21+
server.crt server.key: intermediate-ca.crt intermediate-ca.key
22+
step certificate create server server.crt server.key --profile leaf \
23+
--ca ./intermediate-ca.crt --ca-key ./intermediate-ca.key \
24+
--san localhost --san test --no-password --insecure --not-after=${EXPIRATION}
25+
26+
client.crt client.key: intermediate-ca.crt intermediate-ca.key
27+
step certificate create client client.crt client.key --profile leaf \
28+
--ca ./intermediate-ca.crt --ca-key ./intermediate-ca.key \
29+
--no-password --insecure --not-after=${EXPIRATION}

t/fixtures/CA/ca-bundle.crt

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIBkTCCATegAwIBAgIRAPvf2lJeYv9BaUhvVQzCD8wwCgYIKoZIzj0EAwIwEjEQ
3+
MA4GA1UEAxMHcm9vdC1jYTAeFw0xOTA0MDQxMTMyNTlaFw0yOTA0MDExMTMyNTla
4+
MBoxGDAWBgNVBAMTD2ludGVybWVkaWF0ZS1jYTBZMBMGByqGSM49AgEGCCqGSM49
5+
AwEHA0IABAWpNxVoU+FB6ESOOqt1knztvYdjDFlzvtrOPHJz3Meo2JnMUzINPiIV
6+
FHJkXtSStRKHuB/Lw2vj/gH0AJPg5CKjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNV
7+
HRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTaEjeKcCSJEuUcnwUlddtXhKhMcTAf
8+
BgNVHSMEGDAWgBRfJt1t0sAlUMBwfeTWVv2v4XNcNjAKBggqhkjOPQQDAgNIADBF
9+
AiBXmwMUs2/CG8UdL4ThgNrZ5k+Jnd6tJagDagjS/1pIEAIhAPOI6vWuaqUU68K6
10+
2Uvp9lVMDCS6vd3cljqeipcsOYzl
11+
-----END CERTIFICATE-----
12+
-----BEGIN CERTIFICATE-----
13+
MIIBZjCCAQ2gAwIBAgIQBHMSmrmlj2QTqgFRa+HP3DAKBggqhkjOPQQDAjASMRAw
14+
DgYDVQQDEwdyb290LWNhMB4XDTE5MDQwNDExMzI1OVoXDTI5MDQwMTExMzI1OVow
15+
EjEQMA4GA1UEAxMHcm9vdC1jYTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGG2
16+
NDgiBuXNVWVVxrDNVjPsKm14wg76w4830Zn3K24u03LJthzsB3RPJN9l+kM7ryjg
17+
dCenDYANVabMMQEy2iGjRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAG
18+
AQH/AgEBMB0GA1UdDgQWBBRfJt1t0sAlUMBwfeTWVv2v4XNcNjAKBggqhkjOPQQD
19+
AgNHADBEAiB+MlaTocrG33AiOE8TrH4N2gVrDBo2fAyJ1qDmjxhWvAIgPOoAoWQ9
20+
qwUVj52L6/Ptj0Tn4Mt6u+bdVr6jEXkZ8f0=
21+
-----END CERTIFICATE-----

t/fixtures/CA/client.crt

+9-17
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,11 @@
11
-----BEGIN CERTIFICATE-----
2-
MIIDHzCCAgegAwIBAgIQNiJmU2AYPhdxAbbSqoQD1DANBgkqhkiG9w0BAQsFADAd
3-
MRswGQYDVQQDExJBUEljYXN0IHRlc3RpbmcgQ0EwHhcNMTkwMTE2MDYyNDI5WhcN
4-
MjAwMTE2MDYyNDI5WjARMQ8wDQYDVQQDEwZjbGllbnQwggEiMA0GCSqGSIb3DQEB
5-
AQUAA4IBDwAwggEKAoIBAQDR95eHegZny9kFLtiJZmeu7UN/PXP+KblGxkYoOYix
6-
dI4pc09xufCjcOi1syMLa8BtnKzBUKE8l9Zu71jSnmWnwAaBd1Lqw+qfqHpnZHe4
7-
lNKvhxnfgS4bi01J/mV3Q9smpPQd1HVboymTOZoqHH2snZRT4R7OML9bS3RLrq6W
8-
fEPYx5FCT4/CAFKblBrJX3NxqVscDcULQwOqgIkvYM1Uhq7YRQUT+HuiMqU7lDf9
9-
I/6Klon+vj3f2GJpZ6Uc9rD083V0QcjIztoSInW6tZ07/ZI22gNOxM7qYxGXdMDO
10-
HIbq2C7TuH4nW5BIUtfv2WnPgag36u2/E5ZJWBSwoa4RAgMBAAGjZzBlMA4GA1Ud
11-
DwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDAjAdBgNVHQ4EFgQUkaN2kS95
12-
T6UQhGSPdGvE8BDeKq4wHwYDVR0jBBgwFoAUJD9RABIUSLD30ZMncwmnnmv4azEw
13-
DQYJKoZIhvcNAQELBQADggEBALCRmd6jY8QyFho55dLx6UVvCw4wUJEp9W8sHfJM
14-
jycIYIASiQOPN7UIFzAyF+ujOxm2e3Zap+ppQaZ7zfciRaccDE4crsV44pySH5Bk
15-
53RH1haM92mdwJNSczbPnhSCI64N8rFYUZyocL0/amV3yYepuKu8iIDgnxgSiko6
16-
d2hBCfq71Pi+1bN004pHVizqvgISk6bRlNfesyrt0+aKn3uWB/+oBvAWzZRCyBPf
17-
sLiBcG+utOR10Py8vMITa08hKnWWTSYUir2J3iwDWI+8F6pIEGeHEd8BZjFnd10W
18-
+WPWz11fgjUgafyAdZDbGUqZ28Cjb+PCetSdpCLVt2Tcfqc=
2+
MIIBmjCCAUCgAwIBAgIQUcZ+JcZiYBkY1+U2Wa3XLDAKBggqhkjOPQQDAjAaMRgw
3+
FgYDVQQDEw9pbnRlcm1lZGlhdGUtY2EwHhcNMTkwNDA0MTEzMjU5WhcNMjkwNDAx
4+
MTEzMjU5WjARMQ8wDQYDVQQDEwZjbGllbnQwWTATBgcqhkjOPQIBBggqhkjOPQMB
5+
BwNCAASsKgVvKiD+TeyRWhs3CBoGmIAFiCNplJ4JVmX7nE53HfBrqEOdnftHllCO
6+
Dm3VT2/vfFw4bDPsbGFtMZjIpCM8o3EwbzAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0l
7+
BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMB0GA1UdDgQWBBRxJJmM0Zj+HIBXBkIR
8+
9YTJkbhFRDAfBgNVHSMEGDAWgBTaEjeKcCSJEuUcnwUlddtXhKhMcTAKBggqhkjO
9+
PQQDAgNIADBFAiABKzFUTP4MqJAGwPkdid+TCBmSXS+C2FnrSJ6aAjYbWgIhAPV3
10+
PCV/T+AylMWeL3iPq8FuaXjWNAsTC9aii6g/NAQV
1911
-----END CERTIFICATE-----

t/fixtures/CA/client.key

+5-27
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,5 @@
1-
-----BEGIN RSA PRIVATE KEY-----
2-
MIIEpAIBAAKCAQEA0feXh3oGZ8vZBS7YiWZnru1Dfz1z/im5RsZGKDmIsXSOKXNP
3-
cbnwo3DotbMjC2vAbZyswVChPJfWbu9Y0p5lp8AGgXdS6sPqn6h6Z2R3uJTSr4cZ
4-
34EuG4tNSf5ld0PbJqT0HdR1W6MpkzmaKhx9rJ2UU+EezjC/W0t0S66ulnxD2MeR
5-
Qk+PwgBSm5QayV9zcalbHA3FC0MDqoCJL2DNVIau2EUFE/h7ojKlO5Q3/SP+ipaJ
6-
/r4939hiaWelHPaw9PN1dEHIyM7aEiJ1urWdO/2SNtoDTsTO6mMRl3TAzhyG6tgu
7-
07h+J1uQSFLX79lpz4GoN+rtvxOWSVgUsKGuEQIDAQABAoIBAE0YnIsiQzfZodZF
8-
XT0WXPveIuqVpgGtUFqscxZSCd8e7RRLQuB/ZdydmNUe8b8/0WhuHwDcmlelaRdS
9-
y0qK3si5uanQJqINThlRw6AzQ8KC4tmQwe9Pf56dh8OjpZ4lTFLkPr61RGJhhuKI
10-
RBMyYvL+6XfjMWyEeb8L9afUfEbEr4bgSsHwOGZrPu8JBOXCq4cHp5Tr/PnERdMp
11-
wVJl6CHyoba6NbsGsFoCPpuvrLIL5TykxSLsaYqm4ZdN+eCjBp3cU1CNl+0zUkhf
12-
B6zobztQ5hNSc9NErQK6m7zCAOTNKi1YQYgPigAhbFHURamFG76DNE/EojBDuxKK
13-
JITfGAECgYEA2U8btbG/mJmgHDZxoAyw/GrG+pgMTfBvJU9VPAtipImov2u+AvON
14-
RdLg4cg1ZVsgM+kynyBhGwTytpEvFpChqnKXVb5rrJObYXJSxYRF26TEmkfUcWLF
15-
gHIMIJlp8PloBP3DC1MyKnOPxry0Ye5DI+avWkDy305zAq94TV/Ts3sCgYEA91nX
16-
7OcVePWdF3ooDfvrjsDkmsPMKyDxJkbrFVoLJ1jhTPD/C8XnWC92RH5z1wpDizhu
17-
yslpQkTvadJEoR26Df044Jg1rfcfu2S7xd9051aKUL1mLMEu9o+/d+SIy1U8hLU6
18-
Fjjaj3NVhvUlBQInPQUWh6KeVV3XQ7RfMV5iGOMCgYEAwMWdhjPVDDETyJM/fsRj
19-
aLfsJbcmCynD3yweJ3LOIboAWTbhy0p0w0ELvx7Ux0HsMkCnaGPX4JkmGnB2fiT1
20-
VPfsaeLPL7uNdgdth8wMEIl84oPf4GnHXGdPfMe7JEqLTQozsOMvuFrla15RAiLT
21-
qpBkc8Lz8MZt3i78oF7mtOsCgYEAg08PoLUAIimJTphLwTi2UR83fK1qqo6fVimZ
22-
zMjzWN0HJdheHPrfmGIBz9StXEAXoUXBEygfF84Opse4JSvpxFlkI17KSGMDVnDg
23-
eefpYJIBdWFGZ4Xaj4u6IkSRFhhWu0CV6IwgAr1Abxeeom0FNZCI6FI86aaai1eq
24-
nUO0oe8CgYAuDgnydP5SFs1Dl31NZJkPT6a69jMuCI31LVlwFaBHIZrXPal+5mHo
25-
mptdZv/pIimbegdoOEky35Bnx2WiCc8VA2npirqeDsqQeyilXHlW2CvDsV5k2XzS
26-
lSOtg7NUlVJBMJ7+p7VDJEd+YSOEs0+ttcgB1QI4kb+cNZiuycP55g==
27-
-----END RSA PRIVATE KEY-----
1+
-----BEGIN EC PRIVATE KEY-----
2+
MHcCAQEEIMOOktLiaoQeRNeEQmDalcIftZdB/GG6G0HmDI7aQ+HEoAoGCCqGSM49
3+
AwEHoUQDQgAErCoFbyog/k3skVobNwgaBpiABYgjaZSeCVZl+5xOdx3wa6hDnZ37
4+
R5ZQjg5t1U9v73xcOGwz7GxhbTGYyKQjPA==
5+
-----END EC PRIVATE KEY-----

t/fixtures/CA/files.pl

+18-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,24 @@
11
use File::Slurp qw(read_file);
22

33
[
4-
[ "server.crt" => CORE::join('', read_file('t/fixtures/CA/server.crt')) ],
4+
[ "server.crt" => CORE::join('',
5+
read_file('t/fixtures/CA/server.crt'),
6+
) ],
7+
[ "server-bundle.crt" => CORE::join('',
8+
read_file('t/fixtures/CA/server.crt'),
9+
read_file('t/fixtures/CA/intermediate-ca.crt'),
10+
read_file('t/fixtures/CA/root-ca.crt'),
11+
) ],
12+
[ "ca.crt" => CORE::join('',
13+
read_file('t/fixtures/CA/intermediate-ca.crt'),
14+
read_file('t/fixtures/CA/root-ca.crt'),
15+
) ],
516
[ "server.key" => CORE::join('', read_file('t/fixtures/CA/server.key')) ],
6-
[ "client.crt" => CORE::join('', read_file('t/fixtures/CA/client.crt')) ],
17+
[ "client.crt" => CORE::join('',read_file('t/fixtures/CA/client.crt')) ],
18+
[ "client-bundle.crt" => CORE::join('',
19+
read_file('t/fixtures/CA/client.crt'),
20+
read_file('t/fixtures/CA/intermediate-ca.crt'),
21+
read_file('t/fixtures/CA/root-ca.crt'),
22+
) ],
723
[ "client.key" => CORE::join('', read_file('t/fixtures/CA/client.key')) ],
824
]

t/fixtures/CA/intermediate-ca.crt

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIBkTCCATegAwIBAgIRAPvf2lJeYv9BaUhvVQzCD8wwCgYIKoZIzj0EAwIwEjEQ
3+
MA4GA1UEAxMHcm9vdC1jYTAeFw0xOTA0MDQxMTMyNTlaFw0yOTA0MDExMTMyNTla
4+
MBoxGDAWBgNVBAMTD2ludGVybWVkaWF0ZS1jYTBZMBMGByqGSM49AgEGCCqGSM49
5+
AwEHA0IABAWpNxVoU+FB6ESOOqt1knztvYdjDFlzvtrOPHJz3Meo2JnMUzINPiIV
6+
FHJkXtSStRKHuB/Lw2vj/gH0AJPg5CKjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNV
7+
HRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTaEjeKcCSJEuUcnwUlddtXhKhMcTAf
8+
BgNVHSMEGDAWgBRfJt1t0sAlUMBwfeTWVv2v4XNcNjAKBggqhkjOPQQDAgNIADBF
9+
AiBXmwMUs2/CG8UdL4ThgNrZ5k+Jnd6tJagDagjS/1pIEAIhAPOI6vWuaqUU68K6
10+
2Uvp9lVMDCS6vd3cljqeipcsOYzl
11+
-----END CERTIFICATE-----

t/fixtures/CA/intermediate-ca.key

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
-----BEGIN EC PRIVATE KEY-----
2+
MHcCAQEEIHo2cUPeDiROHNEYFm6ljYQOvHdKbleUKzOm8oYWz0aJoAoGCCqGSM49
3+
AwEHoUQDQgAEBak3FWhT4UHoRI46q3WSfO29h2MMWXO+2s48cnPcx6jYmcxTMg0+
4+
IhUUcmRe1JK1Eoe4H8vDa+P+AfQAk+DkIg==
5+
-----END EC PRIVATE KEY-----

t/fixtures/CA/root-ca.crt

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIBZjCCAQ2gAwIBAgIQBHMSmrmlj2QTqgFRa+HP3DAKBggqhkjOPQQDAjASMRAw
3+
DgYDVQQDEwdyb290LWNhMB4XDTE5MDQwNDExMzI1OVoXDTI5MDQwMTExMzI1OVow
4+
EjEQMA4GA1UEAxMHcm9vdC1jYTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGG2
5+
NDgiBuXNVWVVxrDNVjPsKm14wg76w4830Zn3K24u03LJthzsB3RPJN9l+kM7ryjg
6+
dCenDYANVabMMQEy2iGjRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAG
7+
AQH/AgEBMB0GA1UdDgQWBBRfJt1t0sAlUMBwfeTWVv2v4XNcNjAKBggqhkjOPQQD
8+
AgNHADBEAiB+MlaTocrG33AiOE8TrH4N2gVrDBo2fAyJ1qDmjxhWvAIgPOoAoWQ9
9+
qwUVj52L6/Ptj0Tn4Mt6u+bdVr6jEXkZ8f0=
10+
-----END CERTIFICATE-----

t/fixtures/CA/root-ca.key

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
-----BEGIN EC PRIVATE KEY-----
2+
MHcCAQEEIHVw+IOhIZzhskNuXFHLQdBtoutotAQioIAniZjAWNwIoAoGCCqGSM49
3+
AwEHoUQDQgAEYbY0OCIG5c1VZVXGsM1WM+wqbXjCDvrDjzfRmfcrbi7Tcsm2HOwH
4+
dE8k32X6QzuvKOB0J6cNgA1VpswxATLaIQ==
5+
-----END EC PRIVATE KEY-----

0 commit comments

Comments
 (0)