Skip to content

Commit f57528f

Browse files
committed
Update client certs
1 parent f1f06a4 commit f57528f

File tree

12 files changed

+457
-282
lines changed

12 files changed

+457
-282
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Authentication in Ingress
2+
3+
## Basic Auth
4+
### Create htpasswd file
5+
```bash
6+
$ htpasswd -c auth foo
7+
New password: <bar>
8+
New password:
9+
Re-type new password:
10+
Adding password for user foo
11+
```
12+
13+
### Convert htpasswd into a secret
14+
```bash
15+
$ kubectl create secret generic basic-auth --from-file=auth
16+
secret "basic-auth" created
17+
```
18+
19+
### Testing
20+
```bash
21+
curl -v http://161.35.240.187/ -H 'Host: foo.bar.com'
22+
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# Authentication in Ingress
2+
3+
## Generate the CA Key and Certificate
4+
```bash
5+
$ openssl req -x509 -sha256 -newkey rsa:4096 -keyout ca.key -out ca.crt -days 356 -nodes -subj '/CN=Anvesh'
6+
7+
openssl req -x509 -sha256 -newkey rsa:4096 -keyout ca.key -out ca.crt -days 365 -nodes -subj '/CN=Anvesh' -extensions v3_ca
8+
9+
```
10+
11+
# Generate the Server Key, and Certificate and Sign with the CA Certificate
12+
```bash
13+
$ openssl req -new -newkey rsa:4096 -keyout server.key -out server.csr -nodes -subj '/CN=ingress-domain.com'
14+
$ openssl x509 -req -sha256 -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
15+
```
16+
17+
```bash
18+
openssl req -new -newkey rsa:4096 -keyout server.key -out server.csr -nodes -subj '/CN=ingress-domain.com' -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:ingress-domain.com,DNS:*.ingress-domain.com"))
19+
openssl x509 -req -sha256 -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt -extensions SAN -extfile <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:ingress-domain.com,DNS:*.ingress-domain.com"))
20+
```
21+
22+
# Generate the Client Key, and Certificate and Sign with the CA Certificate
23+
```bash
24+
$ openssl req -new -newkey rsa:4096 -keyout client.key -out client.csr -nodes -subj '/CN=Anvesh'
25+
$ openssl x509 -req -sha256 -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 02 -out client.crt
26+
```
27+
```bash
28+
openssl req -new -newkey rsa:4096 -keyout client.key -out client.csr -nodes -subj '/CN=Anvesh' -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:Anvesh"))
29+
openssl x509 -req -sha256 -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 02 -out client.crt -extensions SAN -extfile <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:Anvesh"))
30+
31+
```
32+
33+
## Generate the CA Key and Certificate
34+
```bash
35+
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
36+
-out self-signed-tls.crt -keyout self-signed-tls.key \
37+
-subj "/CN=anvesh.com" \
38+
-reqexts SAN \
39+
-extensions SAN \
40+
-config <(cat /etc/ssl/openssl.cnf \
41+
<(printf "[SAN]\nsubjectAltName=DNS:anvesh.com,DNS:*.anvesh.com"))
42+
```
43+
44+
45+
46+
```bash
47+
$ kubectl create secret generic tls-secret --from-file=tls.crt=server.crt --from-file=tls.key=server.key --from-file=ca.crt=ca.crt
48+
```
49+
50+
### Testing
51+
```bash
52+
curl -v http://161.35.240.187/ -H 'Host: ingress-domain.com'
53+
```
54+
55+
56+
57+
58+
59+
60+
61+
62+
63+
64+
65+
66+
67+
68+
69+
70+
71+
```bash
72+
73+
kubectl get pods -n kube-system | grep nginx-ingress-controller
74+
nginx-ingress-controller-5984b97644-qbwtv 1/1 Running
75+
$ kubectl exec -it -n kube-system nginx-ingress-controller-5984b97644-qbwtv cat /etc/nginx/nginx.conf | grep ssl_client_certificate -A 1
76+
ssl_client_certificate /etc/ingress-controller/ssl/default-my-certs.pem;
77+
ssl_verify_client on;
78+
79+
```
80+
81+
82+
83+
curl -v https://161.35.240.187/ -H 'Host: ingress-domain.com' --cert client.crt --key client.key -k
84+
85+
86+
87+
curl -k https://161.35.240.187/ -v -H 'Host: meow.com' --cert client.crt --key client.key
88+
89+
90+
91+
curl -k http://172.17.4.99 -v -H 'Host: external-auth-01.sample.com'
92+
93+
94+
curl https://ingress-domain.com/ --cert client.crt --key client.key -k

nginx-ingress/hands-on/authentication/client-certs/client-cert-ingress.yaml

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ apiVersion: networking.k8s.io/v1
22
kind: Ingress
33
metadata:
44
annotations:
5-
# Enable client certificate authentication
5+
# Enable client certificate authentication
66
nginx.ingress.kubernetes.io/auth-tls-verify-client: "on"
77
# Create the secret containing the trusted ca certificates
88
nginx.ingress.kubernetes.io/auth-tls-secret: "default/tls-secret"
99
# Specify if certificates are passed to upstream server
10-
nginx.ingress.kubernetes.io/auth-tls-pass-certificate-to-upstream: "true"
11-
nginx.ingress.kubernetes.io/auth-tls-verify-depth: "1"
10+
# nginx.ingress.kubernetes.io/auth-tls-pass-certificate-to-upstream: "true"
11+
# nginx.ingress.kubernetes.io/auth-tls-verify-depth: "1"
1212
name: nginx-client-cert
1313
spec:
1414
ingressClassName: nginx
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
-----BEGIN CERTIFICATE-----
2-
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
2929
-----END CERTIFICATE-----
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,52 @@
11
-----BEGIN PRIVATE KEY-----
2-
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
51-
iFrwCB76ryahqPhnFbwxoybamo+rkA==
2+
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
51+
kdlrYzEcTFvihQcYsaVt4Qh3JwT4
5252
-----END PRIVATE KEY-----
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
-----BEGIN CERTIFICATE-----
2-
MIIE3zCCAsegAwIBAgIBAjANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZBbnZl
3-
c2gwHhcNMjQwNDA4MDAzNTIzWhcNMjUwNDA4MDAzNTIzWjARMQ8wDQYDVQQDDAZB
4-
bnZlc2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCuAcZq0l3nBWGP
5-
xVQm5tkp1PvyaF+tfOB7HlEAcBjXMZy3M3QsjXXqebr4eRdplJqzNIj7w3F0xmOG
6-
m29eCtJoCi4nGjAexZ8Yvk3wg3l3lRNolmRXKmFRnw64pXIvrvpv13BKAw9w3Hm3
7-
nbb6L59ri2i8hKBk/Wb6Xwl/aqJs41wyWONoIMS4PtAYZcQdHKmkYLm03z89Csw8
8-
QZnjCTCgS19rEPFr8uhGDBj1fLn2IL5b1g+ssqdaNNHcIjGiFoVEDh+tShLOK2lM
9-
tmrE5qQwSrg+mGoG/ygQc7LXtaCNwRayRDKVnhEeaPHmGobnMQF0gL/V0Esg+MNP
10-
OkpbymxVXaiRm8JRITraCdz4DTomJIyW9x+aQuozEpR/6s1A+w0aSiSyy1TsO261
11-
W0MhJk4a+U1trYe4vIYvEwwkIrwEBnGgX5XvXIcy/OSr2nLbala9p4LaBkn1bJsC
12-
VDRZGEugPfcpv84lJzd7Pz+5Y0SradtmOTgFG3FL8C58gmNHknMitqmocv+ppEVF
13-
ZB+lHKwL9sckp4e5Obq2qLR8SzEIe6GZpbL+FuVC8trho03+63VQTr73iV9Zv1TA
14-
9+WpCX0Ef4+1xA2/YOzkV+zB/AkfGxEGBpjRfdwQIdyHEScfrNwyWoFoJLl2IoT/
15-
ezHUYoQjpR9qtLl/LfN5zw998fQ5CQIDAQABo0IwQDAdBgNVHQ4EFgQUtGAXgaYC
16-
de6n402ys9LqJ8vutAMwHwYDVR0jBBgwFoAU/rPLKW9gw8tjk8kJHKeD+3uA+6gw
17-
DQYJKoZIhvcNAQELBQADggIBAH4Yp32DMIYnQX3s8ohZzKT0odkZwtt5W7FxWDlW
18-
BMcmrzT3dOM09AoNyZZHW5IulnIxQH9+A1jm1cDU9F9NOU3pO4TMNgTd3uZmSEB5
19-
9VUzsDVeyizqfOSPiq6jlZYNbNMRwlClOKn/pGzn3HZweGSHqZSrHu3luFPsUhw9
20-
8SMgnrsUELcW6GmLMEUykVK3riHgTuXVVHnzUmnQ98Q8jcxDInVTQeAtpYJqJl+E
21-
8IwPX2E71qcuHJZJbRwskiDDzu8gntykLJ/Sh5sfPBy6xOW9qPZUnGCdoO/xqC6B
22-
Buu2VnlJrlOvml73qxOl2rXpOWgg6xTZFVM7o4/kbPqdVboUueaeEOnGw5Z/yVp/
23-
ORvUCfUAJS67HxAS8jyfQxdo6jOrRPLZSWYsvkHG1QCBkXhIVSNoDW7/Km0ey+VE
24-
pXg02Pr9xho9QdMYk/amZ5SP7mxDgeZtm8vj3InB/gzPlv4pUlRe1t1uHb95aJRE
25-
Np1CPiEZFtvlerOxNWpeSm/Czzde0rrt2+bQ/074H1ATm8L/FBsDhzZR9OO4mfAa
26-
EML1VVeZOPZ+TqHe1yLEAx5y+HOBG+0J3G8vvfrdjX3I67WC9DMSyM5vAUEAOtsl
27-
ulN1YVEqkflbqqi+4LsBU3qveB5GOqA6J2t86xfFNcqX3mZmYXfOCesg3Cw19elX
28-
BEA9
2+
MIIE8jCCAtqgAwIBAgIBAjANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZBbnZl
3+
c2gwHhcNMjQwNDA5MDIyNjAxWhcNMjUwNDA5MDIyNjAxWjARMQ8wDQYDVQQDDAZB
4+
bnZlc2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDAN3Nijk05M9+4
5+
kaVEI73V+mM/qQVieiqGme+Kny3+0heViUbQIgi+BT8RWn+O/AieB2giD4826g5X
6+
xjxTjJhD44Azb6Wtz5KFuULRdeaAWGD6OWMn4kO8pyrrThzE1TrWHTum3vAtLZeL
7+
CY8EpZpdfYsiwFmwfmYofR8BJdVLAa5KXaG9jnk9/NAvUWVwFw9How0dgflzMve/
8+
UB/TrJ7TwxEzUen5PHhUpuOWJEG0F4wkm11zDzZYdXD7st4kdcQJi+pDfBJZaB/u
9+
8bKF5/WV+0QoOL/qd5UEutNhR0f1FHyrtKjhcSdVJij/TcJZFy3v40ci9jS0HBDp
10+
b/hXDCYobVUocae7c4tIUPuQuQzrCUzRiUF9ZCyrkDJ/+vacySaeby81noiIuLqD
11+
8RG1a57nwsgGROWyJpMXeoxx9zERZtyMDXIQ8iLTs0LgnSPuxNeYB8jH/wwxqWWv
12+
Cmj8rsehHmvGHZfiygEaHxif7zo3mA5IlD4gdB3pioQqX8bJPCFjemYUrDTggxwt
13+
iKRBpLssC4s4WUsVQ7QvfKzhOeuzaeWSt6by2BBj3K6TSw4K1i97XknEWVB2kjW3
14+
nTBSnvTjJWZbIJhXEaHyKZnOpyx4iKSydtZ8YJC6/fJ4KgCZeu1MCjkZlgDGXfGn
15+
m6PYuVcIfB2DKfw6MIEzh+PvYYLFcQIDAQABo1UwUzARBgNVHREECjAIggZBbnZl
16+
c2gwHQYDVR0OBBYEFG8lCUpoJvMB6tayYqb6sLVi6FlUMB8GA1UdIwQYMBaAFOvI
17+
oKACHdt6yj5hfGJsOc+3MSwRMA0GCSqGSIb3DQEBCwUAA4ICAQBQjQKBCXtVGHF6
18+
5k2MSpCMpG5fBQ7YX6T2mhilnYLK51dG0/z8zTf1+tOi/j4X8n2kNFrnjYSo/JJ0
19+
ZMog0UrSZvVcuX80olbz3xJDm8eFCj/TFcNXHedbZM8aLvYIgXBMNfVCA5TdMqlN
20+
jYUFAkDDJ7MzzeF+c4+twfWrp7CxQHiQP0Mx6jo6TOHtkrXDXCTzQwY0GI/3boQV
21+
BZ6EhdVBnv/cT13NMVwa45zuBm94vvwq1GtCAienTxvBKvEWJ1fa5vi495Y3hS1K
22+
58sNmRKnrCbOBagTY7FKpsjfk0KFTS1Lh2jDFgHpUvrIHWM0mRlS0AqbWITqSYZQ
23+
iOdHjPZ8Y+fsuNuWBmwiPpj/fXP+nITLhy4/716XxmUQ391Uxx/OX5v1Y9uk80lk
24+
jDdgXlRI4cWQS0tlcYhPRByPJcAHRCTSXymsvxK4DDd2TyMgu8mt5qGbb5ysf5Ab
25+
M7VceF/qnISEldYrE408fjCx65jH1KFwm+vZsRM0a9RPqzuumT5Xd8qYZWvqL82Q
26+
Bj3981chF7dQN7zimH/MzLirfzPhsnOStcYN9HI56inWxE4ZUpbB18+FavL18B+B
27+
8lUBuX20FNjwSCGK1Yt1Ky60BRUvL80CeRddA6V2g85Gn1oQ3mleguEpM78gCO6B
28+
ioXqhLd2R7fNeqikmQOP1Uw15JVWNQ==
2929
-----END CERTIFICATE-----

0 commit comments

Comments
 (0)