Просмотр исходного кода

Use file based authentification for let's encrypt and move ssl certs.

Raphael Schneeberger 7 лет назад
Родитель
Сommit
98bbe7baaf
1 измененных файлов с 40 добавлено и 27 удалено
  1. 40 27
      bin/v-add-letsencrypt-domain

+ 40 - 27
bin/v-add-letsencrypt-domain

@@ -162,34 +162,38 @@ for auth in $authz; do
         $BIN/v-add-dns-record $user $domain "_acme-challenge" "TXT" $record
         check_result $? "DNS _acme-challenge record wasn't created"
     else
-        if [ "$WEB_SYSTEM" = 'nginx' ] || [ ! -z "$PROXY_SYSTEM" ]; then
-            if [ ! -z "$mail" ]; then
-                conf="$HOMEDIR/$user/conf/mail/$root_domain/$PROXY_SYSTEM.conf_letsencrypt"
-                sconf="$HOMEDIR/$user/conf/mail/$root_domain/$PROXY_SYSTEM.ssl.conf_letsencrypt"
-            else
-                conf="$HOMEDIR/$user/conf/web/$domain/$PROXY_SYSTEM.conf_letsencrypt"
-                sconf="$HOMEDIR/$user/conf/web/$domain/$PROXY_SYSTEM.ssl.conf_letsencrypt"
-            fi
-
-            if [ ! -e "$conf" ]; then
-                echo 'location ~ "^/\.well-known/acme-challenge/(.*)$" {' \
-                    > $conf
-                echo '    default_type text/plain;' >> $conf
-                echo '    return 200 "$1.'$THUMB'";' >> $conf
-                echo '}' >> $conf
-            fi
-            if [ ! -e "$sconf" ]; then
-                ln -s "$conf" "$sconf"
-            fi
-            $BIN/v-restart-proxy
-            check_result $? "Proxy restart failed" > /dev/null
+        if [ -z "$mail" ]; then
+            if [ "$WEB_SYSTEM" = 'nginx' ] || [ ! -z "$PROXY_SYSTEM" ]; then
+                if [ ! -z "$mail" ]; then
+                    conf="$HOMEDIR/$user/conf/mail/$root_domain/$PROXY_SYSTEM.conf_letsencrypt"
+                    sconf="$HOMEDIR/$user/conf/mail/$root_domain/$PROXY_SYSTEM.ssl.conf_letsencrypt"
+                else
+                    conf="$HOMEDIR/$user/conf/web/$domain/$PROXY_SYSTEM.conf_letsencrypt"
+                    sconf="$HOMEDIR/$user/conf/web/$domain/$PROXY_SYSTEM.ssl.conf_letsencrypt"
+                fi
+
+                if [ ! -e "$conf" ]; then
+                    echo 'location ~ "^/\.well-known/acme-challenge/(.*)$" {' \
+                        > $conf
+                    echo '    default_type text/plain;' >> $conf
+                    echo '    return 200 "$1.'$THUMB'";' >> $conf
+                    echo '}' >> $conf
+                fi
+                if [ ! -e "$sconf" ]; then
+                    ln -s "$conf" "$sconf"
+                fi
+                $BIN/v-restart-proxy
+                check_result $? "Proxy restart failed" > /dev/null
 
-        else
-            if [ -z "$mail" ]; then
-                well_known="$HOMEDIR/$user/web/$domain/public_html/.well-known"
             else
-                well_known="/var/lib/roundcube/.well-known"
+                well_known="$HOMEDIR/$user/web/$domain/public_html/.well-known"
+                acme_challenge="$well_known/acme-challenge"
+                mkdir -p $acme_challenge
+                echo "$token.$THUMB" > $acme_challenge/$token
+                chown -R $user:$user $well_known
             fi
+        else
+            well_known="/var/lib/roundcube/.well-known"
             acme_challenge="$well_known/acme-challenge"
             mkdir -p $acme_challenge
             echo "$token.$THUMB" > $acme_challenge/$token
@@ -262,14 +266,23 @@ if [[ $(head -n 1 $ssl_dir/$domain.ca) = "-----END CERTIFICATE-----" ]]; then
     sed -i '1,2d' $ssl_dir/$domain.ca
 fi
 
+# Rename certs for mail
+if [ ! -z "$mail" ]; then
+    mv $ssl_dir/$domain.ca $ssl_dir/$root_domain.ca
+    mv $ssl_dir/$domain.crt $ssl_dir/$root_domain.crt
+    mv $ssl_dir/$domain.csr $ssl_dir/$root_domain.csr
+    mv $ssl_dir/$domain.key $ssl_dir/$root_domain.key
+    mv $ssl_dir/$domain.pem $ssl_dir/$root_domain.pem
+fi
+
 # Adding SSL
 if [ -z "$mail" ]; then
     ssl_home=$(search_objects 'web' 'LETSENCRYPT' 'yes' 'SSL_HOME')
     $BIN/v-delete-web-domain-ssl $user $domain > /dev/null 2>&1
     $BIN/v-add-web-domain-ssl $user $domain $ssl_dir $ssl_home
 else
-    $BIN/v-delete-mail-domain-ssl $user $domain >/dev/null 2>&1
-    $BIN/v-add-mail-domain-ssl $user $domain $ssl_dir
+    $BIN/v-delete-mail-domain-ssl $user $root_domain >/dev/null 2>&1
+    $BIN/v-add-mail-domain-ssl $user $root_domain $ssl_dir
 fi
 
 if [ "$?" -ne '0' ]; then