richtig, gibt es schon eine Weile nicht mehr schlüssigIch konnte dazu nichts finden.
Super! :-D Wird das denn noch offiziell unterstützt?Fehlt es direkt an der / einer Anleitung oder habt ihr ein Problem?
richtig, gibt es schon eine Weile nicht mehr schlüssig
Das wurde in etwa zum Zeitpunkt der Einführung des lustigen roten Banner über den Unterforen Eigenständig gehostet und On-Premise zusammen mit den 3CX Schulungsunterlagen entfernt
Ja, mit kostenpflichtigen Support. Wir installieren und betreiben bisher ausschließlich so.Wird das denn noch offiziell unterstützt?
Nein, nicht wirklich. Ist alles wie früher. Sinnvoll ist es, wenn die Linux Maschine den gleichen hostnamen hat wie der FQDN, z.B. pbx.meinedomain.de. So funktionieren bei uns alle Skripte.Tipps zur Einrichtung?
#!/bin/bash
#
# AKTUELLE VERSION: vorab und fremdes Ausstellen des Cert auf der pfSense und von da aus Upload in die 3CX als User sshuser
#
# dieses Skript pflegt die von der pfSense bereitgestellten LE Zertifikate nur in die 3CX ein
#
# bash Skript zum Einpflegen extern bereitgestellter LE Zertifikate auf einem Client (hier: unter Debian 3CX, z.B. )
#
# Problem:
# - es wird ein weiterer ssh Benutzer in der 3CX benoetigt, es geht nicht anders, das ist ueblicherweise der Benutzer sshuser
# - nur root kann vmtl. im Debian div. Dienste neu starten lassen, daher laeuft dieses Skript im Debian mit root Rechten
# - die Zertifikate werden vorab irgendwo anders (i.d.R. auf der pfSense Firewall) erstellt, verlaengert und dem Client hier bereitgestellt
#
# die Ausfuehrung ist daher leider zweigeteilt
# Teil 1:
# - auf der pfSense wird die Zertifikatverlaengerung angestossen und durchgefuehrt falls erforderlich
# - im Anschluss daran werden die Zertifikate als eingeschraenkter Benutzer in die 3CX geladen
# Teil 2:
# - auf der 3CX laeuft dieses Skript, welches die bereitgestellten und die aktuell verwendeten Zertifikate ueberprueft
# - falls erforderlich, werden diese umbenannt, an die richtigen Stellen kopiert, die Rechte entspr. gesetzt und Dienste
# neu gestartet
#
#
# es wird auf dem 3CX Client Computer (debian) benoetigt:
# - ein extra Benutzer mit ssh Zugang, i.d.R. der Benutzer sshuser, anlegen wie folgt:
# adduser --disabled-password --gecos "" sshuser; adduser sshuser users; echo sshuser:passwortsuperstrenggeheim | chpasswd
# - dieses Skript, es sollte unter /root liegen und ausfuehrbar sein
# - ein cron job: (crontab -l ; echo "30 3 * * * /root/clientcert-renew-pbx.domain.de.sh >/dev/null 2>&1") | crontab -
#
# es wird auf der pfSense benoetigt:
# - installiertes Paket cron
# - Paket haproxy und Paket acme, alles vorab umfassend eingerichtet,
# bei der Zertifikatverlaengerung kommt in die Actions list folgende Zeile:
# scp /conf/acme/pbx.* sshuser@pbxip:/home/sshuser
# - vorab noch die Einrichtung des passwortlosen ssh Zuganges von der pfSense auf die 3CX,
# dazu in der pfSense unter Diagnostics / Command Prompt / Execute Shell Command diese folgenden Zeilen je einzeln ausfuehren:
# ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -q -N '' # generiere einen key fuer ssh, ohne Passphrase (root Kennwort) WENN ES DAS NICHT SCHON GIBT
# ssh-keyscan pbxip >> ~/.ssh/known_hosts # hole den hostkey des Zielsystems
# ssh-copy-id -i ~/.ssh/id_rsa.pub sshuser@pbxip # per ssh von einer Shell aus ausführen!
# scp /conf/acme/pbx.* sshuser@pbxip:/home/sshuser # bei Bedarf: die Zertifikate auf den Zielcoputer kopieren
#
# Kontrolle ob ssh key schon besteht und das Zielsystem bereits in der Liste ist:
# ls -ahl ~/.ssh/; cat ~/.ssh/known_hosts
#
#
# Suchstichworte: pfsense haproxy letsencrypt upload automatisch skript script shell bash debian 3cx pbx remote
#
_sshusername="sshuser" # der auf der 3CX extra angelegte Benutzer
_sshpassword="superstrenggeheim" # dessen Passwort, wird hier im Skript gar nicht benoetigt :)
_fqdn=$(hostname -f) # der FQDN des Letsenrypt Zertifikates abgeleitet vom vollstaendigen Namen der Maschine, ist auch genau so unter diesem Namen in der pfSense drin
_doupdate=$false
_actcerthash=$(cat /home/$_sshusername/$_fqdn.fullchain | md5sum)
_actkeyhash=$(cat /home/$_sshusername/$_fqdn.key | md5sum)
_tcxcerthash=$(cat /var/lib/3cxpbx/Bin/nginx/conf/Instance1/$_fqdn-crt.pem | md5sum)
_tcxkeyhash=$(cat /var/lib/3cxpbx/Bin/nginx/conf/Instance1/$_fqdn-key.pem | md5sum)
_sipcerthash=$(cat /var/lib/3cxpbx/Instance1/Bin/Cert/domain_cert_$_fqdn.pem | md5sum)
_sipkeyhash=$(cat /var/lib/3cxpbx/Instance1/Bin/Cert/domain_key_$_fqdn.pem | md5sum)
if [[ ($_tcxcerthash != $_actcerthash) || ($_sipcerthash != $_actcerthash) || ($_tcxkeyhash != $_actkeyhash) || ($_sipkeyhash != $_actkeyhash) ]]; then
rm /var/lib/3cxpbx/Bin/nginx/conf/Instance1/$_fqdn-crt.pem
rm /var/lib/3cxpbx/Bin/nginx/conf/Instance1/$_fqdn-key.pem
cp /home/$_sshusername/$_fqdn.fullchain /var/lib/3cxpbx/Bin/nginx/conf/Instance1/$_fqdn-crt.pem # nicht cert.pem ?!?
cp /home/$_sshusername/$_fqdn.key /var/lib/3cxpbx/Bin/nginx/conf/Instance1/$_fqdn-key.pem
chown phonesystem:phonesystem /var/lib/3cxpbx/Bin/nginx/conf/Instance1/$_fqdn-crt.pem
chown phonesystem:phonesystem /var/lib/3cxpbx/Bin/nginx/conf/Instance1/$_fqdn-key.pem
chmod 644 /var/lib/3cxpbx/Bin/nginx/conf/Instance1/$_fqdn-crt.pem
chmod 644 /var/lib/3cxpbx/Bin/nginx/conf/Instance1/$_fqdn-key.pem
/etc/init.d/nginx reload
rm /var/lib/3cxpbx/Instance1/Bin/Cert/domain_cert_$_fqdn.pem
rm /var/lib/3cxpbx/Instance1/Bin/Cert/domain_key_$_fqdn.pem
cp /home/$_sshusername/$_fqdn.fullchain /var/lib/3cxpbx/Instance1/Bin/Cert/domain_cert_$_fqdn.pem
cp /home/$_sshusername/$_fqdn.key /var/lib/3cxpbx/Instance1/Bin/Cert/domain_key_$_fqdn.pem
chown phonesystem:phonesystem /var/lib/3cxpbx/Instance1/Bin/Cert/domain_cert_$_fqdn.pem
chown phonesystem:phonesystem /var/lib/3cxpbx/Instance1/Bin/Cert/domain_key_$_fqdn.pem
chmod 644 /var/lib/3cxpbx/Instance1/Bin/Cert/domain_cert_$_fqdn.pem
chmod 644 /var/lib/3cxpbx/Instance1/Bin/Cert/domain_key_$_fqdn.pem
systemctl stop 3CXPhoneSystem01
# _services=$(systemctl list-unit-files --state=enabled |grep -i 3cx |awk '{printf "%s\n", $1}')
# for _service in $_services; do systemctl is-active --quiet $_service || systemctl start $_service; done
for _service in $(systemctl list-unit-files --state=enabled |grep -i service |awk '{printf "%s\n", $1}'); do systemctl is-active --quiet $_service || systemctl start $_service; done
_doupdate=$true
fi
exit 1
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen
Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.
Prüfen Sie Ihren Posteingang!
Wir haben Ihnen eine E-Mail geschickt. Klicken Sie auf die Schaltfläche im E-Mail-Text, um Ihre E-Mail-Adresse zu verifizieren – Wenn Sie keine Nachricht finden können, dann überprüfen Sie auch Ihren Spam-Ordner.