Added Ampere_Openedge hardware type
[rec.git] / workflows / gencerts.sh
1 #!/bin/bash
2 #
3 #  Script to create self-signed certificates in directory $1.
4 #
5
6 cd $1
7
8 cat > openssl-ca.cnf << EOF
9 HOME            = .
10 RANDFILE        = \$ENV::HOME/.rnd
11
12 ####################################################################
13 [ ca ]
14 default_ca    = CA_default      # The default ca section
15
16 [ CA_default ]
17
18 dir               = /root/ca
19 default_days     = 1000         # How long to certify for
20 default_crl_days = 30           # How long before next CRL
21 default_md       = sha256       # Use public key default MD
22 preserve         = no           # Keep passed DN ordering
23
24 x509_extensions = ca_extensions # The extensions to add to the cert
25
26 email_in_dn     = no            # Don't concat the email in the DN
27 copy_extensions = copy          # Required to copy SANs from CSR to cert
28
29 ####################################################################
30 [ req ]
31 prompt = no
32 default_bits       = 4096
33 default_keyfile    = cakey.pem
34 distinguished_name = ca_distinguished_name
35 x509_extensions    = ca_extensions
36 string_mask        = utf8only
37
38 ####################################################################
39 [ ca_distinguished_name ]
40 countryName           = FI
41 organizationName      = Nokia OY
42 # commonName          = Nokia
43 # commonName_default  = Test Server
44 # emailAddress        = test@server.com
45 stateOrProvinceName   = Uusimaa
46 localityName          = Espoo
47
48 ####################################################################
49 [ ca_extensions ]
50
51 subjectKeyIdentifier   = hash
52 authorityKeyIdentifier = keyid:always, issuer
53 basicConstraints       = critical, CA:true
54 keyUsage               = keyCertSign, cRLSign
55 EOF
56
57 cat > openssl-server.cnf << EOF
58 HOME            = .
59 RANDFILE        = \$ENV::HOME/.rnd
60
61 ####################################################################
62 [ req ]
63 prompt  = no
64 default_bits       = 2048
65 default_keyfile    = serverkey.pem
66 distinguished_name = server_distinguished_name
67 req_extensions     = server_req_extensions
68 string_mask        = utf8only
69
70 ####################################################################
71 [ server_distinguished_name ]
72 countryName           = FI
73 organizationName      = Nokia NET
74 commonName            = Test Server
75 # emailAddress        = test@server.com
76 stateOrProvinceName   = Uusimaa
77 localityName          = Espoo
78
79 ####################################################################
80 [ server_req_extensions ]
81
82 subjectKeyIdentifier = hash
83 basicConstraints     = CA:FALSE
84 keyUsage             = digitalSignature, keyEncipherment
85 subjectAltName       = @alternate_names
86 nsComment            = "OpenSSL Generated Certificate"
87
88 ####################################################################
89 [ alternate_names ]
90
91 DNS.1  = server.com
92 EOF
93
94 cat > openssl-client.cnf << EOF
95 HOME            = .
96 RANDFILE        = \$ENV::HOME/.rnd
97
98 ####################################################################
99 [ req ]
100 prompt = no
101 default_bits       = 2048
102 default_keyfile    = clientkey.pem
103 distinguished_name = client_distinguished_name
104 req_extensions     = client_req_extensions
105 string_mask        = utf8only
106
107 ####################################################################
108 [ client_distinguished_name ]
109 countryName          = DE
110 organizationName     = Customer X
111 commonName           = Customer
112 emailAddress         = test@client.com
113
114 ####################################################################
115 [ client_req_extensions ]
116
117 subjectKeyIdentifier = hash
118 basicConstraints     = CA:FALSE
119 keyUsage             = digitalSignature, keyEncipherment
120 subjectAltName       = @alternate_names
121 nsComment            = "OpenSSL Generated Certificate"
122
123 ####################################################################
124 [ alternate_names ]
125
126 DNS.1  = ramuller.zoo.dynamic.nsn-net.net
127 DNS.2  = www.client.com
128 DNS.3  = mail.client.com
129 DNS.4  = ftp.client.com
130 EOF
131
132 cat > openssl-ca-sign.cnf << EOF
133 HOME            = .
134 RANDFILE        = \$ENV::HOME/.rnd
135
136 ####################################################################
137 [ ca ]
138 default_ca    = CA_default      # The default ca section
139
140 [ CA_default ]
141
142 default_days     = 1000         # How long to certify for
143 default_crl_days = 30           # How long before next CRL
144 default_md       = sha256       # Use public key default MD
145 preserve         = no           # Keep passed DN ordering
146
147 x509_extensions = ca_extensions # The extensions to add to the cert
148
149 email_in_dn     = no            # Don't concat the email in the DN
150 copy_extensions = copy          # Required to copy SANs from CSR to cert
151 base_dir      = .
152 certificate   = \$base_dir/cacert.pem   # The CA certifcate
153 private_key   = \$base_dir/cakey.pem    # The CA private key
154 new_certs_dir = \$base_dir              # Location for new certs after signing
155 database      = \$base_dir/index.txt    # Database index file
156 serial        = \$base_dir/serial.txt   # The current serial number
157
158 unique_subject = no  # Set to 'no' to allow creation of
159                      # several certificates with same subject.
160
161 ####################################################################
162 [ req ]
163 prompt = no
164 default_bits       = 4096
165 default_keyfile    = cakey.pem
166 distinguished_name = ca_distinguished_name
167 x509_extensions    = ca_extensions
168 string_mask        = utf8only
169
170 ####################################################################
171 [ ca_distinguished_name ]
172 countryName           = FI
173 organizationName      = Nokia OY
174 # commonName          = Nokia
175 # commonName_default  = Test Server
176 # emailAddress        = test@server.com
177 stateOrProvinceName   = Uusimaa
178 localityName          = Espoo
179
180 ####################################################################
181 [ ca_extensions ]
182
183 subjectKeyIdentifier   = hash
184 authorityKeyIdentifier = keyid:always, issuer
185 basicConstraints       = critical, CA:true
186 keyUsage               = keyCertSign, cRLSign
187
188 ####################################################################
189 [ signing_policy ]
190 countryName            = optional
191 stateOrProvinceName    = optional
192 localityName           = optional
193 organizationName       = optional
194 organizationalUnitName = optional
195 commonName             = supplied
196 emailAddress           = optional
197
198 ####################################################################
199 [ signing_req ]
200 subjectKeyIdentifier   = hash
201 authorityKeyIdentifier = keyid,issuer
202 basicConstraints       = CA:FALSE
203 keyUsage               = digitalSignature, keyEncipherment
204 EOF
205
206 openssl req -config openssl-ca.cnf -x509 -newkey rsa:2048 -sha256 -nodes -out cacert.pem     -outform PEM
207 openssl req -config openssl-server.cnf   -newkey rsa:2048 -sha256 -nodes -out servercert.csr -outform PEM 
208 openssl req -config openssl-client.cnf   -newkey rsa:2048 -sha256 -nodes -out clientcert.csr -outform PEM
209 echo -n   > index.txt
210 echo '01' > serial.txt
211 echo -n   > index-ri.txt
212 echo '01' > serial-ri.txt
213 echo -e "y\ny\n" | openssl ca -config openssl-ca-sign.cnf -policy signing_policy -extensions signing_req -out servercert.pem -infiles servercert.csr
214 echo -e "y\ny\n" | openssl ca -config openssl-ca-sign.cnf -policy signing_policy -extensions signing_req -out clientcert.pem -infiles clientcert.csr