Skip to content

Commit 39d5178

Browse files
committed
openssl: add clientcert tests
Adds clientcert auth tests for the newly introduced `MakeTlsConnector::from_tls_config(TlsConfig)` convenience constructor.
1 parent 0a82863 commit 39d5178

File tree

11 files changed

+333
-75
lines changed

11 files changed

+333
-75
lines changed

Diff for: docker/sql_setup.sh

+78-49
Original file line numberDiff line numberDiff line change
@@ -2,60 +2,76 @@
22
set -e
33

44
cat > "$PGDATA/server.key" <<-EOKEY
5-
-----BEGIN RSA PRIVATE KEY-----
6-
MIIEpAIBAAKCAQEAllItXwrj62MkxKVlz2FimJk42WWc3K82Rn2vAl6z38zQxSCj
7-
t9uWwXWTx5YOdGiUcA+JUAruZxqN7vdfphJoYtTrcrpT4rC/FsCMImBxkj1cxdYT
8-
q94SFn9bQBRZk7RUx4Kolt+/h0d3PpNIb4DbyQ8A0MVvNVxLpRRVwc6yQP+NkRMy
9-
gHR+m3P8fxHEtkHCVy7HORbASvN8fRlREMHDL2hkadX0BNM72DDo+DWhPA8GF6WX
10-
tIl1gU6GP6pSbEeMHD3f+uj7f9iSjvkrHrOt2nLUQ9Qnev2nhmU0/dOIweQ17/Fr
11-
lL9jYDUUFNORyjRnlXXUoP5BO/LdEAAqT2A0pwIDAQABAoIBAQCIXu74XUneHuiZ
12-
Wa+eTqwC4mZXmz6OWonzs0vU65NlgksXuv+r6ZO/2GoD1Bcy9jlL3Fxm+DPF56pB
13-
07u7TtHSb3VWdMFrU4tYGcBH45TE5dRHSmo4LlPcgxeGb6/ANwX+pYNKtJvuHyCH
14-
7Vf2iEFcCrdjrumv0BZ0IZmXJGxEV+7mK2Og0bZ/zbmJNaH25muuWj6BKlvLhL0N
15-
S2LlBjKx3HqtppUgUqNFqjLs6IA1u79S5dAomOsxZtnuByaX5WFzpktU2pveZmyF
16-
cl0dwHYZIaxR3ewYeQXGF8ANUmIx3nnxD2JOysPkitaGzeqt6dQZV14tPlDZDKat
17-
Vf0b6BHhAoGBAMWV7rG+7nVXoQ30CIcPGklkST3mVOlrzeBbKP1SeAwoGRbfsdhp
18-
rFMkh5UxTexnOzD4O8HPuJ6NGeWRQfqZT1nnjwHPeJWtiMHT6cnWxlzvxAZ61mio
19-
0jRfb8flhgFKk+G9+Xa6WaYAAwGWdF062EMe2Ym92oKM9ilTPGFVRk1XAoGBAMLD
20-
ETSQd2UqTF/y7wxMPqF3l6d1KBjwpuNuin2IjkXTOfGkDnAU3mSQlr7K1IPX8NPO
21-
gdyMfJoysfRaBuRcNA/o/0l0wyxW4HWtTtPYI0+pRCFtRLsI1MB997QKeaGKb+me
22-
3nBXkOksPSr9oa0Cs27z2cSoBOkpq2N/zzBseHExAoGAOyq3rKBZNehEwTHnb9I0
23-
8+9FA3U6zh9LKjkCIEGW00Uapj/cOMsEIG2a8DEwfW84SWS8OEBkr43fSGBkGo/Y
24-
NDrkFw2ytVee0TQNGTTod6IQ2EPmera7I5XEml5/71kOyZWi40vQVqZAQDR2qgha
25-
BFdzmwywJ1Hg0OUs+pSXlccCgYEAgyOVki80NYolovWQwFcWVOKR2s+oECL6PGlS
26-
FvS714hCm9I7ZnymwlAZMJ6iOaRNJFEIX9i4jZtU95Mm0NzEsXHRc0SLpm9Y8+Oe
27-
EEaYgCsZFOjePpHTr0kiYLgs7fipIkU2wa40hMyk4y2kjzoiV7MaDrCTnevQ205T
28-
0+c1sgECgYBAXKcwdkh9JVSrLXFamsxiOx3MZ0n6J1d28wpdA3y4Y4AAJm4TGgFt
29-
eG/6qHRy6CHdFtJ7a84EMe1jaVLQJYW/VrOC2bWLftkU7qaOnkXHvr4CAHsXQHcx
30-
JhLfvh4ab3KyoK/iimifvcoS5z9gp7IBFKMyh5IeJ9Y75TgcfJ5HMg==
31-
-----END RSA PRIVATE KEY-----
5+
-----BEGIN PRIVATE KEY-----
6+
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDX71FGKHUepupP
7+
7c4VGoeX+Dkn5PZjDkwv+DYsTxpcZ0x/S4fHSz+aEX7cP8M0vxPmxOwJPoAm2Vt2
8+
RTva+8TrGClzWPT8YHzyN7r8jdP9crBQDAidYuQdHxPpXji9TMyRAGk51Qy0U+K/
9+
Wjx787LsWF3DFTgvJdw7YaD9EZzG7sqXvCaWAQ8sxUdj0moSm42ftVFx4Ztv5JEo
10+
nAgKkuJ+0KklLJ08/KTp8OMm95PJzHPl+MDxqDv3jqvg5eVUnm+nE9kgZvTBtNNH
11+
YJM3VZ0rjQDThNlLz9PdHWpfKlBTv1uVGg2SWfVpiaqxq4n686QZPHS0fu/ZQejx
12+
h0bZ8qeBAgMBAAECggEBAKKZ3XOdJ4RrYGnLwrF1hsFS84ctDLPOomRE3lZDQrBu
13+
QNZiQ944ta4ImqSzhwUDFbNiefMEE3AtoIfQ3p+pksENMrlfNSuOZMfoW2+uRQHH
14+
CSldxmbtfqTHMDE8+DDj0e8mhhY8bhKkUEyTYJReEE+UwxYRtnsaYVp9y8KFLq9E
15+
4f6NDMzzSpw/ujkcACtx0DxeWZfaP6Ms4ydh2uDEvzUwnmw4kpsgo4NtPLHDNx/y
16+
kshfSpayYBKJ08qpzUAOXpi2UIRzvrYZE5cAcXtK6Jw02VnpNIr6+q/DAE58at7W
17+
RwvswhNdpVVVwn04o68c4GUsGQFG/Qve8hDLdN+KygECgYEA//PE9FAeuSy2KWxS
18+
HKSYZ422Sx/M4tuAQrX//yCFizxEhs9SF3ybZX4SCHGeQxeogIqOrFKKrXpzpCcH
19+
3fB4LjRpdUKdv11sxFoo0Jw6wtY3N+24yM3jrpDsQqcCxUxm+qOgwGyKRJCkLxK3
20+
RNkAAmoT2mONeaMyWLg5g4wVW5ECgYEA1/miyi6PmT3+y4DCdNYdJll3NRmR4DGk
21+
HDYOd+Qb+DSoBhcxz/bqBDDdXr6FT3nZEkTxKAsaPjarzKjK2J88fvnF2JRnM5Oy
22+
HKRNk3a9KxM//UwUgoLCdg/qZe4EXX9LJr06G6YGgg0uG6Cjsa+rZ33FiucBYrEL
23+
aevQ+cReNPECgYEAsCDlRWHk4nQ8HiEmGAPDxG6mJOgLK4j0p/Np5/xPKVMdrM75
24+
pKPgo2SvsBPPXkfnchzmtPpP57S94xXguf8CFHmIoGJo/wihEjUgpPz9CpoygVAa
25+
ukPEC5o6mlsm8vHyY0M6GXAXbbtC4Am3B69z7DVm1/9tmWiN+rM7EKTTBaECgYBi
26+
qOUWmyJ6DHoCmLU8DjuOszvjg+TBl6uyP3doiUnFnrhK3/mfWNoaRAA8MahQYAcr
27+
c1b+xeOdG/hrK4hOYJ+QGaWphFGInCW3M89EV++eZ9LJcSHFZNpUeHzJR2uzEl1Q
28+
Owz6aGN8sWyorj9ZAji4tBmzlEdrwBjIsDLshinK4QKBgEbmw1Dp1ZQEZcNiNKBl
29+
EEzce+yHf8FSaC4KQSOnZIK30ZoHGLkQfr+C+8qKeDe4WYn3yf5zhjG7ssyxgWrB
30+
S8GdV0OgrtvO5zhDH72KqddZe+api/34Zh2zY/2PKG2gBZ+ubsRpgptVK2ny5pmj
31+
WN5CmfEv9kwQmSKzzSGUJ59l
32+
-----END PRIVATE KEY-----
3233
EOKEY
3334
chmod 0600 "$PGDATA/server.key"
3435

3536
cat > "$PGDATA/server.crt" <<-EOCERT
3637
-----BEGIN CERTIFICATE-----
37-
MIID9DCCAtygAwIBAgIJAIYfg4EQ2pVAMA0GCSqGSIb3DQEBBQUAMFkxCzAJBgNV
38-
BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX
39-
aWRnaXRzIFB0eSBMdGQxEjAQBgNVBAMTCWxvY2FsaG9zdDAeFw0xNjA2MjgyMjQw
40-
NDFaFw0yNjA2MjYyMjQwNDFaMFkxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21l
41-
LVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEjAQBgNV
42-
BAMTCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJZS
43-
LV8K4+tjJMSlZc9hYpiZONllnNyvNkZ9rwJes9/M0MUgo7fblsF1k8eWDnRolHAP
44-
iVAK7mcaje73X6YSaGLU63K6U+KwvxbAjCJgcZI9XMXWE6veEhZ/W0AUWZO0VMeC
45-
qJbfv4dHdz6TSG+A28kPANDFbzVcS6UUVcHOskD/jZETMoB0fptz/H8RxLZBwlcu
46-
xzkWwErzfH0ZURDBwy9oZGnV9ATTO9gw6Pg1oTwPBhell7SJdYFOhj+qUmxHjBw9
47-
3/ro+3/Yko75Kx6zrdpy1EPUJ3r9p4ZlNP3TiMHkNe/xa5S/Y2A1FBTTkco0Z5V1
48-
1KD+QTvy3RAAKk9gNKcCAwEAAaOBvjCBuzAdBgNVHQ4EFgQUEcuoFxzUZ4VV9VPv
49-
5frDyIuFA5cwgYsGA1UdIwSBgzCBgIAUEcuoFxzUZ4VV9VPv5frDyIuFA5ehXaRb
50-
MFkxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJ
51-
bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEjAQBgNVBAMTCWxvY2FsaG9zdIIJAIYf
52-
g4EQ2pVAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHwMzmXdtz3R
53-
83HIdRQic40bJQf9ucSwY5ArkttPhC8ewQGyiGexm1Tvx9YA/qT2rscKPHXCPYcP
54-
IUE+nJTc8lQb8wPnFwGdHUsJfCvurxE4Yv4Oi74+q1enhHBGsvhFdFY5jTYD9unM
55-
zBEn+ZHX3PlKhe3wMub4khBTbPLK+n/laQWuZNsa+kj7BynkAg8W/6RK0Z0cJzzw
56-
aiVP0bSvatAAcSwkEfKEv5xExjWqoewjSlQLEZYIjJhXdtx/8AMnrcyxrFvKALUQ
57-
9M15FXvlPOB7ez14xIXQBKvvLwXvteHF6kYbzg/Bl1Q2GE9usclPa4UvTpnLv6gq
58-
NmFaAhoxnXA=
38+
MIICojCCAYoCCQD51cTqxXxVZDANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAdy
39+
b290LWNhMB4XDTIxMDUxNzIxMDExM1oXDTIyMDUxNzIxMDExM1owFDESMBAGA1UE
40+
AwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1+9R
41+
Rih1HqbqT+3OFRqHl/g5J+T2Yw5ML/g2LE8aXGdMf0uHx0s/mhF+3D/DNL8T5sTs
42+
CT6AJtlbdkU72vvE6xgpc1j0/GB88je6/I3T/XKwUAwInWLkHR8T6V44vUzMkQBp
43+
OdUMtFPiv1o8e/Oy7FhdwxU4LyXcO2Gg/RGcxu7Kl7wmlgEPLMVHY9JqEpuNn7VR
44+
ceGbb+SRKJwICpLiftCpJSydPPyk6fDjJveTycxz5fjA8ag7946r4OXlVJ5vpxPZ
45+
IGb0wbTTR2CTN1WdK40A04TZS8/T3R1qXypQU79blRoNkln1aYmqsauJ+vOkGTx0
46+
tH7v2UHo8YdG2fKngQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQAqJLwuK1HIq2p0
47+
I4N7HUjApiyxYWKqAeiC/65sLyU5TUfTgiSxTJRh625NwEYXzGTGbY674quIYK7I
48+
uUIDrWTu2GBT1DIZJG78xbYfeWoHtKrTZ+MYy70FK448dI4lv0lZbmub0HircR2M
49+
9MVqhWw8ik5FrpiR2DcwTkwNuNlVSu+hr/c/ljhvNP7dBfIxc9Og6xp1tyHW2hce
50+
Vm/3HFjJqBfLw/lbZ6rx5wJA3E13r0LpnwuKQlgPYyaighfgetJdxorj37gCxLn3
51+
77qfpOnFfk/mgY+bLFu9ncR2svab4CGRXPey9Kb6wP+OCwnh0vCBioocUFRANkLb
52+
bEjAYyqo
53+
-----END CERTIFICATE-----
54+
EOCERT
55+
56+
cat > "$PGDATA/root.crt" <<-EOCERT
57+
-----BEGIN CERTIFICATE-----
58+
MIIDHTCCAgWgAwIBAgIJAPuMcWp8Si1PMA0GCSqGSIb3DQEBCwUAMBIxEDAOBgNV
59+
BAMMB3Jvb3QtY2EwHhcNMjEwNTE3MjEwMTEzWhcNMzEwNTE1MjEwMTEzWjASMRAw
60+
DgYDVQQDDAdyb290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
61+
vhPvG4K6R1GAe3/MwLWsb3uQX3Zs8Z+1R15+h1Sx1SwgXLuLDwxMxg0dkip/R0ic
62+
XyJFeVntOQqZfZpwd3iD47AZx6c4/Hn+U6OQtfvY6FmYNfmhngAnk9nr5te4Fu+S
63+
n7YwUJ0+pfC8b6idM5XB2YBnO1azqP5Sa230gSqxBlzjOqUC8rlvF1woDej49E3l
64+
pzP7jD6yrZ3Z3SvF1+ZhW+6CvWi4cm8xfMaTCCvwoR3E7ia6OGUmNP/rkyxXSUHV
65+
O1ELw0FY63+J46BzONR/MRuoXBm2SF07WY9+kS35SIOK1PjO0ndNRlXYv7xzCxDW
66+
4EnfoTfDLwZ6vOBvcST9VwIDAQABo3YwdDAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
67+
DgQWBBTbVbnrDPLMcVV0ExWd/EexzCMhzDBCBgNVHSMEOzA5gBTbVbnrDPLMcVV0
68+
ExWd/EexzCMhzKEWpBQwEjEQMA4GA1UEAwwHcm9vdC1jYYIJAPuMcWp8Si1PMA0G
69+
CSqGSIb3DQEBCwUAA4IBAQA83u6ILbpsQRwyb074exRo2vLC0pjtOBeRLyhi95zk
70+
TtilDHNP5oYf4pmrTAagv+i5eOwwAvoaXil1+mAtckUkV0FRoxAX9U6ZTUFge9HE
71+
G0VLfhqmzlExRl7O6Jr/O7fC6hOz5YDD0SdAaLGx35J9kbWyOLXAWCte3FImetdB
72+
72lbGD8M9J9Sm12aN+e9a8xovFQQG8Sah4XVTubs3Yw8QOhs+kxIrw3LzRt3Nisa
73+
ASCK93sHNpRUfePn/9x+2VAd6p1r4ypDJAH9Tr1E7duPBe+2YwBjMMDviA7eCiFA
74+
Xi7zm5vUeHGuQOBUIz6HE7RGMhQNkORbQiopzVFOBkys
5975
-----END CERTIFICATE-----
6076
EOCERT
6177

@@ -64,6 +80,7 @@ port = 5433
6480
ssl = on
6581
ssl_cert_file = 'server.crt'
6682
ssl_key_file = 'server.key'
83+
ssl_ca_file = 'root.crt'
6784
EOCONF
6885

6986
cat > "$PGDATA/pg_hba.conf" <<-EOCONF
@@ -80,6 +97,16 @@ hostssl all ssl_user ::0/0 trust
8097
host all ssl_user 0.0.0.0/0 reject
8198
host all ssl_user ::0/0 reject
8299
100+
hostssl all cert_user_ca 0.0.0.0/0 trust clientcert=verify-ca
101+
hostssl all cert_user_ca ::0/0 trust clientcert=verify-ca
102+
host all cert_user_ca 0.0.0.0/0 reject
103+
host all cert_user_ca ::0/0 reject
104+
105+
hostssl all cert_user_full 0.0.0.0/0 trust clientcert=verify-full
106+
hostssl all cert_user_full ::0/0 trust clientcert=verify-full
107+
host all cert_user_full 0.0.0.0/0 reject
108+
host all cert_user_full ::0/0 reject
109+
83110
# IPv4 local connections:
84111
host all postgres 0.0.0.0/0 trust
85112
# IPv6 local connections:
@@ -94,6 +121,8 @@ psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
94121
SET password_encryption TO 'scram-sha-256';
95122
CREATE ROLE scram_user PASSWORD 'password' LOGIN;
96123
CREATE ROLE ssl_user LOGIN;
124+
CREATE ROLE cert_user_ca LOGIN;
125+
CREATE ROLE cert_user_full LOGIN;
97126
CREATE EXTENSION hstore;
98127
CREATE EXTENSION citext;
99128
EOSQL

Diff for: postgres-openssl/src/test.rs

+75-4
Original file line numberDiff line numberDiff line change
@@ -145,21 +145,21 @@ async fn from_tls_config_base() {
145145
from_tls_config_smoke_test(TlsConfig {
146146
mode: SslMode::Require,
147147
client_cert: None,
148-
root_cert: Some(PathBuf::from("../test/server.crt")),
148+
root_cert: Some(PathBuf::from("../test/root.crt")),
149149
})
150150
.await;
151151

152152
from_tls_config_smoke_test(TlsConfig {
153153
mode: SslMode::VerifyCa,
154154
client_cert: None,
155-
root_cert: Some(PathBuf::from("../test/server.crt")),
155+
root_cert: Some(PathBuf::from("../test/root.crt")),
156156
})
157157
.await;
158158

159159
from_tls_config_smoke_test(TlsConfig {
160160
mode: SslMode::VerifyFull,
161161
client_cert: None,
162-
root_cert: Some(PathBuf::from("../test/server.crt")),
162+
root_cert: Some(PathBuf::from("../test/root.crt")),
163163
})
164164
.await;
165165
}
@@ -203,7 +203,7 @@ async fn from_tls_config_verify_full_with_wrong_hostname_err() {
203203
let tls_config = TlsConfig {
204204
mode: SslMode::VerifyFull,
205205
client_cert: None,
206-
root_cert: Some(PathBuf::from("../test/server.crt")),
206+
root_cert: Some(PathBuf::from("../test/root.crt")),
207207
};
208208
let mut connector = MakeTlsConnector::from_tls_config(tls_config).unwrap();
209209
smoke_test(
@@ -212,3 +212,74 @@ async fn from_tls_config_verify_full_with_wrong_hostname_err() {
212212
)
213213
.await
214214
}
215+
216+
#[tokio::test]
217+
async fn from_tls_config_client_cert_verify_ca() {
218+
let tls_config = TlsConfig {
219+
mode: SslMode::VerifyCa,
220+
client_cert: Some((
221+
PathBuf::from("../test/postgres.crt"),
222+
PathBuf::from("../test/postgres.key"),
223+
)),
224+
root_cert: Some(PathBuf::from("../test/root.crt")),
225+
};
226+
let mut connector = MakeTlsConnector::from_tls_config(tls_config).unwrap();
227+
smoke_test(
228+
"user=cert_user_ca dbname=postgres",
229+
MakeTlsConnect::<TcpStream>::make_tls_connect(&mut connector, "localhost").unwrap(),
230+
)
231+
.await;
232+
}
233+
234+
#[tokio::test]
235+
async fn from_tls_config_client_cert_verify_full() {
236+
let tls_config = TlsConfig {
237+
mode: SslMode::VerifyFull,
238+
client_cert: Some((
239+
PathBuf::from("../test/cert_user_full.crt"),
240+
PathBuf::from("../test/cert_user_full.key"),
241+
)),
242+
root_cert: Some(PathBuf::from("../test/root.crt")),
243+
};
244+
let mut connector = MakeTlsConnector::from_tls_config(tls_config).unwrap();
245+
smoke_test(
246+
"user=cert_user_full dbname=postgres",
247+
MakeTlsConnect::<TcpStream>::make_tls_connect(&mut connector, "localhost").unwrap(),
248+
)
249+
.await;
250+
}
251+
252+
#[tokio::test]
253+
#[should_panic(expected = "connection requires a valid client certificate")]
254+
async fn from_tls_config_client_cert_verify_full_no_cert_err() {
255+
let tls_config = TlsConfig {
256+
mode: SslMode::VerifyFull,
257+
client_cert: None,
258+
root_cert: Some(PathBuf::from("../test/root.crt")),
259+
};
260+
let mut connector = MakeTlsConnector::from_tls_config(tls_config).unwrap();
261+
smoke_test(
262+
"user=cert_user_full dbname=postgres",
263+
MakeTlsConnect::<TcpStream>::make_tls_connect(&mut connector, "localhost").unwrap(),
264+
)
265+
.await;
266+
}
267+
268+
#[tokio::test]
269+
#[should_panic(expected = "\\\"trust\\\" authentication failed for user \\\"cert_user_full\\\"")]
270+
async fn from_tls_config_client_cert_verify_full_wrong_cert_err() {
271+
let tls_config = TlsConfig {
272+
mode: SslMode::VerifyFull,
273+
client_cert: Some((
274+
PathBuf::from("../test/postgres.crt"),
275+
PathBuf::from("../test/postgres.key"),
276+
)),
277+
root_cert: Some(PathBuf::from("../test/root.crt")),
278+
};
279+
let mut connector = MakeTlsConnector::from_tls_config(tls_config).unwrap();
280+
smoke_test(
281+
"user=cert_user_full dbname=postgres",
282+
MakeTlsConnect::<TcpStream>::make_tls_connect(&mut connector, "localhost").unwrap(),
283+
)
284+
.await;
285+
}

Diff for: test/cert_user_full.crt

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICpzCCAY8CCQD51cTqxXxVZzANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAdy
3+
b290LWNhMB4XDTIxMDUxNzIxMDcxNVoXDTIyMDUxNzIxMDcxNVowGTEXMBUGA1UE
4+
AwwOY2VydF91c2VyX2Z1bGwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
5+
AQDk6alFxouky9Jx38ATn2hx3ecMfKI5WpQJ/lKdcZ2QIGHBsAvqYXOkYJ4/nbjD
6+
v3QsTdkCujiZvJJD7nEhDGpgJoqquI8zlPkXWmeqC+0lhvs3SP+cUyewKbRUxRN4
7+
mxYIsq7854FNlTtJfeleNFxWOzh42C9IzAxXkZsWVzz5yJorXbJlUklV2LA2szN5
8+
9HgO7HMFA8Jc2Ok7hm9gmhQsXUsDkcy5Y1aW04CQat5LVjSUHPJLjSa0l996FIgc
9+
5H8kw8ZvIwfGPu0JusRJL6OdtCp0RhhbPhW1gM7l7CIaiG8WeRSHscgP970uR1dg
10+
nU0X3kb/UC9SAcEJ4AkrHAXdAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAJBiyyF+
11+
zYMaj2Xz8N6ZTUzUCQabIT+VqYacFeihYdTWHXkgbO/yIDg67ybYMscrcNnQujpP
12+
bj9+cTwStk5pwIycyZS+hbgOINXtGQyE48kKksgaU1ctZvmlPbKWbdis4f7Cqr9V
13+
YXmZW3ZQwtmsq5e8OfXJ/6oqbcyuT6wYgDj0f+av1a9QbrN7JcRVRntyKtZ/KBqz
14+
VzIGJYIikopmDTt7pQ61Z11LUhYDsNHbDyeM7s/CV9hfotITS+ZGrZ/wGXAqP1Go
15+
ctCF7MkWqvyQFtz1jwcrqaJ9UXocojm1iDE0MWPpDCLggUwtaglCwSDaiycKt4sa
16+
PiNCaLcOfO3xzIQ=
17+
-----END CERTIFICATE-----

Diff for: test/cert_user_full.key

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDk6alFxouky9Jx
3+
38ATn2hx3ecMfKI5WpQJ/lKdcZ2QIGHBsAvqYXOkYJ4/nbjDv3QsTdkCujiZvJJD
4+
7nEhDGpgJoqquI8zlPkXWmeqC+0lhvs3SP+cUyewKbRUxRN4mxYIsq7854FNlTtJ
5+
feleNFxWOzh42C9IzAxXkZsWVzz5yJorXbJlUklV2LA2szN59HgO7HMFA8Jc2Ok7
6+
hm9gmhQsXUsDkcy5Y1aW04CQat5LVjSUHPJLjSa0l996FIgc5H8kw8ZvIwfGPu0J
7+
usRJL6OdtCp0RhhbPhW1gM7l7CIaiG8WeRSHscgP970uR1dgnU0X3kb/UC9SAcEJ
8+
4AkrHAXdAgMBAAECggEBAIaA9UFWhD70tFbMziO5irk9VcF0ii2BF3M3yHtSgu5o
9+
2IfiVV4GnNh9HP7sQeBi4nQV2elMWm2a66aWuEpe7TJJ8ziU8S+x3Rrnt/mmwFVI
10+
ltvJPMgx5CQSnS8iDWrUVYIO29smfEeF5Cwum60Kvya77Va0UDRKEQZzO9lIsT9i
11+
jv3teKAEP9NDHl9V5IeOcpN5h/PqlEArOSfKOXUFcN8q1uYmjk0pl3kfkjGRBirB
12+
IbhsbjkZhsy4FvNzbliLJCn79In72neIgLPTdMQvXwn9hjQiIZn2a8RQ7Ats2nBk
13+
TlEr8qOFwsM5nrVOHtC5ySacK6y6ySoPDIxCW3pXuIECgYEA+K45tYuFoBMb02Dc
14+
sORcW3F6XNRksdPjmL/pydMWpNPeexIelGv5EbX0NqY2WFgZRFNpp+UrPEUQphis
15+
Tca6tBZleZU8ovpdf8RuvXKVEG49aD1ARX1f13ylfmYyB7g3D8zbYRiNIct4c0x6
16+
7a4mg/0E8IWQXsnSOy26TkUY9yUCgYEA66Z85NriSAtGLBbhQQ1lu4q5aO8pcpZq
17+
0KmKSj3Fjm1zoUSRDZI1ga0NDtH1ZVmYR0cRb1NslGwvXeTqK6Gl0CCweppXwH1B
18+
V5ibt/gb0Q4/NPl11/+PVV2MhTOkQjysDyE8B7vieUR+ozYW173ynIjFYPJhWP7x
19+
i+ahwZ8fklkCgYEA0zmZRvzVaVwRvH9/tLijQgCnQIYfaXRi03HfMFCd4S8cwEhp
20+
tQPpMQPuBSU07+EUxRZcngFnse+v7oTyhbWRDDohwx3hvUUPeeDtdvkGaEha3Fl6
21+
aAvQBoaXQz+mqyvriP4mMNjbt6LOEpEZsRzFFkMpmOq57+lZKm7y2lySkgkCgYAD
22+
tt8XGGAitJLJlR690ME+wIQFpGdp1/cdDN8SJoEbqpv8+cCzjw9q2Nhw2Fxe2Zet
23+
3+/lalI20LG6cCZEw8qCSlGdzRr+/Lpv8AbcUnvVwry6UAhMfEm9FblmTBcVuDEa
24+
F/MDSDHcqXi5h9u6UNMnJny993QTXAlgpCT+kUyFGQKBgQDqrZz1XX6YoIRkrJfW
25+
oBy7CjEOvwkHkV1DjC0u/9jTszJhawvjat9qNXajbaF95CD/6rdCzacjoamKLDzs
26+
GzzyWyiLZA75KLElUzJz7dzBzgON5wZoH7Wo1wBt/Up9q8RvI2htXHIUyop/2WXS
27+
NRuVcx1Rh5cjPBtcaLG9kk7a6A==
28+
-----END PRIVATE KEY-----

Diff for: test/postgres.crt

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIICoTCCAYkCCQD51cTqxXxVZTANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAdy
3+
b290LWNhMB4XDTIxMDUxNzIxMDE0M1oXDTIyMDUxNzIxMDE0M1owEzERMA8GA1UE
4+
AwwIcG9zdGdyZXMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDhSXov
5+
zJq1WAS6RBI6L1lH488KSoPN8K+D+dMbP29GO9OMis6siuDGFNANTq9YFWo/7JgW
6+
JCWskhCZIVpgwdWsUvo+swbCQSvJ4grLPHBKssSjbiUAtsZiXNYxRnNRTi1IdSFD
7+
5TomsDe2jkZhme/beWemu5K0ah2smveRHTOunbo+emHBnyv+d6IVslEFy4Ly5wXz
8+
Gp/1qRIN++dLfdEAl10VuQGf0A3a46ONPIYRklcxHsXuS3VhHqkQvAmWBtsE7I1H
9+
LjyzJznXXBI6G7Pl+WjCNoxvqJg85OzZ8pnfg6uKZGp3A244kb6ddmUnNwtidCS1
10+
4BxDsSd6k8s4cbRvAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAEnnxV2B8ztUe/Je
11+
Nk/10FtI2s/Njl0YieLXUGw3FgT6ZQuEHffEyw8kCr9lhi4jETEllqM1WpRacN4E
12+
S2mXMODaG8eNiJajnZMU9O9pYmPS0e4pSYPlyeSbjGReyrr5wlMd10Fh3eFYbdDc
13+
eNP+GfRiQi5xZ5IdInm8L/VYJRETbKRs30Kn1FqNKokmYrGCVswhWByCMDHSnEps
14+
3QLJWOvHF0I7+gQrqK8Jpmr194Mhe/0IIm3+AxAXCoo+KXyZOSsASnLyoqk62lLP
15+
kXSvnFBZj4u3AUCzr4eO4C104I91/Ljll9kw24AUuaqDIOS3OgAjbklW0BwL5cdh
16+
Cy7l8y4=
17+
-----END CERTIFICATE-----

Diff for: test/postgres.key

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDhSXovzJq1WAS6
3+
RBI6L1lH488KSoPN8K+D+dMbP29GO9OMis6siuDGFNANTq9YFWo/7JgWJCWskhCZ
4+
IVpgwdWsUvo+swbCQSvJ4grLPHBKssSjbiUAtsZiXNYxRnNRTi1IdSFD5TomsDe2
5+
jkZhme/beWemu5K0ah2smveRHTOunbo+emHBnyv+d6IVslEFy4Ly5wXzGp/1qRIN
6+
++dLfdEAl10VuQGf0A3a46ONPIYRklcxHsXuS3VhHqkQvAmWBtsE7I1HLjyzJznX
7+
XBI6G7Pl+WjCNoxvqJg85OzZ8pnfg6uKZGp3A244kb6ddmUnNwtidCS14BxDsSd6
8+
k8s4cbRvAgMBAAECggEBAN4PJOb0kBHrfk1zR1wey6v2ul70b9KQSRCXMSSMdEwQ
9+
MEc5ktmz0jas0R4sztzNzvrPZGF+o7vkBYRKweDZbpn6+DrRD/ptbpIBwo3tNuoK
10+
J5THvqVjg0v1IhNT09ryaeQfv/hCe/0ieOfyeSE/MJNuqWJJRSOb7T/zR867r/OO
11+
HyMrYlMOrYOntrunRTiF3hdm3OpJB0ThHOERLEk/4vruvLELL1X3ZKBv/ZdQ4n9M
12+
ASsiKqfxVN8OklaXetnPNgUAsMnOZ5cB3yaV/mkZkm0aQCbeWKLQb+kisJOQpFza
13+
DR17TwtDiGvUEj7mEqCFiJsXxPdi3pv0PnJZSGa07FECgYEA9ywTvbhK3QKVGRU4
14+
eJtIBu+M6bjak6T2zo5hYEAWog+aC09EaiYlxGhQkiUFsG2Xs7hbkU2b4RXYZixn
15+
P2FR6TCsIHywLRG6DmXZ01kh71ZOvZJgIOMXVK0jnYsQDirNbmd6VBKMyn60O8jt
16+
tXAOci3HQ2H8cD/OxhizWMxNLE0CgYEA6VVNP4CGCqMgFiRA7wOFBQYZOCVlsrZ6
17+
0pnCT3VPDk6YlQsmaqhMbPDK7Af1rRUw9ATAzgqyBGmySU6snpOOatVn8c1bXRnf
18+
BnWJ3c4y/LCm2fILgpHBMneMAkx2c7dRX5ehUTt76VujxTC2HKGjlrjzKs31GeGd
19+
+FJVxY7EEasCgYBp9M0poR0GjRrZO82PdhF0V7ByaLnaXPcoKMT5e7+4DTQd8QcE
20+
8gFypr0TSSedL/2+HyOxsDFIVhMECbjg5Jk2e5TuAEWNrHGzxlmQTj9L2BW9Ekh/
21+
EJppxCbmXDyvtg2GbHl2HNWZ4KLmlgXAp56pt5IaAqEyhUfgh6oqQLo8aQKBgQCu
22+
QbZfJmz0pL7hylF0Lvy4s8VB2SwKO52eipZDISjZVnk9VgZqwSXSdkIV5BvmF11n
23+
3+Td+77W7NjpRohEJY7G2nm2a9c/wIJ/IGjF7ajGbmctfUZ7TL8sIXu+e7w6zz1G
24+
VsdzEymHLZkxOx/GYjD570YrQYU6vvRq75J+6BAl4QKBgBXfxncPKlo/xDUP0nlr
25+
UScgosfTOvMxgk79zV5eoEHcU9ay9ncvef+qpm7lr7+UGMUHqnBGY6st451rhNNW
26+
5Kw97urguUh3B3cky0mvwNRfVjRcZ9/NGONWTFjJKf6Ij9/hzZpqGZYB2XGKdIE4
27+
ZYrqIVCvqekv4GxE6U4hm8kf
28+
-----END PRIVATE KEY-----

Diff for: test/root.crt

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDHTCCAgWgAwIBAgIJAPuMcWp8Si1PMA0GCSqGSIb3DQEBCwUAMBIxEDAOBgNV
3+
BAMMB3Jvb3QtY2EwHhcNMjEwNTE3MjEwMTEzWhcNMzEwNTE1MjEwMTEzWjASMRAw
4+
DgYDVQQDDAdyb290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
5+
vhPvG4K6R1GAe3/MwLWsb3uQX3Zs8Z+1R15+h1Sx1SwgXLuLDwxMxg0dkip/R0ic
6+
XyJFeVntOQqZfZpwd3iD47AZx6c4/Hn+U6OQtfvY6FmYNfmhngAnk9nr5te4Fu+S
7+
n7YwUJ0+pfC8b6idM5XB2YBnO1azqP5Sa230gSqxBlzjOqUC8rlvF1woDej49E3l
8+
pzP7jD6yrZ3Z3SvF1+ZhW+6CvWi4cm8xfMaTCCvwoR3E7ia6OGUmNP/rkyxXSUHV
9+
O1ELw0FY63+J46BzONR/MRuoXBm2SF07WY9+kS35SIOK1PjO0ndNRlXYv7xzCxDW
10+
4EnfoTfDLwZ6vOBvcST9VwIDAQABo3YwdDAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
11+
DgQWBBTbVbnrDPLMcVV0ExWd/EexzCMhzDBCBgNVHSMEOzA5gBTbVbnrDPLMcVV0
12+
ExWd/EexzCMhzKEWpBQwEjEQMA4GA1UEAwwHcm9vdC1jYYIJAPuMcWp8Si1PMA0G
13+
CSqGSIb3DQEBCwUAA4IBAQA83u6ILbpsQRwyb074exRo2vLC0pjtOBeRLyhi95zk
14+
TtilDHNP5oYf4pmrTAagv+i5eOwwAvoaXil1+mAtckUkV0FRoxAX9U6ZTUFge9HE
15+
G0VLfhqmzlExRl7O6Jr/O7fC6hOz5YDD0SdAaLGx35J9kbWyOLXAWCte3FImetdB
16+
72lbGD8M9J9Sm12aN+e9a8xovFQQG8Sah4XVTubs3Yw8QOhs+kxIrw3LzRt3Nisa
17+
ASCK93sHNpRUfePn/9x+2VAd6p1r4ypDJAH9Tr1E7duPBe+2YwBjMMDviA7eCiFA
18+
Xi7zm5vUeHGuQOBUIz6HE7RGMhQNkORbQiopzVFOBkys
19+
-----END CERTIFICATE-----

0 commit comments

Comments
 (0)