Browse Source

Support revoke cert

neil 9 years ago
parent
commit
6cb415f57e
2 changed files with 61 additions and 2 deletions
  1. 4 1
      README.md
  2. 57 1
      le.sh

+ 4 - 1
README.md

@@ -78,7 +78,7 @@ Show help message:
 ```
 ```
 root@v1:~# le.sh
 root@v1:~# le.sh
 https://github.com/Neilpang/le
 https://github.com/Neilpang/le
-v1.2.2
+v1.2.3
 Usage: le.sh  [command] ...[args]....
 Usage: le.sh  [command] ...[args]....
 Available commands:
 Available commands:
 
 
@@ -94,6 +94,8 @@ renewAll:
   Renew all the certs.
   Renew all the certs.
 uninstall:
 uninstall:
   Uninstall le.sh, and uninstall the cron job.
   Uninstall le.sh, and uninstall the cron job.
+revoke:
+  Revoke a cert.
 version:
 version:
   Show version info.
   Show version info.
 installcronjob:
 installcronjob:
@@ -111,6 +113,7 @@ createCSR:
 
 
 
 
 
 
+
 root@v1:~/le# le issue
 root@v1:~/le# le issue
 Usage: le  issue  webroot|no|apache|dns   a.com  [www.a.com,b.com,c.com]|no   [key-length]|no
 Usage: le  issue  webroot|no|apache|dns   a.com  [www.a.com,b.com,c.com]|no   [key-length]|no
 
 

+ 57 - 1
le.sh

@@ -1,5 +1,5 @@
 #!/usr/bin/env bash
 #!/usr/bin/env bash
-VER=1.2.2
+VER=1.2.3
 PROJECT="https://github.com/Neilpang/le"
 PROJECT="https://github.com/Neilpang/le"
 
 
 DEFAULT_CA="https://acme-v01.api.letsencrypt.org"
 DEFAULT_CA="https://acme-v01.api.letsencrypt.org"
@@ -1474,6 +1474,60 @@ uninstallcronjob() {
   
   
 }
 }
 
 
+revoke() {
+  Le_Domain="$1"
+  if [ -z "$Le_Domain" ] ; then
+    _err "Usage: revoke domain.com"
+    return 1
+  fi
+  
+  _initpath $Le_Domain
+  if [ ! -f "$DOMAIN_CONF" ] ; then
+    _err "$Le_Domain is not a issued domain, skip."
+    return 1;
+  fi
+  
+  if [ ! -f "$CERT_PATH" ] ; then
+    _err "Cert for $Le_Domain $CERT_PATH is not found, skip."
+    return 1
+  fi
+  
+  cert="$(_getfile "${CERT_PATH}" "${BEGIN_CERT}" "${END_CERT}"| tr -d "\r\n" | _urlencode)"
+
+  if [ -z "$cert" ] ; then
+    _err "Cert for $Le_Domain is empty found, skip."
+    return 1
+  fi
+  
+  data="{\"resource\": \"revoke-cert\", \"certificate\": \"$cert\"}"
+  uri="$API/acme/revoke-cert"
+
+  _info "Try domain key first."
+  if _send_signed_request $uri "$data" "" "$CERT_KEY_PATH"; then
+    if [ -z "$response" ] ; then
+      _info "Revoke success."
+      rm -f $CERT_PATH
+      return 0
+    else 
+      _err "Revoke error by domain key."
+      _err "$resource"
+    fi
+  fi
+  
+  _info "Then try account key."
+
+  if _send_signed_request $uri "$data" "" "$ACCOUNT_KEY_PATH" ; then
+    if [ -z "$response" ] ; then
+      _info "Revoke success."
+      rm -f $CERT_PATH
+      return 0
+    else 
+      _err "Revoke error."
+      _debug "$resource"
+    fi
+  fi
+  return 1
+}
 
 
 # Detect profile file if not specified as environment variable
 # Detect profile file if not specified as environment variable
 _detect_profile() {
 _detect_profile() {
@@ -1690,6 +1744,8 @@ renewAll:
   Renew all the certs.
   Renew all the certs.
 uninstall:
 uninstall:
   Uninstall le.sh, and uninstall the cron job.
   Uninstall le.sh, and uninstall the cron job.
+revoke:
+  Revoke a cert.
 version:
 version:
   Show version info.
   Show version info.
 installcronjob:
 installcronjob: