Skip to content

Commit ccdf689

Browse files
committed
Now adding localhost as a Subject alternative name to the certificate, so it also support localhost (as a multi-domain certificate).
1 parent f76d941 commit ccdf689

File tree

9 files changed

+61
-27
lines changed

9 files changed

+61
-27
lines changed

README.md

+15-2
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ openssl genrsa -des3 -out aliceprivate.key 128
5252
#### 2. Certificate Signing Request (CSR): alice.csr
5353

5454
```
55-
openssl req -new -key aliceprivate.key -out alice.csr
55+
openssl req -new -key aliceprivate.key -out alice.csr -config alice-csr.conf
5656
```
5757

5858
__Common Name__: `server-alice`, which will later be a DNS alias inside the Docker network
@@ -61,7 +61,7 @@ __Common Name__: `server-alice`, which will later be a DNS alias inside the Dock
6161
#### 3. self-signed Certificate: alice.crt
6262

6363
```
64-
openssl x509 -req -days 3650 -in alice.csr -signkey aliceprivate.key -out alice.crt
64+
openssl x509 -req -days 3650 -in alice.csr -signkey aliceprivate.key -out alice.crt -extfile alice-csr.conf -extensions v3_req
6565
```
6666

6767

@@ -174,3 +174,16 @@ The result should look like this:
174174
![client-keystore](https://github.com/jonashackt/spring-boot-rest-clientcertificates-docker-compose/blob/master/client-keystore.png)
175175

176176

177+
178+
179+
# Links
180+
181+
https://stackoverflow.com/questions/25869428/classpath-resource-not-found-when-running-as-jar
182+
183+
https://www.thomas-krenn.com/de/wiki/Openssl_Multi-Domain_CSR_erstellen
184+
185+
https://stackoverflow.com/questions/30977264/subject-alternative-name-not-present-in-certificate
186+
187+
https://stackoverflow.com/questions/21488845/how-can-i-generate-a-self-signed-certificate-with-subjectaltname-using-openssl
188+
189+
https://serverfault.com/questions/779475/openssl-add-subject-alternate-name-san-when-signing-with-ca
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
[req]
2+
distinguished_name = req_distinguished_name
3+
req_extensions = v3_req
4+
prompt = no
5+
6+
[req_distinguished_name]
7+
C = DE
8+
ST = Thuringia
9+
L = Erfurt
10+
O = Alice Corp
11+
OU = Team Foo
12+
CN = server-alice
13+
14+
[v3_req]
15+
keyUsage = keyEncipherment, dataEncipherment
16+
extendedKeyUsage = serverAuth
17+
subjectAltName = @alt_names
18+
[alt_names]
19+
DNS.1 = server-alice
20+
DNS.2 = localhost
112 Bytes
Binary file not shown.
Binary file not shown.
+15-14
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
-----BEGIN CERTIFICATE-----
2-
MIICczCCAdwCCQCa8HHKqch/djANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJE
3-
RTESMBAGA1UECAwJVGh1cmluZ2lhMQ8wDQYDVQQHDAZFcmZ1cnQxEzARBgNVBAoM
4-
CkFsaWNlIENvcnAxFTATBgNVBAMMDHNlcnZlci1hbGljZTEeMBwGCSqGSIb3DQEJ
5-
ARYPYWxpY2VAZW1haWwuY29tMB4XDTE3MTIxMjEwNTgxOVoXDTI3MTIxMDEwNTgx
6-
OVowfjELMAkGA1UEBhMCREUxEjAQBgNVBAgMCVRodXJpbmdpYTEPMA0GA1UEBwwG
7-
RXJmdXJ0MRMwEQYDVQQKDApBbGljZSBDb3JwMRUwEwYDVQQDDAxzZXJ2ZXItYWxp
8-
Y2UxHjAcBgkqhkiG9w0BCQEWD2FsaWNlQGVtYWlsLmNvbTCBnzANBgkqhkiG9w0B
9-
AQEFAAOBjQAwgYkCgYEA7WKw0oR+WPiHfwUSm7OLyMKbdc1c08x47mrtJagHKhOm
10-
mTCLlZOZ6L1XzidgnF8dvG+7mODnoUjMDWAAmR65WLOV3KM5sZAnPmIK9/KzvO83
11-
7tixEbrueQAC5IOYmdo9oc9rr5VziWzAa3xUtloEl2Jme1hdsq1AUtX35u0Ap3EC
12-
AwEAATANBgkqhkiG9w0BAQUFAAOBgQAXcHl0813Ub++RByhpbaWQwk6lv5kWGt0X
13-
8X2oWKt/zAtw3mA9nkY5ad+usMfq858iZcq8Y7IVhdm1rSVfcma9OO9UkSHRGaMB
14-
1wrk8tBXFfRdKZxlUvoPQI1egbFnEKflKMYpPvXyNAxDXGVEe/58Q005eJdgz1Hc
15-
FEpcLWIG7g==
2+
MIICqDCCAhGgAwIBAgIJAJfsRKTuMVkVMA0GCSqGSIb3DQEBBQUAMHExCzAJBgNV
3+
BAYTAkRFMRIwEAYDVQQIDAlUaHVyaW5naWExDzANBgNVBAcMBkVyZnVydDETMBEG
4+
A1UECgwKQWxpY2UgQ29ycDERMA8GA1UECwwIVGVhbSBGb28xFTATBgNVBAMMDHNl
5+
cnZlci1hbGljZTAeFw0xNzEyMTIxODEwMDhaFw0yNzEyMTAxODEwMDhaMHExCzAJ
6+
BgNVBAYTAkRFMRIwEAYDVQQIDAlUaHVyaW5naWExDzANBgNVBAcMBkVyZnVydDET
7+
MBEGA1UECgwKQWxpY2UgQ29ycDERMA8GA1UECwwIVGVhbSBGb28xFTATBgNVBAMM
8+
DHNlcnZlci1hbGljZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA7WKw0oR+
9+
WPiHfwUSm7OLyMKbdc1c08x47mrtJagHKhOmmTCLlZOZ6L1XzidgnF8dvG+7mODn
10+
oUjMDWAAmR65WLOV3KM5sZAnPmIK9/KzvO837tixEbrueQAC5IOYmdo9oc9rr5Vz
11+
iWzAa3xUtloEl2Jme1hdsq1AUtX35u0Ap3ECAwEAAaNIMEYwCwYDVR0PBAQDAgQw
12+
MBMGA1UdJQQMMAoGCCsGAQUFBwMBMCIGA1UdEQQbMBmCDHNlcnZlci1hbGljZYIJ
13+
bG9jYWxob3N0MA0GCSqGSIb3DQEBBQUAA4GBALyWWCPUJAwapV4g3qJ0PwATEkkd
14+
gC/nzm3J8KSsBBVAnzAn/IrWV1O3f+FDaxOMUyOXbYDql96okpKeohXjT/8Q1V+F
15+
iWWsBDvVS5q8OPlx0fdfk8bnEqUUa7T17WQLnfTl42f38pp/9p0sdIB3MVp2tRJZ
16+
p27l9wAt3E2dJDr1
1617
-----END CERTIFICATE-----
+11-10
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
-----BEGIN CERTIFICATE REQUEST-----
2-
MIIBvjCCAScCAQAwfjELMAkGA1UEBhMCREUxEjAQBgNVBAgMCVRodXJpbmdpYTEP
3-
MA0GA1UEBwwGRXJmdXJ0MRMwEQYDVQQKDApBbGljZSBDb3JwMRUwEwYDVQQDDAxz
4-
ZXJ2ZXItYWxpY2UxHjAcBgkqhkiG9w0BCQEWD2FsaWNlQGVtYWlsLmNvbTCBnzAN
5-
BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA7WKw0oR+WPiHfwUSm7OLyMKbdc1c08x4
6-
7mrtJagHKhOmmTCLlZOZ6L1XzidgnF8dvG+7mODnoUjMDWAAmR65WLOV3KM5sZAn
7-
PmIK9/KzvO837tixEbrueQAC5IOYmdo9oc9rr5VziWzAa3xUtloEl2Jme1hdsq1A
8-
UtX35u0Ap3ECAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4GBAJ1TJMMROF2qWIAosSQW
9-
76meIBZwwKYm28otKkMYjQM/ElzD7XtISKUk/aOg/2TGAs5mJCMGjZJDoT66/Oos
10-
id/8ngjduApNmT33n9J9fMm2FHhqhbL30a2QYzaJa1jTPDklhF0pnpT0X/v5Lney
11-
C5m6MN54CW7bI+fTYto0V4BT
2+
MIICCDCCAXECAQAwcTELMAkGA1UEBhMCREUxEjAQBgNVBAgMCVRodXJpbmdpYTEP
3+
MA0GA1UEBwwGRXJmdXJ0MRMwEQYDVQQKDApBbGljZSBDb3JwMREwDwYDVQQLDAhU
4+
ZWFtIEZvbzEVMBMGA1UEAwwMc2VydmVyLWFsaWNlMIGfMA0GCSqGSIb3DQEBAQUA
5+
A4GNADCBiQKBgQDtYrDShH5Y+Id/BRKbs4vIwpt1zVzTzHjuau0lqAcqE6aZMIuV
6+
k5novVfOJ2CcXx28b7uY4OehSMwNYACZHrlYs5XcozmxkCc+Ygr38rO87zfu2LER
7+
uu55AALkg5iZ2j2hz2uvlXOJbMBrfFS2WgSXYmZ7WF2yrUBS1ffm7QCncQIDAQAB
8+
oFcwVQYJKoZIhvcNAQkOMUgwRjALBgNVHQ8EBAMCBDAwEwYDVR0lBAwwCgYIKwYB
9+
BQUHAwEwIgYDVR0RBBswGYIMc2VydmVyLWFsaWNlgglsb2NhbGhvc3QwDQYJKoZI
10+
hvcNAQELBQADgYEAb4ZuIj5jgAtryg2CQ1A6jAvkq96WolStj+iW7SvekgKZRNEJ
11+
CjvYrXD+0ysGu2VKCksCAAFNy/gQUWCBCvRZJ8VYD/m8ydFcsLDpZ/IfZ7OS5hy2
12+
A8KKmmcrDSTZHMCdt+7rmr+bVpjiy7iVakXxiwo/YoERTPtQcfXEliiHgIM=
1213
-----END CERTIFICATE REQUEST-----

server-alice/src/test/java/de/jonashackt/RestClientCertTest.java

-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ public class RestClientCertTest {
2525
@Autowired
2626
private RestTemplate restTemplate;
2727

28-
@Ignore("currently not running, because the certificate isn´t issued for 'localhost'")
2928
@Test
3029
public void is_hello_resource_callable_with_client_cert() {
3130
String response = restTemplate.getForObject("https://localhost:" + port + "/hello", String.class);
112 Bytes
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)