Test FTC100 fails since A1-SIM update
[nonrtric.git] / service-exposure / certs / server_certs.sh
1 #!/bin/sh
2 #
3 # ============LICENSE_START=======================================================
4 #  Copyright (C) 2022-2023 Nordix Foundation.
5 # ================================================================================
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
9 #
10 #      http://www.apache.org/licenses/LICENSE-2.0
11 #
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17 #
18 # SPDX-License-Identifier: Apache-2.0
19 # ============LICENSE_END=========================================================
20 #
21
22
23 CA_SUBJECT="/C=IE/ST=Dublin/L=Dublin/O=Keycloak/OU=Keycloak/CN=localhost/emailAddress=ca@mail.com"
24 SERVER_SUBJECT="/C=IE/ST=Dublin/L=Dublin/O=Keycloak/OU=Keycloak/CN=localhost/emailAddress=server@mail.com"
25 PW=changeit
26 CERTNAME=tls
27 CANAME=rootCA
28 IP=$(minikube ip)
29 DAYS=3650
30 TRUSTSTORE=server.truststore
31 KEYSTORE=server.keystore
32 STORETYPE=PKCS12
33
34 rm $TRUSTSTORE $KEYSTORE ${CANAME}.key ${CANAME}.crt ${CERTNAME}.key ${CERTNAME}.csr ${CERTNAME}.crt ${CERTNAME}.p12 2>/dev/null
35 echo $PW > secretfile.txt
36
37 openssl req -x509 -sha256 -days $DAYS -newkey rsa:4096 -keyout ${CANAME}.key -subj "$CA_SUBJECT" -passout file:secretfile.txt -out ${CANAME}.crt
38
39 openssl req -new -newkey rsa:4096 -keyout ${CERTNAME}.key -subj "$SERVER_SUBJECT" -out ${CERTNAME}.csr -nodes
40
41 echo "subjectKeyIdentifier   = hash" > x509.ext
42 echo "authorityKeyIdentifier = keyid:always,issuer:always" >> x509.ext
43 echo "basicConstraints       = CA:TRUE" >> x509.ext
44 echo "keyUsage               = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyAgreement, keyCertSign" >> x509.ext
45 echo "subjectAltName         = DNS.1:localhost, IP.1:127.0.0.1, DNS.2:minikube, IP.2:${IP}, DNS.3:keycloak.default, DNS.4:keycloak.est.tech, DNS.5:keycloak" >> x509.ext
46 echo "issuerAltName          = issuer:copy" >> x509.ext
47 echo "[ ca ]" >> x509.ext
48 echo "# X509 extensions for a ca" >> x509.ext
49 echo "keyUsage                = critical, cRLSign, keyCertSign" >> x509.ext
50 echo "basicConstraints        = CA:TRUE, pathlen:0" >> x509.ext
51 echo "subjectKeyIdentifier    = hash" >> x509.ext
52 echo "authorityKeyIdentifier  = keyid:always,issuer:always" >> x509.ext
53 echo "" >> x509.ext
54 echo "[ server ]" >> x509.ext
55 echo "# X509 extensions for a server" >> x509.ext
56 echo "keyUsage                = critical,digitalSignature,keyEncipherment" >> x509.ext
57 echo "extendedKeyUsage        = serverAuth,clientAuth" >> x509.ext
58 echo "basicConstraints        = critical,CA:FALSE" >> x509.ext
59 echo "subjectKeyIdentifier    = hash" >> x509.ext
60 echo "authorityKeyIdentifier  = keyid,issuer:always" >> x509.ext 
61
62 openssl x509 -req -CA ${CANAME}.crt -CAkey ${CANAME}.key -in ${CERTNAME}.csr -passin file:secretfile.txt -out ${CERTNAME}.crt -days $DAYS -CAcreateserial -extfile x509.ext
63
64 keytool -import -trustcacerts -file ${CANAME}.crt -keystore $TRUSTSTORE -storepass $PW  -storetype $STORETYPE -noprompt
65
66 openssl pkcs12 -export -clcerts -in ${CERTNAME}.crt -inkey ${CERTNAME}.key -passout file:secretfile.txt -out ${CERTNAME}.p12
67
68 keytool -importkeystore -srckeystore ${CERTNAME}.p12 -srcstorepass $PW -srcstoretype $STORETYPE -destkeystore $KEYSTORE -deststorepass $PW -deststoretype $STORETYPE 
69
70 rm secretfile.txt x509.ext 2>/dev/null