diff --git a/src/freedombone-renew-cert b/src/freedombone-renew-cert
index ce0b19b14081baba4e0f7698c13244b026d40c34..76b3493278e2e51e0f1a320df8168a98e9071d6a 100755
--- a/src/freedombone-renew-cert
+++ b/src/freedombone-renew-cert
@@ -39,11 +39,19 @@ function show_help {
     echo ''
     echo '     --help                  Show help'
     echo '  -h --hostname [name]       Hostname'
-    echo '  -p --provider [name]       eg. startssl'
+    echo '  -p --provider [name]       eg. startssl/letsencrypt'
     echo ''
     exit 0
 }
 
+function renew_startssl {
+    echo "Renewing Let's Encrypt certificate"
+	letsencrypt renew --cert-path /etc/ssl/certs/$HOSTNAME.pem
+	if [ ! "$?" = "0" ]; then
+		echo "Unable to renew Let's encrypt certificate"
+	fi
+}
+
 function renew_startssl {
     echo 'Renewing StartSSL certificate'
     if [ -s /etc/ssl/certs/$HOSTNAME.new.crt ]; then
@@ -184,7 +192,11 @@ fi
 if [[ $PROVIDER == 'startssl' || $PROVIDER == 'StartSSL' ]]; then
     renew_startssl
 else
-    echo "$PROVIDER is not currently supported"
+	if [[ $PROVIDER == 'letsencrypt' ]]; then
+		renew_letsencrypt
+	else
+		echo "$PROVIDER is not currently supported"
+	fi
 fi
 
 exit 0
diff --git a/src/freedombone-sec b/src/freedombone-sec
index 49555ec7eb4f0d5bbd22efeaf6c05686eb7ea5d6..8fd1885715ea3ed8df4c451f8bbdc68721ad6d83 100755
--- a/src/freedombone-sec
+++ b/src/freedombone-sec
@@ -376,6 +376,7 @@ function regenerate_dh_keys {
 }
 
 function renew_startssl {
+  renew_domain=
   data=$(tempfile 2>/dev/null)
   trap "rm -f $data" 0 1 2 5 15
   dialog --title "Renew a StartSSL certificate" \
@@ -385,11 +386,74 @@ function renew_startssl {
   case $sel in
       0)
           renew_domain=$(<$data)
-          if [[ $renew_domain == *"."* ]]; then
-              freedombone-renew-cert -h $renew_domain -p startssl
-          fi
           ;;
   esac
+
+  if [ ! $renew_domain ]; then
+	  return
+  fi
+
+  if [[ $renew_domain == "http"* ]]; then
+      dialog --title "Renew a StartSSL certificate" \
+             --msgbox "Don't include the https://" 6 40
+	  return
+  fi
+
+  if [ ! -f /etc/ssl/certs/${renew_domain}.dhparam ]; then
+      dialog --title "Renew a StartSSL certificate" \
+             --msgbox "An existing certificate for $renew_domain was not found" 6 40
+	  return
+  fi
+  
+  if [[ $renew_domain != *"."* ]]; then
+      dialog --title "Renew a StartSSL certificate" \
+             --msgbox "Invalid domain name: $renew_domain" 6 40
+	  return	  
+  fi
+
+  freedombone-renew-cert -h $renew_domain -p startssl
+
+  exit 0
+}
+
+function renew_letsencrypt {
+  renew_domain=
+  data=$(tempfile 2>/dev/null)
+  trap "rm -f $data" 0 1 2 5 15
+  dialog --title "Renew a Let's Encrypt certificate" \
+         --backtitle "Freedombone Security Settings" \
+         --inputbox "Enter the domain name" 8 60 2>$data
+  sel=$?
+  case $sel in
+      0)
+          renew_domain=$(<$data)
+          ;;
+  esac
+
+  if [ ! $renew_domain ]; then
+	  return
+  fi
+
+  if [[ $renew_domain == "http"* ]]; then
+      dialog --title "Renew a Let's Encrypt certificate" \
+             --msgbox "Don't include the https://" 6 40
+	  return
+  fi
+
+  if [ ! -f /etc/ssl/certs/${renew_domain}.dhparam ]; then
+      dialog --title "Renew a Let's Encrypt certificate" \
+             --msgbox "An existing certificate for $renew_domain was not found" 6 40
+	  return
+  fi
+  
+  if [[ $renew_domain != *"."* ]]; then
+      dialog --title "Renew a Let's Encrypt certificate" \
+             --msgbox "Invalid domain name: $renew_domain" 6 40
+	  return	  
+  fi
+
+  freedombone-renew-cert -h $renew_domain -p letsencrypt
+
   exit 0
 }
 
@@ -401,6 +465,7 @@ function housekeeping {
   options=(1 "Regenerate ssh host keys" off
            2 "Regenerate Diffie-Hellman keys" off
            3 "Renew a StartSSL certificate" off)
+           4 "Renew Let's Encrypt certificate" off)
   choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
   clear
   for choice in $choices
@@ -415,6 +480,9 @@ function housekeeping {
       3)
         renew_startssl
         ;;
+      4)
+        renew_letsencrypt
+        ;;
     esac
   done
 }