Skip to content

Commit 20f1406

Browse files
Sarthak160Yash
authored andcommitted
feat: implement mTLS client and server with certificate generation
- Added scripts to generate self-signed certificates for mTLS. - Implemented mTLS server with endpoints for hello and payload. - Implemented mTLS client to communicate with the server. - Configured Docker Compose for running the client and server with certificate generation. - Added necessary certificate files and configurations for secure communication.
1 parent 8f74954 commit 20f1406

15 files changed

Lines changed: 1012 additions & 0 deletions

File tree

mtls-app/Dockerfile

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
FROM golang:1.22-alpine AS builder
2+
3+
WORKDIR /src
4+
5+
COPY go.mod ./
6+
COPY cmd ./cmd
7+
8+
RUN go build -o /out/mtls-server ./cmd/server && \
9+
go build -o /out/mtls-client ./cmd/client
10+
11+
FROM alpine:3.20
12+
13+
RUN apk add --no-cache ca-certificates
14+
15+
WORKDIR /app
16+
17+
COPY --from=builder /out/mtls-server /usr/local/bin/mtls-server
18+
COPY --from=builder /out/mtls-client /usr/local/bin/mtls-client
19+
20+
ENV APP_BIN=mtls-server
21+
22+
ENTRYPOINT ["/bin/sh", "-c", "exec /usr/local/bin/${APP_BIN}"]

mtls-app/Dockerfile.certs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
FROM alpine:3.20
2+
3+
RUN apk add --no-cache openssl
4+
5+
WORKDIR /work
6+
7+
COPY certs/generate-certs.sh /usr/local/bin/generate-certs.sh
8+
9+
RUN chmod +x /usr/local/bin/generate-certs.sh
10+
11+
ENTRYPOINT ["/usr/local/bin/generate-certs.sh"]

mtls-app/README.md

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
# mTLS Go Sample
2+
3+
This sample demonstrates mutual TLS between a Go HTTPS server and a Go client. The server only accepts requests from clients that present a certificate signed by the shared demo CA, and the client verifies the server certificate before sending the request.
4+
5+
## Run with Docker Compose
6+
7+
```bash
8+
docker compose up --build
9+
```
10+
11+
What happens:
12+
13+
1. `cert-generator` creates a demo CA plus server and client certificates in a shared Docker volume.
14+
2. `mtls-server` starts on `https://localhost:8443` and requires a valid client certificate.
15+
3. `mtls-client` starts an API on `http://localhost:8080`.
16+
4. Hitting `GET /hello` on the client API makes an mTLS request to `mtls-server` and returns the upstream response.
17+
18+
Try it:
19+
20+
```bash
21+
curl http://localhost:8080/hello
22+
```
23+
24+
## Run locally without Compose
25+
26+
Generate demo certificates:
27+
28+
```bash
29+
docker build -t mtls-certs -f Dockerfile.certs .
30+
docker run --rm \
31+
-e HOST_UID="$(id -u)" \
32+
-e HOST_GID="$(id -g)" \
33+
-v "$(pwd)/certs-local:/certs" \
34+
mtls-certs
35+
```
36+
37+
Start the server:
38+
39+
```bash
40+
SERVER_CERT_FILE="$(pwd)/certs-local/server.crt" \
41+
SERVER_KEY_FILE="$(pwd)/certs-local/server.key" \
42+
CA_CERT_FILE="$(pwd)/certs-local/ca.crt" \
43+
go run ./cmd/server
44+
```
45+
46+
In another terminal, run the client in API mode:
47+
48+
```bash
49+
CLIENT_CERT_FILE="$(pwd)/certs-local/client.crt" \
50+
CLIENT_KEY_FILE="$(pwd)/certs-local/client.key" \
51+
CA_CERT_FILE="$(pwd)/certs-local/ca.crt" \
52+
CLIENT_API_ADDR=":8080" \
53+
SERVER_URL="https://localhost:8443/hello" \
54+
go run ./cmd/client
55+
```
56+
57+
Call the client API:
58+
59+
```bash
60+
curl http://localhost:8080/hello
61+
```
62+
63+
Optional: one-shot client mode (no API server) is still available by omitting `CLIENT_API_ADDR`.
64+
65+
## Big Payload Mode (50KB to 3MB)
66+
67+
Run the client in big payload mode:
68+
69+
```bash
70+
CLIENT_CERT_FILE="$(pwd)/certs-local/client.crt" \
71+
CLIENT_KEY_FILE="$(pwd)/certs-local/client.key" \
72+
CA_CERT_FILE="$(pwd)/certs-local/ca.crt" \
73+
CLIENT_API_ADDR=":8080" \
74+
CLIENT_MODE="bigpayload" \
75+
BIGPAYLOAD_SERVER_URL="https://localhost:8443/payload" \
76+
go run ./cmd/client
77+
```
78+
79+
The client exposes:
80+
81+
- `POST /bigpayload` for large payload testing
82+
- request and response sizes must be between `51200` bytes (50KB) and `3145728` bytes (3MB)
83+
- response size defaults to request size, but can be overridden with header `X-Response-Size-Bytes` or query `response_size_bytes`
84+
85+
Examples:
86+
87+
```bash
88+
# 50KB request, 50KB response
89+
head -c 51200 /dev/zero | curl -sS \
90+
-X POST http://localhost:8080/bigpayload \
91+
-H "Content-Type: application/octet-stream" \
92+
--data-binary @- \
93+
-o /tmp/resp-50kb.bin
94+
wc -c /tmp/resp-50kb.bin
95+
```
96+
97+
```bash
98+
# 1MB request, 2MB response
99+
head -c 1048576 /dev/zero | curl -sS \
100+
-X POST "http://localhost:8080/bigpayload?response_size_bytes=2097152" \
101+
-H "Content-Type: application/octet-stream" \
102+
--data-binary @- \
103+
-o /tmp/resp-2mb.bin
104+
wc -c /tmp/resp-2mb.bin
105+
```
106+
107+
```bash
108+
# 3MB request, 3MB response
109+
head -c 3145728 /dev/zero | curl -sS \
110+
-X POST http://localhost:8080/bigpayload \
111+
-H "Content-Type: application/octet-stream" \
112+
--data-binary @- \
113+
-o /tmp/resp-3mb.bin
114+
wc -c /tmp/resp-3mb.bin
115+
```
116+
117+
The client logs upstream payload sizes after every request, and the server logs the handled request/response sizes too.

mtls-app/certs-local/ca.crt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDDzCCAfegAwIBAgIUc39uWKH5kmEpI+Cx7lktYRB2LP0wDQYJKoZIhvcNAQEL
3+
BQAwFzEVMBMGA1UEAwwMbXRscy1kZW1vLWNhMB4XDTI2MDMxODEwNDgxM1oXDTM2
4+
MDMxNTEwNDgxM1owFzEVMBMGA1UEAwwMbXRscy1kZW1vLWNhMIIBIjANBgkqhkiG
5+
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlbIK4npEc4acCjLfZvMe3rNddEeSxOFF9YFT
6+
D5ZxD2VJK2jSnPGlaHQc4pZwPzkW4wYON0CIDHw8nRKzlZ8OgrH30QJkChK8BVz2
7+
6Zy1ZfkSRmBNdpCW4mi5rGfZPkTSxEQEugghJwwrlIMouJNZFuaQmg9QX30aJVpl
8+
msXjCZOIJmAat4M1xM7hn2v3ZN/Cfz65nQdtXep3ml/IUFASZwt6z4tV/hWYJCv2
9+
WBqCfUhNeDOaOLe49QaARQtuJks6IzCBnU6FMd6JQiLQ57Eksp4T+fkpFC0OMl2/
10+
SRV92lRmO6Mr23mLdVUv14yIfgbhYDeXQJxkXLH7bYAbDgj5twIDAQABo1MwUTAd
11+
BgNVHQ4EFgQUrnCiQeBzuCmF8FKUH0+UGOQwqtwwHwYDVR0jBBgwFoAUrnCiQeBz
12+
uCmF8FKUH0+UGOQwqtwwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOC
13+
AQEARb9GI1us9AsTJgebct6mg6/vfdae4ucpM038Wex9sHfppgrA6+DK3y9mn53a
14+
rfreGbTXG4Daz55iapS8uoyaKTHFHUK5hUVqtqvnk4BB2H1Kmr5/yYc/Emzw07UI
15+
uaGWz++4iY/hKQS7ha1+AJq1wEaUk0ZB7I5JM/gpgSYjjnkW4uce24EJO29CMnP1
16+
v49NfFRw/CJzJW1RLfASOrWugYXfXprbAxESFNXfeR1JA/BfuOVvTzBfcrcgjeRe
17+
5QhpNCv46BzPV+ANKk5ImOPJZsOjn7wj8xGi4/0SCn0hS5QM0K6a1IkmlWwYoWuX
18+
cIFhaiW8nD3+QPfXcpF6D1c2Iw==
19+
-----END CERTIFICATE-----

mtls-app/certs-local/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+
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCVsgriekRzhpwK
3+
Mt9m8x7es110R5LE4UX1gVMPlnEPZUkraNKc8aVodBzilnA/ORbjBg43QIgMfDyd
4+
ErOVnw6CsffRAmQKErwFXPbpnLVl+RJGYE12kJbiaLmsZ9k+RNLERAS6CCEnDCuU
5+
gyi4k1kW5pCaD1BffRolWmWaxeMJk4gmYBq3gzXEzuGfa/dk38J/PrmdB21d6nea
6+
X8hQUBJnC3rPi1X+FZgkK/ZYGoJ9SE14M5o4t7j1BoBFC24mSzojMIGdToUx3olC
7+
ItDnsSSynhP5+SkULQ4yXb9JFX3aVGY7oyvbeYt1VS/XjIh+BuFgN5dAnGRcsftt
8+
gBsOCPm3AgMBAAECggEACF/yGPKTMs1knHN1KSrP3tC1GUTJ0sbxpYcLMROPFrfp
9+
bIrMQaiJQvtABHM7K2ZTv/a+Q9wR4HTw5S6/Kk9APhKb1S8njqK2rywgyjgQs/hH
10+
y/UmUExNjLQkMx+KOWAbVIyjoQ7EYA1fwMrHs+/Wa6ARlfTmX7k9hbp1db+9cHMh
11+
Hb+lruu3HoAvX3A3Xr84y77Oacgze2mwnsthFUlvbuPE54QcPkUV9Txe2yaPH7bQ
12+
FrM5o36O7ZCGu+5SwC5JHBxSho+kRIpv2dspmOeGx8CcxSf+Own6066M8KnrDCAS
13+
1YDw4q/ukGRoRzOg5eJRUCtEy7wk4aW3PmbidmQ+sQKBgQDMUooPGRnQJW5ySN1Y
14+
/wLVHfo0zh/MD5qWXPcyLFyuF6h5A8jKp5fO2cndLZneEvwRg/T9LOvw3oKHtkiH
15+
kahLY55jMMjRZFzFOkeW9qSu41GFcz+nv01750BowV/ef8ZUdSjEOLf4h2aLAaSm
16+
XLf0MrifaQ6QVmOXaNMvCCv4UQKBgQC7joUgj3ody9Tn4EYElYJ4gFS9vcpkNEqk
17+
E9R4Ehwv4vCnbVxF1szO44NufHqMcoqHU0jRkkIZa9ckaJCmzGvSwdg+sIQ/gKd6
18+
EcUhkbvfmsQW3l3xQMAFhbQJ9L7S+8yHCO3K18xYAzHetbmD1eLdOXbw7e+a2wKb
19+
cr1oxj3XhwKBgQCZ3CHYgrdcdYN5DgOYy9ePMpbCguGQ4cMwLWt8Xcmg03HrRv1C
20+
FfgMLRaEtp0ijLtCWVL3/4bgiD5VAeAWLopD0w1ndkoS2/e8EUntlWenxsgRrRqn
21+
MDih8B8hg1S1ERUBboQ3Vtq6jQOb863QFQv1GOjMKelsqZEvaCF3TjkGMQKBgQCk
22+
j9Hi1cCRsCxoHvGQSBYn4IF50bJo5TCwce20RD+TDI2WeW/Cn0soI5tIL9Peswk0
23+
3zA/IRL59xLXkR+KGkZor0grCPmgNiO8CSdr4tByyvpODmFisitJLRzgt2tO9ztn
24+
J8Bsf5d9iaASBmR1dg8Nh8QCdOIMfyj0d2IVMgtEtQKBgQCVyEthJe3TFOqx+Odt
25+
vrZkSucRTNiFY1DfuQsPlTHx7xhrvyNQqjfY8Bf3iMXyg1Ja0t/XeF1x7J3GHEAC
26+
mP4e2otQDTos/xyEVIOeL6AMfb+zYahE93ileO1+L25aY8XtndpwxRH6i8saPQ2/
27+
5wASOQS0jdFswkQ1MRkkdJq05A==
28+
-----END PRIVATE KEY-----

mtls-app/certs-local/client.crt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDEjCCAfqgAwIBAgIUKYCVBJIMLyrpaoxa+swIZSW2LNYwDQYJKoZIhvcNAQEL
3+
BQAwFzEVMBMGA1UEAwwMbXRscy1kZW1vLWNhMB4XDTI2MDMxODEwNDgxNFoXDTM2
4+
MDMxNTEwNDgxNFowFjEUMBIGA1UEAwwLbXRscy1jbGllbnQwggEiMA0GCSqGSIb3
5+
DQEBAQUAA4IBDwAwggEKAoIBAQCnPd1wuhc8S92VzqqyJnRs4kWyiblsqdcroUKx
6+
rJd/+4WFA0nB65OwySf7+LAU1zHEI7NH05WWxENb278huay5m4KkeA/kSADKtN3m
7+
gk1wGRQ+ATMw5xqz3R94kXuP6pXGOj/RrtvtmwQutssOvvl/ZtnMYJ3mHafvGecS
8+
vt44ASfSepT9drqZ8jkhKDqoKtk4qC32WtK6ijvgTLaKyPxHNGEet4H0/j4cGI5X
9+
ri28Ngqg3nSL2F3vZGVOnHrJQAcjkVAWHKnyu5iMqtNN8Pm51mX1wleFP7gwaoXk
10+
my4xMk7bW3ppxM27LBRqvhlR6+WOEb/cvHY5afT09acqtL8zAgMBAAGjVzBVMBMG
11+
A1UdJQQMMAoGCCsGAQUFBwMCMB0GA1UdDgQWBBSDzYTdSVbnT3PXieRdXSOaLEM3
12+
UjAfBgNVHSMEGDAWgBSucKJB4HO4KYXwUpQfT5QY5DCq3DANBgkqhkiG9w0BAQsF
13+
AAOCAQEAgbQFAtnBeCE4JMktbXp0yE4W1A3NK9XCP74/LNnzya9Ft9gkQhsd2O1P
14+
q26OCAsgsxLf8HQRUDOP6v8Pnd45tAuGa/cet60zbsBwRXy9iLGziysSBG4yT35/
15+
4aa92zyuLGlxRFe3u8TM0QPDMWkn7RzltBMKFYZSXkn0/MiT9oO5BRnyMOyanq3w
16+
wRE+8YaNRKQ+zM2M0bMW0N9leo3mnVaJ1FeFvwHiSxtsZHJlUSAULPGDm/zcWJYa
17+
VZRZ/GOSiY3puSAYvS3xNkwYS+2fIAXX7DxqvxKZmCd8+7pVPeO/yE2kzhWeWJ0Z
18+
t+AgI3x3nFeaTtenUGmyD24f+ZQ+Yg==
19+
-----END CERTIFICATE-----

mtls-app/certs-local/client.key

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCnPd1wuhc8S92V
3+
zqqyJnRs4kWyiblsqdcroUKxrJd/+4WFA0nB65OwySf7+LAU1zHEI7NH05WWxENb
4+
278huay5m4KkeA/kSADKtN3mgk1wGRQ+ATMw5xqz3R94kXuP6pXGOj/RrtvtmwQu
5+
tssOvvl/ZtnMYJ3mHafvGecSvt44ASfSepT9drqZ8jkhKDqoKtk4qC32WtK6ijvg
6+
TLaKyPxHNGEet4H0/j4cGI5Xri28Ngqg3nSL2F3vZGVOnHrJQAcjkVAWHKnyu5iM
7+
qtNN8Pm51mX1wleFP7gwaoXkmy4xMk7bW3ppxM27LBRqvhlR6+WOEb/cvHY5afT0
8+
9acqtL8zAgMBAAECggEATa9ojeT7RxhsiRpzYwaG3U8sFfdwqP+pwgwJ6XNk+l+x
9+
EWzKFaiitaNzDdHipQOjC9uTe0FXAq4PJfvI6FcR2zPX9yMIKr+hkod6bglIBFK5
10+
+uVezJAFcNg9tqlJjrvmr6o+G94QLepsgnCJmUNvrNTvRcb5gbtz1xaepjAAFF4A
11+
uUr/8ZTRaf1IIXux3Jf4uyTQAPhr3fEvj4HD3G1DTOIL6QKPsx+G5EUn0WCE7YP+
12+
t5CvmeucIr3zzoErKmUdSkq6lAe9lQcUtV1eGHy0aWTsOvf1NGhXxNCFlyTNjUpQ
13+
IlVZBZikw5+6skQIROEHrwl7Cnf0/E8X+LdwlrlsgQKBgQDVbmgPbS8Fir9LCGDX
14+
yDuHTXT1y1Aes5zqgNhDoNY5NRHerCV2shMgFw1ZDrsh+bYeTypHTMT3l5yHehjy
15+
wMS8NHnYTjU7PvotLL7H7VbcxSZL90+EXUQ9/4pWMAgZs1NRsKmT+pdaSaqvHgQ/
16+
WrgrY/J34/kTxDuFJfUIwMc+gQKBgQDImQ/IUwZLq+Z7/jchWNqAA2oOIK+3TKb6
17+
cK23oPm/irrHRvOi5XJ7SOKoZCEuVICnHDI/XQLXZhJTg68Qm6RWQO9bTPUa4Vhd
18+
Q6yxfu13hv1x6xJqPR1PhVUBQEMiq0HVGolfbGr7okZ02k2Pd+qbm9oyt7i2rcZ5
19+
ds1g3nSLswKBgAzXSq167TRRJ7c09taktmgqkdnj9JsURWGahOh0uc7RUZTrGInu
20+
ptXsbSIpj7q4kmt6adnGVadr2MAR6YRZcry8D4SjF/LLlDO5mHTg47P+rJIve/pD
21+
vkJYqJMM6r/ZGS82CM3datPE0N8eWDUTmTcLGWB7N9YnnUkign6XUqWBAoGBAMgk
22+
TybkD2f4vyH/ZioTaQ5IWcx2uFr+U6uUOP750bVWST0CgZuJqktvURYJsUF0dlhF
23+
Pa0Ss/8NjENfI5BCehjE+QvzIKoNJAkJuIfvyCZ1vPGoRNtS1qe8tC9nWpSAolJp
24+
A579oVAnfHyiQrheQOm4+l+YBufdQiV2bzuzOD0ZAoGASyTqy96n1k/MA705yZbG
25+
1b7GhCU4ifR9W6FYFa2vcIfzVXtARCin6EeKngOuWl1vLOy9OoQYbupaR0jc7l46
26+
5kM788vWVyj2rccNDKfFuqlrRk3BWjBvXeY6f7F6mCelQFXd6Q9mCFovr23eAqdu
27+
o0ezp5dWuCbfkINBjafZVHY=
28+
-----END PRIVATE KEY-----

mtls-app/certs-local/client.pem

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCnPd1wuhc8S92V
3+
zqqyJnRs4kWyiblsqdcroUKxrJd/+4WFA0nB65OwySf7+LAU1zHEI7NH05WWxENb
4+
278huay5m4KkeA/kSADKtN3mgk1wGRQ+ATMw5xqz3R94kXuP6pXGOj/RrtvtmwQu
5+
tssOvvl/ZtnMYJ3mHafvGecSvt44ASfSepT9drqZ8jkhKDqoKtk4qC32WtK6ijvg
6+
TLaKyPxHNGEet4H0/j4cGI5Xri28Ngqg3nSL2F3vZGVOnHrJQAcjkVAWHKnyu5iM
7+
qtNN8Pm51mX1wleFP7gwaoXkmy4xMk7bW3ppxM27LBRqvhlR6+WOEb/cvHY5afT0
8+
9acqtL8zAgMBAAECggEATa9ojeT7RxhsiRpzYwaG3U8sFfdwqP+pwgwJ6XNk+l+x
9+
EWzKFaiitaNzDdHipQOjC9uTe0FXAq4PJfvI6FcR2zPX9yMIKr+hkod6bglIBFK5
10+
+uVezJAFcNg9tqlJjrvmr6o+G94QLepsgnCJmUNvrNTvRcb5gbtz1xaepjAAFF4A
11+
uUr/8ZTRaf1IIXux3Jf4uyTQAPhr3fEvj4HD3G1DTOIL6QKPsx+G5EUn0WCE7YP+
12+
t5CvmeucIr3zzoErKmUdSkq6lAe9lQcUtV1eGHy0aWTsOvf1NGhXxNCFlyTNjUpQ
13+
IlVZBZikw5+6skQIROEHrwl7Cnf0/E8X+LdwlrlsgQKBgQDVbmgPbS8Fir9LCGDX
14+
yDuHTXT1y1Aes5zqgNhDoNY5NRHerCV2shMgFw1ZDrsh+bYeTypHTMT3l5yHehjy
15+
wMS8NHnYTjU7PvotLL7H7VbcxSZL90+EXUQ9/4pWMAgZs1NRsKmT+pdaSaqvHgQ/
16+
WrgrY/J34/kTxDuFJfUIwMc+gQKBgQDImQ/IUwZLq+Z7/jchWNqAA2oOIK+3TKb6
17+
cK23oPm/irrHRvOi5XJ7SOKoZCEuVICnHDI/XQLXZhJTg68Qm6RWQO9bTPUa4Vhd
18+
Q6yxfu13hv1x6xJqPR1PhVUBQEMiq0HVGolfbGr7okZ02k2Pd+qbm9oyt7i2rcZ5
19+
ds1g3nSLswKBgAzXSq167TRRJ7c09taktmgqkdnj9JsURWGahOh0uc7RUZTrGInu
20+
ptXsbSIpj7q4kmt6adnGVadr2MAR6YRZcry8D4SjF/LLlDO5mHTg47P+rJIve/pD
21+
vkJYqJMM6r/ZGS82CM3datPE0N8eWDUTmTcLGWB7N9YnnUkign6XUqWBAoGBAMgk
22+
TybkD2f4vyH/ZioTaQ5IWcx2uFr+U6uUOP750bVWST0CgZuJqktvURYJsUF0dlhF
23+
Pa0Ss/8NjENfI5BCehjE+QvzIKoNJAkJuIfvyCZ1vPGoRNtS1qe8tC9nWpSAolJp
24+
A579oVAnfHyiQrheQOm4+l+YBufdQiV2bzuzOD0ZAoGASyTqy96n1k/MA705yZbG
25+
1b7GhCU4ifR9W6FYFa2vcIfzVXtARCin6EeKngOuWl1vLOy9OoQYbupaR0jc7l46
26+
5kM788vWVyj2rccNDKfFuqlrRk3BWjBvXeY6f7F6mCelQFXd6Q9mCFovr23eAqdu
27+
o0ezp5dWuCbfkINBjafZVHY=
28+
-----END PRIVATE KEY-----
29+
-----BEGIN CERTIFICATE-----
30+
MIIDEjCCAfqgAwIBAgIUKYCVBJIMLyrpaoxa+swIZSW2LNYwDQYJKoZIhvcNAQEL
31+
BQAwFzEVMBMGA1UEAwwMbXRscy1kZW1vLWNhMB4XDTI2MDMxODEwNDgxNFoXDTM2
32+
MDMxNTEwNDgxNFowFjEUMBIGA1UEAwwLbXRscy1jbGllbnQwggEiMA0GCSqGSIb3
33+
DQEBAQUAA4IBDwAwggEKAoIBAQCnPd1wuhc8S92VzqqyJnRs4kWyiblsqdcroUKx
34+
rJd/+4WFA0nB65OwySf7+LAU1zHEI7NH05WWxENb278huay5m4KkeA/kSADKtN3m
35+
gk1wGRQ+ATMw5xqz3R94kXuP6pXGOj/RrtvtmwQutssOvvl/ZtnMYJ3mHafvGecS
36+
vt44ASfSepT9drqZ8jkhKDqoKtk4qC32WtK6ijvgTLaKyPxHNGEet4H0/j4cGI5X
37+
ri28Ngqg3nSL2F3vZGVOnHrJQAcjkVAWHKnyu5iMqtNN8Pm51mX1wleFP7gwaoXk
38+
my4xMk7bW3ppxM27LBRqvhlR6+WOEb/cvHY5afT09acqtL8zAgMBAAGjVzBVMBMG
39+
A1UdJQQMMAoGCCsGAQUFBwMCMB0GA1UdDgQWBBSDzYTdSVbnT3PXieRdXSOaLEM3
40+
UjAfBgNVHSMEGDAWgBSucKJB4HO4KYXwUpQfT5QY5DCq3DANBgkqhkiG9w0BAQsF
41+
AAOCAQEAgbQFAtnBeCE4JMktbXp0yE4W1A3NK9XCP74/LNnzya9Ft9gkQhsd2O1P
42+
q26OCAsgsxLf8HQRUDOP6v8Pnd45tAuGa/cet60zbsBwRXy9iLGziysSBG4yT35/
43+
4aa92zyuLGlxRFe3u8TM0QPDMWkn7RzltBMKFYZSXkn0/MiT9oO5BRnyMOyanq3w
44+
wRE+8YaNRKQ+zM2M0bMW0N9leo3mnVaJ1FeFvwHiSxtsZHJlUSAULPGDm/zcWJYa
45+
VZRZ/GOSiY3puSAYvS3xNkwYS+2fIAXX7DxqvxKZmCd8+7pVPeO/yE2kzhWeWJ0Z
46+
t+AgI3x3nFeaTtenUGmyD24f+ZQ+Yg==
47+
-----END CERTIFICATE-----

mtls-app/certs-local/server.crt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIDNTCCAh2gAwIBAgIUKYCVBJIMLyrpaoxa+swIZSW2LNUwDQYJKoZIhvcNAQEL
3+
BQAwFzEVMBMGA1UEAwwMbXRscy1kZW1vLWNhMB4XDTI2MDMxODEwNDgxNFoXDTM2
4+
MDMxNTEwNDgxNFowFjEUMBIGA1UEAwwLbXRscy1zZXJ2ZXIwggEiMA0GCSqGSIb3
5+
DQEBAQUAA4IBDwAwggEKAoIBAQCGsc5jWJjzga+4KIOzv2Skyv3i5PZE/vCmZKkU
6+
rD8KdkkA/meeFWrxPq68+0ZCIHaLG7tUea4lHl9Lm1dsXSKxDKfk/DbA8BaGFsgU
7+
nYFbNwBLNnzCGu8mHx7Gw45ojSF2MBftQs2IiMQAfJCQJ73AMRj+DGm228YD9jv2
8+
nvU6TmxvsSrdUIVaE9bbEh1cnwwOp4xmYTRrN+4NS8eDprdOqLfhfs+Mcr+nfMbb
9+
lK9geHu1aYsmaE0HCU41HSOGbqiqKO/SqokTKpc2Ov5RLBsAzmtgkOzUQKixlaFl
10+
9rqvaez9kMk6A0Na2xT+BiSOBlcV3mBLXnvK3n+BDNOX87i3AgMBAAGjejB4MCEG
11+
A1UdEQQaMBiCC210bHMtc2VydmVygglsb2NhbGhvc3QwEwYDVR0lBAwwCgYIKwYB
12+
BQUHAwEwHQYDVR0OBBYEFCEjdJWrQcLK++YxjY6oZc1GAlaEMB8GA1UdIwQYMBaA
13+
FK5wokHgc7gphfBSlB9PlBjkMKrcMA0GCSqGSIb3DQEBCwUAA4IBAQBJW1WA54iw
14+
2CPKg4mAuTpOOvoymxwVkftZ82FkoiesXqaGoORhVU2tn1wzjACVd82BkOiT9MTs
15+
yFdy+qVujluGGqTItYqDMNJwDuyOYVMpHTRcAU3WvIHFXi901qevSdApd8qs+f7T
16+
UAvpEVWFJxbZeDxgazD63dFast478zBbFR2CLGQtz03woAbeetoQj8qabu2v6gtd
17+
MTQeud7iqEWt8ny9cKLm4A5dxKdKC7Sm2AT4cZdMK+cHkNsmjyKJGLN+32s9Vk1X
18+
lVB1BSEcH7zaMwDd/cF5F/Agknu/cxuJT4V5sib0nMyu8+/NT009TmHRJWzPQRI2
19+
3D3FfOSpOe+k
20+
-----END CERTIFICATE-----

mtls-app/certs-local/server.key

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
-----BEGIN PRIVATE KEY-----
2+
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCGsc5jWJjzga+4
3+
KIOzv2Skyv3i5PZE/vCmZKkUrD8KdkkA/meeFWrxPq68+0ZCIHaLG7tUea4lHl9L
4+
m1dsXSKxDKfk/DbA8BaGFsgUnYFbNwBLNnzCGu8mHx7Gw45ojSF2MBftQs2IiMQA
5+
fJCQJ73AMRj+DGm228YD9jv2nvU6TmxvsSrdUIVaE9bbEh1cnwwOp4xmYTRrN+4N
6+
S8eDprdOqLfhfs+Mcr+nfMbblK9geHu1aYsmaE0HCU41HSOGbqiqKO/SqokTKpc2
7+
Ov5RLBsAzmtgkOzUQKixlaFl9rqvaez9kMk6A0Na2xT+BiSOBlcV3mBLXnvK3n+B
8+
DNOX87i3AgMBAAECggEAICrrqt84XANPV3BZj754R0DxZFQhGnY2O87TcIv4XEPG
9+
iJW5YlAkI6xAKALskxNUrEE5umF6/QNlZ9WYCdmuVNE8cZvoaaiNAIYFT6MUBxg6
10+
GjxPjD3JenW5MGf4pTB7WtH+jNvE4UQkZydYkQzkrLctDFMjlhejkUOnq2zoDP3g
11+
Bg5LdCS6AfHjSS/IqAZEO0uev1trY/jlsV3+R1u6biqPuOsMgGQR8gcu3b/tlzUM
12+
1OkuyZhvgVoLPZtHhAkEHPLMWyWe9Zqlvvq9IoAKBwAPb9APpC0ROA8U/OQD/r4Y
13+
3G4M6JhRMG8qNWndwzEz6NJQuLtMzsj6u1tHTGoZYQKBgQC7KGXxsFE60250VCz4
14+
iMGlQXehpoSKg72tS9Pbu0Iv2qcioGbSZkezzqHzvIvsuaJQ6fmYtOTJ6lpYisa/
15+
z1cImFw0Ok2I7A2FbVbzDdrIEddAZKDnrgttj6wl6FgIypiFIP1AT62rMy8VPnpE
16+
c5vlOQdODsE8yKfE2us5ZJRClwKBgQC4PTzarbGKBr3mLWBK7sF8RKGViKHgD8Ig
17+
udGf4k0HU/9DI1Q9C7oiLhGcmUat+aViTN9QRlRdFDwQRkkwIW6WzeXuzKFNdxPa
18+
7Ht1z9kKIY/pcEFR1On2EOvP+KKhZPF4cDFoeGjIpay5ev7+/bP00ZM9ujBnGsjM
19+
Y9bTwVSe4QKBgBYTM8MIGuynV5Xc/9jouH53dFbavzNfSpYQJZL7SVk/nwsUhEw4
20+
yChLLQsEqDRpyN1mW4xJedrfC3z6EWs6V3eqEOYQImkN/qJIPUM51R5YDF2KAPiS
21+
rMJledaWyxtuWgMJ2xUk0MUqqlkFH4LHaBHnYhcw4lX7DN7JO4lvdZVNAoGADNpY
22+
0Hillhd6UACCYzfcz6qKC0CI6nSu+lF8SkcjUIuPl0NzsP6Mca39FIus3p4352+t
23+
dJAzenra5dfBa1YpvOOIUux7pEfWXsN4qXNilM5al9J4/Bh6aewsR0n1LoU4Q0qw
24+
Z7VeugC02Au4lllkoIOuXfQLRGYd9ARTDFrEaIECgYEAjeUs9maFqWo2LMVH+0Hd
25+
BywcXi6+ZZNFmWrVie3MYud02npWHzNfc3eG2Z2zoREnHquH2c21uzrh+Fp6G5y6
26+
XdD2Crgl+vJw5pgB16QPrT45RU3I1iEh5B/jUXfgqxfsg9LmQnHEcvoSPBNk0bhi
27+
KOcu03kbwWjH5ytS/Ig6XYw=
28+
-----END PRIVATE KEY-----

0 commit comments

Comments
 (0)