Browse Source

Option to remove pinning for a domain

Bob Mottram 8 years ago
parent
commit
eae33f69d6
1 changed files with 15 additions and 1 deletions
  1. 15
    1
      src/freedombone-pin-cert

+ 15
- 1
src/freedombone-pin-cert View File

@@ -54,7 +54,7 @@ function pin_all_certs {
54 54
 
55 55
                         PIN_HEADER="Public-Key-Pins 'pin-sha256=\"${KEY_HASH}\"; pin-sha256=\"${BACKUP_KEY_HASH}\"; max-age=5184000; includeSubDomains';"
56 56
                         sed -i "s|Public-Key-Pins.*|${PIN_HEADER}|g" $file
57
-                        echo "Pinned $DOMAIN_NAME with keys $KEY_HASH $BACKUP_KEY_HASH"
57
+                        echo $"Pinned $DOMAIN_NAME with keys $KEY_HASH $BACKUP_KEY_HASH"
58 58
                     fi
59 59
                 fi
60 60
             fi
@@ -69,14 +69,28 @@ if [[ $1 == "all" ]]; then
69 69
 fi
70 70
 
71 71
 DOMAIN_NAME=$1
72
+REMOVE=$2
72 73
 KEY_FILENAME=/etc/ssl/private/${DOMAIN_NAME}.key
73 74
 BACKUP_KEY_FILENAME=/etc/ssl/certs/${DOMAIN_NAME}.pem
74 75
 SITE_FILENAME=$WEBSITES_DIRECTORY/${DOMAIN_NAME}
75 76
 
77
+if [ ! ${DOMAIN_NAME} ]; then
78
+    exit 0
79
+fi
80
+
76 81
 if [ ! -f "$SITE_FILENAME" ]; then
77 82
     exit 0
78 83
 fi
79 84
 
85
+if [[ $REMOVE == "remove" ]]; then
86
+    if grep -q "Public-Key-Pins" $SITE_FILENAME; then
87
+        sed -i "/Public-Key-Pins/d" $SITE_FILENAME
88
+        echo $"Removed pinning for ${DOMAIN_NAME}"
89
+        systemctl restart nginx
90
+    fi
91
+    exit 0
92
+fi
93
+
80 94
 if [ ! -f "$KEY_FILENAME" ]; then
81 95
     echo $"No private key certificate found for $DOMAIN_NAME"
82 96
     exit 1