Important note about SSL VPN compatibility for 20.0 MR1 with EoL SFOS versions and UTM9 OS. Learn more in the release notes.

This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

UTM 9.6 Lets Encrypt Zertifikate

Hallo Zusammen.

Die 9.6er Version hat ja die Möglichkeit lets encrypt Zertifikate zu verwalten.

Ich habe folgendes  Problem.

Hinter der Sophos ist ein Nextcloud Server, die über HTTPS läuft und laufen muss.

Bisher musste ich die Zertifikate manuel, durch eine Nat Regel aktualisieren.

Wie kann ich das da mit den Zertifikaten realisieren? Ich benötige ja das Zertifikat in der Sophos auf dem Nextcloud Server?

Vielen Dank im Voraus!



This thread was automatically locked due to age.
Parents
  • Hi Robert,

    die UTM kann Zertifikate über Let's Encrypt erzeugen, die durch sämtliche Module der UTM verwendet werden können.

    Wenn deine Nextcloud per DNAT veröffentlicht ist, hast du nichts davon.

    Wenn du deine Nextcloud statt per DNAT über die WAF veröffentlichst, kannst du im Virtuellen Webserver das Let's Encrypt Zertifikat verwenden.

    Dann nimmst du für die Kommunikation zwischen Nextcloud und UTM etwas selbstsigniertes und nach draußen das öffentliche.

    Alternative per UTM das Zertifikat erzeugen, exportieren und im Nextcloud einspielen - müsstest du monatlich von Hand machen.

     

    Gruß Lukas

    lna@cema

    SCA (utm+xg), SCSE, SCT

    Sophos Platinum Partner

  • lna said:

     

    Alternative per UTM das Zertifikat erzeugen, exportieren und im Nextcloud einspielen - müsstest du monatlich von Hand machen.

     

     

    Hi,

    ich hab das bei mir folgendermaßen gelöst:

    - Abruf und Vergleich der Zertifikate extern und intern

    - wenn unterschiedlich, dann Erneuerung des lokalen Zertifikats durch script

    Und so hab ich es praktisch umgesetzt (Farbiges ist zu ersetzen):

    - ssh zur UTM, dann sudo su

    - mkdir /root/.remotecmd

    - mkdir /root/.remotecmd/WWW.MEINEDOMAIN.DE

    - touch /root/cmp-cert.sh

    - chmod 700 /root/cmp-cert.sh

    - vi /root/cmp-cert.sh

    DOM=$1
    LOC=$2
    openssl s_client -connect $DOM:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' >cert_dom.pem
    openssl s_client -connect $LOC:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' >cert_loc.pem
    cmp cert_dom.pem cert_loc.pem >/dev/null
    rc=$?
    if [ $rc -eq 0 ];
    then
      echo "gleich" >/dev/null;
    else
      echo "ungleich";
      /root/.remotecmd/$DOM/remotecmd.sh $DOM $LOC
    fi

    - touch /root/.remotecmd/WWW.MEINEDOMAIN.DE/remotecmd.sh

    - chmod 700 /root/.remotecmd/WWW.MEINEDOMAIN.DE/remotecmd.sh

    - REF_MEINEDOM.key und REF_MEINEDOM.pem ermitteln:

    #/usr/local/bin/confd-client.plx
    127.0.0.1 MAIN > OBJS
    Switched to OBJS mode.
    127.0.0.1 OBJS > ca
    127.0.0.1 OBJS ca > host_key_cert
    127.0.0.1 OBJS ca host_key_cert >

    pres tab twice to show the list of all certificates

    from the list find the certificate you want to write the Let's Encrypt certificate in.

    Copy everything upto the [ sign. We will use this reference in the next step

    For example:

    REF_CaHosLetsEncryp[Let's Encrypt,ca,host_key_cert]

    The reference to use is: REF_CaHosLetsEncryp

     

    - vi /root/.remotecmd/WWW.MEINEDOMAIN.DE/remotecmd.sh

    DOM=$1
    REMOTE_SERVER=$2
    REMOTE_USER="root"
    REMOTE_PATH="/etc/letsencrypt/live" # SSL-Pfad für NGINX
    LOC_PATH="/var/storage/chroot-reverseproxy/usr/apache/conf/ssl" #Pfadinhalt wohl erst nach Zertifikatszuweisung verfügbar
    LOC_PRIVKEY="REF_MEINEDOM.key" # s.o.
    LOC_CERT="REF_MEINEDOM.pem" # s.o.

    scp $LOC_PATH/$LOC_PRIVKEY $REMOTE_USER@$REMOTE_SERVER:$REMOTE_PATH/$DOM/privkey.pem >/dev/null
    scp $LOC_PATH/$LOC_CERT $REMOTE_USER@$REMOTE_SERVER:$REMOTE_PATH/$DOM/fullchain.pem >/dev/null

    ssh $REMOTE_USER@$REMOTE_SERVER systemctl restart nginx

    - vi /etc/crontab-static

    54 2 * * * root /root/cmp-cert.sh WWW.MEINEDOMAIN.DE nexctcloud.domain.local

    - reboot

     

    Wenn das noch jemand optimieren möchte, nur zu! Am besten wäre aber eine "offizielle" Lösung...

Reply
  • lna said:

     

    Alternative per UTM das Zertifikat erzeugen, exportieren und im Nextcloud einspielen - müsstest du monatlich von Hand machen.

     

     

    Hi,

    ich hab das bei mir folgendermaßen gelöst:

    - Abruf und Vergleich der Zertifikate extern und intern

    - wenn unterschiedlich, dann Erneuerung des lokalen Zertifikats durch script

    Und so hab ich es praktisch umgesetzt (Farbiges ist zu ersetzen):

    - ssh zur UTM, dann sudo su

    - mkdir /root/.remotecmd

    - mkdir /root/.remotecmd/WWW.MEINEDOMAIN.DE

    - touch /root/cmp-cert.sh

    - chmod 700 /root/cmp-cert.sh

    - vi /root/cmp-cert.sh

    DOM=$1
    LOC=$2
    openssl s_client -connect $DOM:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' >cert_dom.pem
    openssl s_client -connect $LOC:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' >cert_loc.pem
    cmp cert_dom.pem cert_loc.pem >/dev/null
    rc=$?
    if [ $rc -eq 0 ];
    then
      echo "gleich" >/dev/null;
    else
      echo "ungleich";
      /root/.remotecmd/$DOM/remotecmd.sh $DOM $LOC
    fi

    - touch /root/.remotecmd/WWW.MEINEDOMAIN.DE/remotecmd.sh

    - chmod 700 /root/.remotecmd/WWW.MEINEDOMAIN.DE/remotecmd.sh

    - REF_MEINEDOM.key und REF_MEINEDOM.pem ermitteln:

    #/usr/local/bin/confd-client.plx
    127.0.0.1 MAIN > OBJS
    Switched to OBJS mode.
    127.0.0.1 OBJS > ca
    127.0.0.1 OBJS ca > host_key_cert
    127.0.0.1 OBJS ca host_key_cert >

    pres tab twice to show the list of all certificates

    from the list find the certificate you want to write the Let's Encrypt certificate in.

    Copy everything upto the [ sign. We will use this reference in the next step

    For example:

    REF_CaHosLetsEncryp[Let's Encrypt,ca,host_key_cert]

    The reference to use is: REF_CaHosLetsEncryp

     

    - vi /root/.remotecmd/WWW.MEINEDOMAIN.DE/remotecmd.sh

    DOM=$1
    REMOTE_SERVER=$2
    REMOTE_USER="root"
    REMOTE_PATH="/etc/letsencrypt/live" # SSL-Pfad für NGINX
    LOC_PATH="/var/storage/chroot-reverseproxy/usr/apache/conf/ssl" #Pfadinhalt wohl erst nach Zertifikatszuweisung verfügbar
    LOC_PRIVKEY="REF_MEINEDOM.key" # s.o.
    LOC_CERT="REF_MEINEDOM.pem" # s.o.

    scp $LOC_PATH/$LOC_PRIVKEY $REMOTE_USER@$REMOTE_SERVER:$REMOTE_PATH/$DOM/privkey.pem >/dev/null
    scp $LOC_PATH/$LOC_CERT $REMOTE_USER@$REMOTE_SERVER:$REMOTE_PATH/$DOM/fullchain.pem >/dev/null

    ssh $REMOTE_USER@$REMOTE_SERVER systemctl restart nginx

    - vi /etc/crontab-static

    54 2 * * * root /root/cmp-cert.sh WWW.MEINEDOMAIN.DE nexctcloud.domain.local

    - reboot

     

    Wenn das noch jemand optimieren möchte, nur zu! Am besten wäre aber eine "offizielle" Lösung...

Children
  • Es gibt eine offizielle Lösung: die REST-API der UTM. Über die kann man das komplette Let's Encrypt-Zertifikat aus der UTM abrufen und weiterverwenden.

    Ich habe mir hierzu ein kleines Bash-Script geschrieben, das man auf dem Nextcloud-Server laufen lassen kann. Siehe: community.sophos.com/.../let-s-encrypt-used-for

    ----------
    Sophos user, admin and reseller.
    Private Setup:

    • XG: HPE DL20 Gen9 (Core i3-7300, 8GB RAM, 120GB SSD) | XG 18.0 (Home License) with: Web Protection, Site-to-Site-VPN (IPSec, RED-Tunnel), Remote Access (SSL, HTML5)
    • UTM: 2 vCPUs, 2GB RAM, 50GB vHDD, 2 vNICs on vServer (KVM) | UTM 9.7 (Home License) with: Email Protection, Webserver Protection, RED-Tunnel (server)