Browse Source

Use letsencrypt cert for mumble

Bob Mottram 7 years ago
parent
commit
ce071bcc7b
3 changed files with 66 additions and 26 deletions
  1. 2
    5
      src/freedombone-app-matrix
  2. 46
    7
      src/freedombone-app-mumble
  3. 18
    14
      src/freedombone-utils-web

+ 2
- 5
src/freedombone-app-matrix View File

@@ -613,13 +613,10 @@ function install_matrix {
613 613
             if [ -f /etc/ssl/certs/${MATRIX_DOMAIN_NAME}.dhparam ]; then
614 614
                 rm /etc/ssl/certs/${MATRIX_DOMAIN_NAME}.dhparam
615 615
             fi
616
-            echo $'Obtaining certificate for the main domain'
616
+            echo $'Obtaining certificate for the matrix domain'
617 617
             function_check create_site_certificate
618 618
             create_site_certificate ${MATRIX_DOMAIN_NAME} 'yes'
619
-
620
-            if [[ $ONION_ONLY == "no" ]]; then
621
-                chmod 755 /etc/ssl/certs/${MATRIX_DOMAIN_NAME}.dhparam
622
-            fi
619
+            chmod 755 /etc/ssl/certs/${MATRIX_DOMAIN_NAME}.dhparam
623 620
 
624 621
             if [ -f /etc/ssl/certs/${MATRIX_DOMAIN_NAME}.crt ]; then
625 622
                 echo $'Incorrect certificate generated'

+ 46
- 7
src/freedombone-app-mumble View File

@@ -65,7 +65,9 @@ function reconfigure_mumble {
65 65
 }
66 66
 
67 67
 function upgrade_mumble {
68
-    echo -n ''
68
+    if [ -d /etc/letsencrypt ]; then
69
+        usermod -a -G ssl-cert mumble-server
70
+    fi
69 71
 }
70 72
 
71 73
 function backup_local_mumble {
@@ -200,11 +202,39 @@ function install_mumble {
200 202
         fi
201 203
     fi
202 204
 
205
+    if [[ ${ONION_ONLY} == 'no' ]]; then
206
+        if [ ! -d /var/www/${DEFAULT_DOMAIN_NAME}/htdocs ]; then
207
+            mkdir /var/www/${DEFAULT_DOMAIN_NAME}/htdocs
208
+        fi
209
+        if [ ! -f /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem ]; then
210
+            if [ -f /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.crt ]; then
211
+                rm /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.crt
212
+            fi
213
+            if [ -f /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.dhparam ]; then
214
+                rm /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.dhparam
215
+            fi
216
+            echo $'Obtaining certificate for the main domain'
217
+            function_check create_site_certificate
218
+            create_site_certificate ${DEFAULT_DOMAIN_NAME} 'yes'
219
+            chmod 755 /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.dhparam
220
+
221
+            if [ -f /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.crt ]; then
222
+                echo $'Incorrect certificate generated'
223
+                exit 78352
224
+            fi
225
+        fi
226
+        chgrp -R ssl-cert /etc/letsencrypt
227
+        chmod -R g=rX /etc/letsencrypt
228
+    fi
229
+
230
+
203 231
     # Make an ssl cert for the server
204
-    if [ ! -f /etc/ssl/certs/mumble.dhparam ]; then
205
-        ${PROJECT_NAME}-addcert -h mumble --dhkey $DH_KEYLENGTH
206
-        function_check check_certificates
207
-        check_certificates mumble
232
+    if [ ! -f /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem ]; then
233
+        if [ ! -f /etc/ssl/certs/mumble.dhparam ]; then
234
+            ${PROJECT_NAME}-addcert -h mumble --dhkey $DH_KEYLENGTH
235
+            function_check check_certificates
236
+            check_certificates mumble
237
+        fi
208 238
     fi
209 239
 
210 240
     # Check that the cert was created
@@ -241,8 +271,13 @@ function install_mumble {
241 271
         echo 'allowping=False' >> /etc/mumble-server.ini
242 272
     fi
243 273
     sed -i 's|allowping=.*|allowping=False|g' /etc/mumble-server.ini
244
-    sed -i 's|#sslCert=.*|sslCert=/var/lib/mumble-server/mumble.pem|g' /etc/mumble-server.ini
245
-    sed -i 's|#sslKey=.*|sslKey=/var/lib/mumble-server/mumble.key|g' /etc/mumble-server.ini
274
+    if [ ! -f /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem ]; then
275
+        sed -i 's|#sslCert=.*|sslCert=/var/lib/mumble-server/mumble.pem|g' /etc/mumble-server.ini
276
+        sed -i 's|#sslKey=.*|sslKey=/var/lib/mumble-server/mumble.key|g' /etc/mumble-server.ini
277
+    else
278
+        sed -i "s|#sslCert=.*|sslCert=/etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem|g" /etc/mumble-server.ini
279
+        sed -i "s|#sslKey=.*|sslKey=/etc/ssl/private/${DEFAULT_DOMAIN_NAME}.key|g" /etc/mumble-server.ini
280
+    fi
246 281
     sed -i 's|#certrequired=.*|certrequired=True|g' /etc/mumble-server.ini
247 282
     sed -i 's|users=100|users=10|g' /etc/mumble-server.ini
248 283
     sed -i 's|#channelnestinglimit=10|channelnestinglimit=10|g' /etc/mumble-server.ini
@@ -258,6 +293,10 @@ function install_mumble {
258 293
     # turn off logs by default
259 294
     sed -i 's|logfile=.*|logfile=/dev/null|g' /etc/mumble-server.ini
260 295
 
296
+    if [ -d /etc/letsencrypt ]; then
297
+        usermod -a -G ssl-cert mumble-server
298
+    fi
299
+
261 300
     update_default_domain
262 301
     systemctl restart mumble-server
263 302
 

+ 18
- 14
src/freedombone-utils-web View File

@@ -706,13 +706,30 @@ function update_default_domain {
706 706
                 fi
707 707
             fi
708 708
 
709
+            if [ -f /etc/mumble-server.ini ]; then
710
+                if [ ! -f /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem ]; then
711
+                    if ! grep -q "mumble.pem" /etc/mumble-server.ini; then
712
+                        sed -i 's|sslCert=.*|sslCert=/var/lib/mumble-server/mumble.pem|g' /etc/mumble-server.ini
713
+                        sed -i 's|sslKey=.*|sslKey=/var/lib/mumble-server/mumble.key|g' /etc/mumble-server.ini
714
+                        systemctl restart mumble
715
+                    fi
716
+                else
717
+                    if ! grep -q "${DEFAULT_DOMAIN_NAME}.pem" /etc/mumble-server.ini; then
718
+                        usermod -a -G ssl-cert mumble-server
719
+                        sed -i "s|sslCert=.*|sslCert=/etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem|g" /etc/mumble-server.ini
720
+                        sed -i "s|sslKey=.*|sslKey=/etc/ssl/private/${DEFAULT_DOMAIN_NAME}.key|g" /etc/mumble-server.ini
721
+                        systemctl restart mumble
722
+                    fi
723
+                fi
724
+            fi
725
+
709 726
             if [ ! -d /etc/prosody/certs ]; then
710 727
                 mkdir /etc/prosody/certs
711 728
             fi
712
-
713 729
             cp /etc/ssl/private/xmpp* /etc/prosody/certs
714 730
             cp /etc/ssl/certs/xmpp* /etc/prosody/certs
715 731
             if [ /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem ]; then
732
+                usermod -a -G ssl-cert prosody
716 733
                 sed -i "s|/etc/prosody/certs/xmpp.key|/etc/ssl/private/${DEFAULT_DOMAIN_NAME}.key|g" /etc/prosody/conf.avail/xmpp.cfg.lua
717 734
                 sed -i "s|/etc/prosody/certs/xmpp.crt|/etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem|g" /etc/prosody/conf.avail/xmpp.cfg.lua
718 735
 
@@ -742,19 +759,6 @@ function update_default_domain {
742 759
             systemctl reload prosody
743 760
         fi
744 761
 
745
-        if [ -d /var/lib/mumble-server ]; then
746
-            if [[ "$(cert_exists ${DEFAULT_DOMAIN_NAME} pem)" == "1" ]]; then
747
-                cp /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.pem /var/lib/mumble-server/mumble.pem
748
-                cp /etc/ssl/certs/${DEFAULT_DOMAIN_NAME}.dhparam /var/lib/mumble-server/mumble.dhparam
749
-                cp /etc/ssl/private/${DEFAULT_DOMAIN_NAME}.key /var/lib/mumble-server/mumble.key
750
-                chown -R mumble-server:mumble-server /var/lib/mumble-server
751
-                chmod -R 700 /var/lib/mumble-server/*.pem
752
-                chmod -R 700 /var/lib/mumble-server/*.key
753
-                chmod -R 700 /var/lib/mumble-server/*.dhparam
754
-                systemctl restart mumble-server
755
-            fi
756
-        fi
757
-
758 762
         if [ -d /home/znc/.znc ]; then
759 763
             echo $'znc found'
760 764
             if [[ "$(cert_exists ${DEFAULT_DOMAIN_NAME} pem)" == "1" ]]; then