Bob Mottram 9 years ago
parent
commit
0318ca8edf
1 changed files with 40 additions and 20 deletions
  1. 40
    20
      src/freedombone-addcert

+ 40
- 20
src/freedombone-addcert View File

146
     mkdir /etc/ssl/mycerts
146
     mkdir /etc/ssl/mycerts
147
 fi
147
 fi
148
 
148
 
149
-if [ $LETSENCRYPT_HOSTNAME ]; then
149
+CERTFILE=$HOSTNAME
150
+
151
+function add_cert_letsencrypt {
150
     CERTFILE=$LETSENCRYPT_HOSTNAME
152
     CERTFILE=$LETSENCRYPT_HOSTNAME
151
 
153
 
152
     if [ ! -d $INSTALL_DIR ]; then
154
     if [ ! -d $INSTALL_DIR ]; then
170
     systemctl stop nginx
172
     systemctl stop nginx
171
 
173
 
172
     cd ${INSTALL_DIR}/letsencrypt
174
     cd ${INSTALL_DIR}/letsencrypt
173
-    # TODO this requires user interaction - is there a non-interactive mode?
174
     ./letsencrypt-auto certonly --server $LETSENCRYPT_SERVER --standalone -d $LETSENCRYPT_HOSTNAME
175
     ./letsencrypt-auto certonly --server $LETSENCRYPT_SERVER --standalone -d $LETSENCRYPT_HOSTNAME
175
     if [ ! "$?" = "0" ]; then
176
     if [ ! "$?" = "0" ]; then
176
         echo $"Failed to install letsencrypt for domain $LETSENCRYPT_HOSTNAME"
177
         echo $"Failed to install letsencrypt for domain $LETSENCRYPT_HOSTNAME"
192
     if [ -f /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key ]; then
193
     if [ -f /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key ]; then
193
         if [ ! -f /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key.old ]; then
194
         if [ ! -f /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key.old ]; then
194
             mv /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key.old
195
             mv /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key.old
195
-		else
196
-			rm -f /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key
196
+        else
197
+            rm -f /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key
197
         fi
198
         fi
198
     fi
199
     fi
199
     ln -s /etc/letsencrypt/live/${LETSENCRYPT_HOSTNAME}/privkey.pem /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key
200
     ln -s /etc/letsencrypt/live/${LETSENCRYPT_HOSTNAME}/privkey.pem /etc/ssl/private/${LETSENCRYPT_HOSTNAME}.key
202
     if [ -f /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem ]; then
203
     if [ -f /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem ]; then
203
         if [ ! -f /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem.old ]; then
204
         if [ ! -f /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem.old ]; then
204
             mv /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem.old
205
             mv /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem.old
205
-		else
206
-			rm -f /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem
206
+        else
207
+            rm -f /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem
207
         fi
208
         fi
208
     fi
209
     fi
209
     ln -s /etc/letsencrypt/live/${LETSENCRYPT_HOSTNAME}/fullchain.pem /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem
210
     ln -s /etc/letsencrypt/live/${LETSENCRYPT_HOSTNAME}/fullchain.pem /etc/ssl/certs/${LETSENCRYPT_HOSTNAME}.pem
217
         echo $"Certificate for $LETSENCRYPT_HOSTNAME could not be pinned"
218
         echo $"Certificate for $LETSENCRYPT_HOSTNAME could not be pinned"
218
         exit 62878
219
         exit 62878
219
     fi
220
     fi
220
-else
221
-    CERTFILE=$HOSTNAME
221
+}
222
+
223
+function add_cert_selfsigned {
222
     if [[ $ORGANISATION == "Freedombone-CA" ]]; then
224
     if [[ $ORGANISATION == "Freedombone-CA" ]]; then
223
         CERTFILE="ca-$HOSTNAME"
225
         CERTFILE="ca-$HOSTNAME"
224
     fi
226
     fi
236
         echo $"Certificate for $CERTFILE could not be pinned"
238
         echo $"Certificate for $CERTFILE could not be pinned"
237
         exit 62879
239
         exit 62879
238
     fi
240
     fi
239
-fi
241
+}
240
 
242
 
241
-# generate DH params
242
-if [ ! $NODH ]; then
243
-    if [ ! -f /etc/ssl/certs/${CERTFILE}.dhparam ]; then
244
-        ${PROJECT_NAME}-dhparam -h ${CERTFILE} --fast yes
243
+function generate_dh_params {
244
+    if [ ! $NODH ]; then
245
+        if [ ! -f /etc/ssl/certs/${CERTFILE}.dhparam ]; then
246
+            ${PROJECT_NAME}-dhparam -h ${CERTFILE} --fast yes
247
+        fi
245
     fi
248
     fi
246
-fi
249
+}
247
 
250
 
248
-if [ -f /etc/init.d/nginx ]; then
249
-    /etc/init.d/nginx reload
250
-fi
251
+function restart_web_server {
252
+    if [ -f /etc/init.d/nginx ]; then
253
+        /etc/init.d/nginx reload
254
+    fi
255
+}
256
+
257
+function make_cert_bundle {
258
+    # Create a bundle of your certificates
259
+    cat /etc/ssl/mycerts/*.crt /etc/ssl/mycerts/*.pem > /etc/ssl/${PROJECT_NAME}-bundle.crt
260
+    tar -czvf /etc/ssl/${PROJECT_NAME}-certs.tar.gz /etc/ssl/mycerts/*.crt /etc/ssl/mycerts/*.pem
261
+}
262
+
263
+function create_cert {
264
+    if [ $LETSENCRYPT_HOSTNAME ]; then
265
+        add_cert_letsencrypt
266
+    else
267
+        add_cert_selfsigned
268
+    fi
269
+}
251
 
270
 
252
-# Create a bundle of your certificates
253
-cat /etc/ssl/mycerts/*.crt /etc/ssl/mycerts/*.pem > /etc/ssl/${PROJECT_NAME}-bundle.crt
254
-tar -czvf /etc/ssl/${PROJECT_NAME}-certs.tar.gz /etc/ssl/mycerts/*.crt /etc/ssl/mycerts/*.pem
271
+create_cert
272
+generate_dh_params
273
+restart_web_server
274
+make_cert_bundle
255
 
275
 
256
 exit 0
276
 exit 0