From 3e1cd6151de1259b3aaabc3c9659247ee7fe8a68 Mon Sep 17 00:00:00 2001 From: damencho Date: Fri, 6 Oct 2017 16:51:30 -0500 Subject: [PATCH] Updates prosody config to have certificates for the auth. domain. The certificates are generated on new install or upgrade and added to the current configuration and also to the trusted certificates on the local machine. --- debian/jitsi-meet-prosody.postinst | 49 ++++++++++++++++-------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/debian/jitsi-meet-prosody.postinst b/debian/jitsi-meet-prosody.postinst index 13d9582f6..d6a356528 100644 --- a/debian/jitsi-meet-prosody.postinst +++ b/debian/jitsi-meet-prosody.postinst @@ -103,27 +103,6 @@ case "$1" in echo -e "\nInclude \"conf.d/*.cfg.lua\"" >> $PROSODY_CONFIG_OLD fi fi - # UPGRADE to server side focus check if focus is configured - if [ -f $PROSODY_HOST_CONFIG ] && ! grep -q "VirtualHost \"$JICOFO_AUTH_DOMAIN\"" $PROSODY_HOST_CONFIG; then - echo -e "\nVirtualHost \"$JICOFO_AUTH_DOMAIN\"" >> $PROSODY_HOST_CONFIG - echo -e " authentication = \"internal_plain\"\n" >> $PROSODY_HOST_CONFIG - sed -i "s/Component \"conference.$JVB_HOSTNAME\" \"muc\"/Component \"conference.$JVB_HOSTNAME\" \"muc\"\nadmins = { \"$JICOFO_AUTH_USER@$JICOFO_AUTH_DOMAIN\" }\n/g" $PROSODY_HOST_CONFIG - echo -e "Component \"focus.$JVB_HOSTNAME\"" >> $PROSODY_HOST_CONFIG - echo -e " component_secret=\"$JICOFO_SECRET\"\n" >> $PROSODY_HOST_CONFIG - PROSODY_CREATE_JICOFO_USER="true" - # UPGRADE to server side focus on old config(/etc/prosody/prosody.cfg.lua) - elif [ ! -f $PROSODY_HOST_CONFIG ] && ! grep -q "VirtualHost \"$JICOFO_AUTH_DOMAIN\"" $PROSODY_CONFIG_OLD; then - echo -e "\nVirtualHost \"$JICOFO_AUTH_DOMAIN\"" >> $PROSODY_CONFIG_OLD - echo -e " authentication = \"internal_plain\"\n" >> $PROSODY_CONFIG_OLD - if ! grep -q "admins = { }" $PROSODY_CONFIG_OLD; then - echo -e "admins = { \"$JICOFO_AUTH_USER@$JICOFO_AUTH_DOMAIN\" }\n" >> $PROSODY_CONFIG_OLD - else - sed -i "s/admins = { }/admins = { \"$JICOFO_AUTH_USER@$JICOFO_AUTH_DOMAIN\" }\n/g" $PROSODY_CONFIG_OLD - fi - echo -e "Component \"focus.$JVB_HOSTNAME\"" >> $PROSODY_CONFIG_OLD - echo -e " component_secret=\"$JICOFO_SECRET\"\n" >> $PROSODY_CONFIG_OLD - PROSODY_CREATE_JICOFO_USER="true" - fi if [ "$PROSODY_CREATE_JICOFO_USER" = "true" ]; then # create 'focus@auth.domain' prosody user @@ -139,9 +118,33 @@ case "$1" in "/O=$DOMAIN/OU=$HOST/CN=$JVB_HOSTNAME/emailAddress=webmaster@$HOST.$DOMAIN" \ -keyout /var/lib/prosody/$JVB_HOSTNAME.key \ -out /var/lib/prosody/$JVB_HOSTNAME.crt + ln -sf /var/lib/prosody/$JVB_HOSTNAME.key /etc/prosody/certs/$JVB_HOSTNAME.key + ln -sf /var/lib/prosody/$JVB_HOSTNAME.crt /etc/prosody/certs/$JVB_HOSTNAME.crt + fi + + if [ ! -f /var/lib/prosody/$JICOFO_AUTH_DOMAIN.crt ]; then + HOST="$( (hostname -s; echo localhost) | head -n 1)" + DOMAIN="$( (hostname -d; echo localdomain) | head -n 1)" + openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj \ + "/O=$DOMAIN/OU=$HOST/CN=$JICOFO_AUTH_DOMAIN/emailAddress=webmaster@$HOST.$DOMAIN" \ + -keyout /var/lib/prosody/$JICOFO_AUTH_DOMAIN.key \ + -out /var/lib/prosody/$JICOFO_AUTH_DOMAIN.crt + + AUTH_KEY_FILE="/etc/prosody/certs/$JICOFO_AUTH_DOMAIN.key" + AUTH_CRT_FILE="/etc/prosody/certs/$JICOFO_AUTH_DOMAIN.crt" + + ln -sf /var/lib/prosody/$JICOFO_AUTH_DOMAIN.key $AUTH_KEY_FILE + ln -sf /var/lib/prosody/$JICOFO_AUTH_DOMAIN.crt $AUTH_CRT_FILE + ln -sf /var/lib/prosody/$JICOFO_AUTH_DOMAIN.crt /usr/local/share/ca-certificates/$JICOFO_AUTH_DOMAIN.crt + + update-ca-certificates + + # now let's add the ssl cert for the auth. domain (we use # as a sed delimiter cause filepaths are confused with default / delimiter) + sed -i "s#VirtualHost \"$JICOFO_AUTH_DOMAIN\"#VirtualHost \"$JICOFO_AUTH_DOMAIN\"\n ssl = {\n key = \"$AUTH_KEY_FILE\";\n certificate = \"$AUTH_CRT_FILE\";\n \}#g" $PROSODY_HOST_CONFIG + + # trigger a restart + PROSODY_CONFIG_PRESENT="false" fi - ln -sf /var/lib/prosody/$JVB_HOSTNAME.key /etc/prosody/certs/$JVB_HOSTNAME.key - ln -sf /var/lib/prosody/$JVB_HOSTNAME.crt /etc/prosody/certs/$JVB_HOSTNAME.crt if [ "$PROSODY_CONFIG_PRESENT" = "false" ]; then invoke-rc.d prosody restart