Skip to content

Commit a86ad5b

Browse files
committed
feat: separate TLS certs for storage and database
1 parent f362e64 commit a86ad5b

File tree

15 files changed

+342
-145
lines changed

15 files changed

+342
-145
lines changed

tests/data/ca.crt

Lines changed: 0 additions & 19 deletions
This file was deleted.

tests/data/database.crt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDhDCCAmygAwIBAgIUUQQsk4wdGfrawpygX64aFtR6/1IwDQYJKoZIhvcNAQEL
3+
BQAwFzEVMBMGA1UEAwwMdGVzdC1yb290LWNhMB4XDTI0MTIwNTEzMjEwMVoXDTM5
4+
MTIwMjEzMjEwMVowDzENMAsGA1UECgwEdGVzdDCCASIwDQYJKoZIhvcNAQEBBQAD
5+
ggEPADCCAQoCggEBAMU+EoeP6971G2uFgo2Sm2Ela8rjZSmivZZ3Xg//rj9gcfle
6+
KNoJ5EAHdwyTfapLoSVvgy1QLun15ibWeRgbBuUt2+DiHnEpaeriUqmktki9UIzl
7+
pAjytDwCmsjbOoLXRhCIa02tkU6rF8JjpwitZnwhTXjJTAkuJiuNvN2EEdacTlx1
8+
ZPdcHQveJTVJy4eOoSA8yc72XG9CWPY8mhLMTOzoZqbRX7MRoZoyYaV8TNAyQmh4
9+
tX045h4u1ZmMkWC06z2n+8Le3wTpu6mccOhS2ETw0j3Jefx78Zafc2s+jX0lCP71
10+
qiQXeEx1vuYQ5+nop2wh2nTFeFrjH+zZ4eyKduUCAwEAAaOBzzCBzDBdBgNVHREE
11+
VjBUgiNkYXRhYmFzZS1ncnBjLnlkYi5zdmMuY2x1c3Rlci5sb2NhbIItKi5kYXRh
12+
YmFzZS1pbnRlcmNvbm5lY3QueWRiLnN2Yy5jbHVzdGVyLmxvY2FsMB0GA1UdJQQW
13+
MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBRe
14+
hFiyRdaUYUiw6KnHiuTcqwh0CjAfBgNVHSMEGDAWgBRPTY3GM3OCesbsHOf9zDIu
15+
T6ubJTANBgkqhkiG9w0BAQsFAAOCAQEAkYb1N40MGhxw07vVDPHrBfuMSgPqSqef
16+
myPtwAIuwPIOILIAIek0yUogeMKF7kv/C5fyRnac3iHz59M7V4PetW7YhLB6G20n
17+
bOpvq1Bp8Lw7WwRviULWHHIsS9OZlekvikEs3jS9H7XZGgmKC4mN3GbCZkpUvRjU
18+
BBsdyKkQsDupofrzbFPaWfgRjUPGuQ27vUrZkPlmQPrZmowJpTIYwMyJxL8qFtip
19+
JWX8qsKRle58L/K64Nx7AbW2LFjey8txJtkkROwpy9Zt7Dn0kvLcjZC2H8Nqdx8o
20+
bPJqXdMlbGEUFDo1W6W/6zYCRUuDVvtM26Yua5DOm+6wJW+sSqlv4Q==
21+
-----END CERTIFICATE-----

tests/data/database.key

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDFPhKHj+ve9Rtr
3+
hYKNkpthJWvK42Upor2Wd14P/64/YHH5XijaCeRAB3cMk32qS6Elb4MtUC7p9eYm
4+
1nkYGwblLdvg4h5xKWnq4lKppLZIvVCM5aQI8rQ8AprI2zqC10YQiGtNrZFOqxfC
5+
Y6cIrWZ8IU14yUwJLiYrjbzdhBHWnE5cdWT3XB0L3iU1ScuHjqEgPMnO9lxvQlj2
6+
PJoSzEzs6Gam0V+zEaGaMmGlfEzQMkJoeLV9OOYeLtWZjJFgtOs9p/vC3t8E6bup
7+
nHDoUthE8NI9yXn8e/GWn3NrPo19JQj+9aokF3hMdb7mEOfp6KdsIdp0xXha4x/s
8+
2eHsinblAgMBAAECggEALgJQ8bDDcTZlD0NtJOd8GaDQQFsjO59T0I+nEB3Q0EVH
9+
yMarSlMQ3FOxdCxKXak3HYOhynXf/6Clr00LobEaPmbgWZh9R+HEbG8fH6XFhHmu
10+
mrMtfI3at33XC7/BqggbtpsPxqaUVNCpoeU7bxV9qLpe9ywjcafDbRjqo5RdUd0q
11+
J29OtBD/tfEFU17Bv0VlYW/IXmGhJp686ZDvUpybrc2qGiWJo5wnGgUpL0OLNk0L
12+
piK7TThjDzBNLCSzq6DOZOwIoNBmGINLK1Q3SjC77zWH3YzZv/u3EjE3v61phQlj
13+
hy2tR3yimFYGxX6ZJduockJgOC4WJznkR2G85HjggQKBgQD5+JB1o5rfo7J7Txgl
14+
afL7EL2v/+VZ7DSs7Zh+zlIbGGr2vNnW5SgOOfpnjAY+8E91D3BzfmWdIb7/BGwB
15+
6VAq6aH4a1xhOfWRmUgHL1vDfMfxO8hFN2Ixo2QCt+mQv09lZrExpr1RmlHPPija
16+
XWJ0yE85cJHZlfywLQrG85F+gQKBgQDJ//ArSt4idZ4uRyslMj2ntnsBaD8DwVzl
17+
jie1+ohMW26Fsw3059JplmmiPAvQXFzl3oZcOpJjxjHdGP7al3mdzGHbBSLDtW/h
18+
bREUX78RZm9WHpc2K8ZkPxp36EAysZpmKCdkWH7lB/pt7926BUyqhHXk7thrkTeU
19+
PylzE/iOZQKBgE4oHKrbg5IHMcgCO+9+x/0eB+EepoxOIU4sX7DOO7fDE7af55Cc
20+
R8Di+dskWdOV+ZIFSMijrYvKwFgl/ss+MtWoBP+SOekgYRqsDWxJr2xY+H8BjSWv
21+
ImGYz61V6Y5bcqymxiJbGviHwqqEqetUpXMUKkkwXDnm/oHrI2J/R2+BAoGAYlzv
22+
7ZTqcGtH2I8tUlKRtV5lrXy+2qxI+Tts2O+jeVM4kYBsdmqAiowE6kxFEHQ5hHIE
23+
iVq4OD+lvl1SlM0YGqAQsp9gm155mZMLsxkgqG9yHcSNq4JLfDtCP0toH4degQpi
24+
jDmPqSVmbCxWkyPLfmk8I3uvBUpUfyr2myQJcAUCgYEA+b+ovH8gh3PGfuXtj4zW
25+
6IjGXnmt4u2YUssF9sBklbTq9Ev8M4h58TlNh1oHWQ6yyXnpsP8vZMFU0iMYybvi
26+
WGfPMtigyiLASjTV7Ws60uQlZ8raHqtb7QN5wJrvGqVxJe6aw/gQmxY8ejNjjWyM
27+
1QkHQGyLaWJWFUy3blpUBsA=
28+
-----END PRIVATE KEY-----

tests/data/generate-crts/README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
## Certificates for testing
2+
3+
`ca.crt` and `ca.key` are just a self-signed CA created like this:
4+
5+
6+
```
7+
openssl genrsa -out ca.key 2048
8+
9+
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt -subj "/CN=test-root-ca"
10+
```
11+
12+
Then use `generate-test-certs.sh` to generate storage and database certs, which then are used in tests.

tests/data/generate-crts/ca.crt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDDzCCAfegAwIBAgIUPG5Ffwh8I/zAtqSePmlBTGsP2eEwDQYJKoZIhvcNAQEL
3+
BQAwFzEVMBMGA1UEAwwMdGVzdC1yb290LWNhMB4XDTI0MTIwNTExMjk1MFoXDTM0
4+
MTIwMzExMjk1MFowFzEVMBMGA1UEAwwMdGVzdC1yb290LWNhMIIBIjANBgkqhkiG
5+
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA45Y8h+mKX0//0H6B+KUcmhyis2dlfI8MlQNo
6+
1qRpsQQKkqY+n6J8mzFPO+XOC/kLia6SShgpGZF79xhC9+Iq+2ARulIbPH3PiUdf
7+
gwnLD/wfFgCmPaFFfJ93v9AY+eWeq00IKkRVp2gfb159C9BZQmoiyPCPOlWuLN/B
8+
ZPMFHZUWPbL+4mvy4BBrcS/+FncUf7dA5ND7lb26G/sXUGWpYPLclhNnu7Hvapi4
9+
pIx60d8Z3+5eOVHEVECqgIU8wUqTrUbg1YMUHSZxdnsIPnL985sa7a66x/GAgMAi
10+
xuAhUBMyxTUXOXqW+GWIlrmOHmiYRp7ARA3dPbYJJ1kdDfJRswIDAQABo1MwUTAd
11+
BgNVHQ4EFgQUT02NxjNzgnrG7Bzn/cwyLk+rmyUwHwYDVR0jBBgwFoAUT02NxjNz
12+
gnrG7Bzn/cwyLk+rmyUwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOC
13+
AQEAfpqusEPmGoL/Hzkui/xs20k+JKFQ90e5iZPQLyuES7BKQp1iajMOytAIXlhY
14+
dtt4oSOYmBfl2bs8OU0U2mjGetx0AHWINY7bNzg7wxd4H46iiCitC4qlUlGG23bF
15+
GVQt7/SddmwKoOJBaasnRTBPqVTlreqAF4Ni8bY0kqO3GK5QWZ2sL+Btn9dML8aK
16+
wLb6sW0h7rAjik0l3NcsrKE8UoViWjAgB3Oe9L00GSXaMnfD6V65XnzkXvLOpCdd
17+
wjZHPoWinhqM8ZHm/iFSe2UcL1KG0rdrMg8oBY6zMNrgENEdhqEXNJJrioT9bzKE
18+
FyNQDOxpeql/GJl2MGxj0FXy+Q==
19+
-----END CERTIFICATE-----

tests/data/generate-crts/ca.key

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDjljyH6YpfT//Q
3+
foH4pRyaHKKzZ2V8jwyVA2jWpGmxBAqSpj6fonybMU875c4L+QuJrpJKGCkZkXv3
4+
GEL34ir7YBG6Uhs8fc+JR1+DCcsP/B8WAKY9oUV8n3e/0Bj55Z6rTQgqRFWnaB9v
5+
Xn0L0FlCaiLI8I86Va4s38Fk8wUdlRY9sv7ia/LgEGtxL/4WdxR/t0Dk0PuVvbob
6+
+xdQZalg8tyWE2e7se9qmLikjHrR3xnf7l45UcRUQKqAhTzBSpOtRuDVgxQdJnF2
7+
ewg+cv3zmxrtrrrH8YCAwCLG4CFQEzLFNRc5epb4ZYiWuY4eaJhGnsBEDd09tgkn
8+
WR0N8lGzAgMBAAECggEAB/+oZ6EeSzSalGSog2lPf13GR3E42znZLVuN/GKRkbZx
9+
+1l7Fffgp+usZznaa11ODywNhCvOi1GA/obhw6iKmNnK2wuLstfmdWKxc/+MyCZf
10+
nqcDMLim9+GllHOR4nve1GfEA7LxzQ0XHb4/vYHjFox4ZdYz5870bNX9triRKMrw
11+
Ru6FMbdcMf8ClTHtqHIQgARRTOFvizqVFElFgrIo4eh8svseed3+xwX98oeC+O0u
12+
WrLW42RpVWIoai+V6OdYzO+uALr8z0IC3yzw1pqLMVt+SLY0nS/qz8b3eruU4BmL
13+
6i0BQvJF8QFCE+gmtZJSQyCXzOw5jcvlDAm10v/1QQKBgQD+eg13guElgrjvkjT6
14+
a1ry3hA5LfQ7QyqigydyZlkbPfBcnv0dsWXbL+toyu0RqMwcKBGG3/7bVpGx/0gb
15+
EgtnDWgS/PyWpuW+scwhqryzCKLnbUCor3GIo7CkM+71m5BcOHNTUPoqrMt6/W6a
16+
mQ4z+VNpVQlRrx3YXp2zbO/dgwKBgQDk8vqmioezNNNhnk/7LhFITN7TavsVT3LT
17+
jgs9CTSwEKFLC8eo/sKPaTKTcPxhxrt9eOWhYbNNQ9WYzy/ulA/vKvfkZjvtUaHl
18+
sC35E9FcMW6lSiM8LOQlPnJYq6VqIQOdTgtBp1lsmQvkRbAF7Wq2Fy8BjiwPJfV1
19+
CJejygI0EQKBgCZs96ucL7MiUhqa0TUfENSrg3ee4MoyEjYH5+T2X24lpC3YNBBP
20+
wTmfusRQIAwSmP+HbV4YZLtqDwX5rkGoL+CXvadgXCPDf92Tq2dKCMRgAXlAngra
21+
syIW1Y116hdcLig+vetOxve6r98adaESi3p9o4K8PHQBJViOsPFu+alRAoGAUtb8
22+
DIB5Y0VM6rheljLv++ocggDmgqpxkMyHknkfQEl0IvRLNQGhIkTdEO5D05kVw+uX
23+
otH4D4/o3FazMC8QqOgyM8kuC8uKudIKgGJEUYhtUY9GuoI/tp4mv6CzxHfXl/Zi
24+
KkpEGAA0hk8UxsBF6UbwMi7gEEcazlLik1gHfhECgYEA0HyiW3LaWfACD2y7gpYu
25+
GDvF+Oo28tK2QBkPBa1FNtZ4BKBquGqe8V6iNuQ5HsZFwycFum/VU0FWoDOyLS5M
26+
vclQT0fojPxlLTjS0B2PRBEv52cNNFwMrj/I/DerqdDh3saUIe1MeJoVIMDTE/Jl
27+
H5v0FaUgorY35MZdyQ54uw0=
28+
-----END PRIVATE KEY-----

tests/data/generate-crts/ca.srl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
51042C938C1D19FADAC29CA05FAE1A16D47AFF53
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
#!/bin/bash
2+
3+
CA_KEY="ca.key"
4+
CA_CERT="ca.crt"
5+
6+
# Output paths for the database and storage certificates and keys
7+
DATABASE_KEY="../database.key"
8+
DATABASE_CSR="database.csr"
9+
DATABASE_CERT="../database.crt"
10+
11+
STORAGE_KEY="../storage.key"
12+
STORAGE_CSR="storage.csr"
13+
STORAGE_CERT="../storage.crt"
14+
15+
generate_certificate() {
16+
local KEY_PATH=$1
17+
local CSR_PATH=$2
18+
local CERT_PATH=$3
19+
local CONFIG_FILE=$4
20+
21+
openssl req -new -newkey rsa:2048 -nodes -keyout "$KEY_PATH" -out "$CSR_PATH" -config "$CONFIG_FILE"
22+
openssl x509 -req -in "$CSR_PATH" -CA "$CA_CERT" -CAkey "$CA_KEY" -CAcreateserial -out "$CERT_PATH" -days 5475 -sha256 -extensions req_ext -extfile "$CONFIG_FILE"
23+
}
24+
25+
# Paths to .cnf files, where we will write certificate settings
26+
DATABASE_CONFIG="database-csr.cnf"
27+
STORAGE_CONFIG="storage-csr.cnf"
28+
29+
cat > $DATABASE_CONFIG <<EOF
30+
[req]
31+
distinguished_name = req_distinguished_name
32+
req_extensions = req_ext
33+
prompt = no
34+
35+
[req_distinguished_name]
36+
O = test
37+
38+
[req_ext]
39+
subjectAltName = @alt_names
40+
extendedKeyUsage = serverAuth, clientAuth
41+
basicConstraints = critical,CA:FALSE
42+
43+
[alt_names]
44+
DNS.1 = database-grpc.ydb.svc.cluster.local
45+
DNS.2 = *.database-interconnect.ydb.svc.cluster.local
46+
EOF
47+
48+
cat > $STORAGE_CONFIG <<EOF
49+
[req]
50+
distinguished_name = req_distinguished_name
51+
req_extensions = req_ext
52+
prompt = no
53+
54+
[req_distinguished_name]
55+
O = test
56+
57+
[req_ext]
58+
subjectAltName = @alt_names
59+
extendedKeyUsage = serverAuth, clientAuth
60+
basicConstraints = critical,CA:FALSE
61+
62+
[alt_names]
63+
DNS.1 = storage-grpc.ydb.svc.cluster.local
64+
DNS.2 = *.storage-interconnect.ydb.svc.cluster.local
65+
EOF
66+
67+
generate_certificate "$DATABASE_KEY" "$DATABASE_CSR" "$DATABASE_CERT" "$DATABASE_CONFIG"
68+
69+
generate_certificate "$STORAGE_KEY" "$STORAGE_CSR" "$STORAGE_CERT" "$STORAGE_CONFIG"
70+
71+
# Clean up
72+
rm $DATABASE_CSR $STORAGE_CSR $DATABASE_CONFIG $STORAGE_CONFIG
73+
74+
echo "Certificates generated:"
75+
echo " - $DATABASE_CERT"
76+
echo " - $STORAGE_CERT"

tests/data/storage.crt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDgjCCAmqgAwIBAgIUUQQsk4wdGfrawpygX64aFtR6/1MwDQYJKoZIhvcNAQEL
3+
BQAwFzEVMBMGA1UEAwwMdGVzdC1yb290LWNhMB4XDTI0MTIwNTEzMjEwMVoXDTM5
4+
MTIwMjEzMjEwMVowDzENMAsGA1UECgwEdGVzdDCCASIwDQYJKoZIhvcNAQEBBQAD
5+
ggEPADCCAQoCggEBANJhedaAQKt/qhXwSeu0KWLMF5KuVCxQ/OKpnpINgPmxNiiQ
6+
5z+AktEvKSabv9cyMeTvO4QC5VBfwy+6+EjlDng4w7qY+OHy999kNffrJhbUP9Lh
7+
iIBCbAiOmkkc3j49Mr4lkXntQDNTwdHQQTXbpykUp1YDPyxanSL4rW8xv3Vtgf4a
8+
748ibi41ewrEstFfgojennagnHthXoTeFOKrRUMw6c8mqT0rl/AXyMmyqyPrJbBL
9+
AxVQmn8BlYPcfWhzlrzunRO7TAFerssT6OvV/L+5/V9thI4Yi49Bs6U5EXVdpd/S
10+
gg/KA7jLb/NLIIk8LFaVREsj6rLRMrT0MUWK1uMCAwEAAaOBzTCByjBbBgNVHREE
11+
VDBSgiJzdG9yYWdlLWdycGMueWRiLnN2Yy5jbHVzdGVyLmxvY2FsgiwqLnN0b3Jh
12+
Z2UtaW50ZXJjb25uZWN0LnlkYi5zdmMuY2x1c3Rlci5sb2NhbDAdBgNVHSUEFjAU
13+
BggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU6zPe
14+
MlFNpA40xMHmmdBw6UtfRTYwHwYDVR0jBBgwFoAUT02NxjNzgnrG7Bzn/cwyLk+r
15+
myUwDQYJKoZIhvcNAQELBQADggEBAKo8mUyEKBdqlmRHwjvOqGSIk9AuQAbCPZrK
16+
9H59H+pAkDu6jPunK91XRxB+Wa6JNi3NVsGr3kPIgZSw/5Dczzi4IEIhmHAvKhyU
17+
5oQwKuyBsUB5l0/H2mvvArICEuS+zPwHKqTQpXeDNZpqEwuH0cEz5IjYr4TxOk2f
18+
aOBqy8H0ccSwk27PTSayMx5ECFEVgniYv6ExSm3YU0outxBfCfOWYPdhQ0R7DyFh
19+
wDsA1Ghas5Z9Cyr9hhY3PXzp4y4IdIOE/FHvMn0K3UnQDCXqMGhREjTv2JDNakFL
20+
jSAhXI3Px0o43T6SH4YUfTb4c7Q0A25fjwd/87iPrUqWDRFBqqM=
21+
-----END CERTIFICATE-----

tests/data/storage.key

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDSYXnWgECrf6oV
3+
8EnrtClizBeSrlQsUPziqZ6SDYD5sTYokOc/gJLRLykmm7/XMjHk7zuEAuVQX8Mv
4+
uvhI5Q54OMO6mPjh8vffZDX36yYW1D/S4YiAQmwIjppJHN4+PTK+JZF57UAzU8HR
5+
0EE126cpFKdWAz8sWp0i+K1vMb91bYH+Gu+PIm4uNXsKxLLRX4KI3p52oJx7YV6E
6+
3hTiq0VDMOnPJqk9K5fwF8jJsqsj6yWwSwMVUJp/AZWD3H1oc5a87p0Tu0wBXq7L
7+
E+jr1fy/uf1fbYSOGIuPQbOlORF1XaXf0oIPygO4y2/zSyCJPCxWlURLI+qy0TK0
8+
9DFFitbjAgMBAAECggEAFBcn7fKIengyE29Dd+VYEG3CEIliU2sWg0TEdlkgyHeC
9+
XwRbeQZ7vss8qEm2W8QY3K515gjqwi6q8ptty3RIWfW9x0uFdPphbm1g9AB6PjLd
10+
t3M/OFRfgb+wfyvpE1N/zYXD6ztbZqtodnNnTs/fmj41LrMXrNIocGcEFPrQuFNl
11+
ABs1FhqFLYIgyhZ9MhMaOBW9gVltY1gyvv5HV/fMdr1fDxjjYS3EEi5p2ud1yBff
12+
hYnXq0kEmCj+xMIckBwh7nwo6MN6sGkTFu4uE2Qp3Q8xGprBdXcWux2T0cZDj9J+
13+
I0QhZa/v5NUuxdirPpJIdwA5s3f1XrVs0jFlauq0UQKBgQDuPZbM1jdPKA7UtXst
14+
kls+72qF8AR2ri+WIDT6J2fLmvdYbvrZJuSNpw8WHo181gzPCcBKyr+wFTfwn60q
15+
45nPp/et8sFQS/xbpM7MGwjH/Pfom73NCCkH1X4cYjRYidFs1aWHaeH6VxrbOIwS
16+
f65DfL/c+yXPtb/c2BnPb75QkQKBgQDiEDrzKIWLS/ZUWho+cCasTpRoFMad/Ofn
17+
4bmDhLY2+z89yfO2pEqhKciepz8WEO9kEiA8wT4RnN+iFDtgQPY+0xrU/npsxdEd
18+
Qf36x8B+r7HGJ49mXCEfn9FrUOwqfNFAJYJhd/pBl/d8AGipPTcmYUKcJynb9/FO
19+
Whfl11kqMwKBgQDXhUHhhjy80BkylgabwFXpRj8QcYQoNQV5gyNJ1dIRH9x41NT7
20+
EzMZbjK4qOUINL+boE+jmWz1hwx3EoxeS02+zE3Ev+HfmQ3vfdVSUXaNLKy8cf+u
21+
9p3fp2QRm0mNewfItDGtoby7cocqICqfJYBpLvaGm3CmSd4KlDgtLwJ08QKBgBFY
22+
130zPdQrlxJv+5WQ+5a7TO4Tsg4LiywjCR5Lf8QGUZsHNTltsABf+XIbOV8TG5ud
23+
PHYNChtF429HiCrhsUOu5V80y+Yu49YP61JkI6RVDRo8jOd46F3J4MMQaZ71BwWa
24+
G0Apeb2w0J/mVCGwfdvnGLps0ux7QTwW88CCXug7AoGBAKqF5+t3xad59wy3TD2F
25+
BBPYPiqWYmBuymas9CFftp8eIgvWBcOr+7pPV25BI1cTRynH2L0u2QmHF27eXYhx
26+
wX9hBSXKNX1hi0aOGtuIXPyTVbybEV6u4e/mCNuZyzuJM8wgv+fEBJK1A6Q+mhL+
27+
snkb1pcbgY4L+oWOliGoiiXJ
28+
-----END PRIVATE KEY-----

0 commit comments

Comments
 (0)