Ucr commit erzeugt defekte apache2-Config

german

#1

Hallo zusammen,

bei einem meiner UCS ist die /etc/apache2/sites-enabled/default-ssl nach einem Updates jedes Mal defekt, so dass die UMC nicht aufrufbar ist:

[code]root@server005:~# cat /etc/apache2/sites-enabled/default-ssl

Warning: This file is auto-generated and might be overwritten by

univention-config-registry.

Please edit the following file(s) instead:

Warnung: Diese Datei wurde automatisch generiert und kann durch

univention-config-registry überschrieben werden.

Bitte bearbeiten Sie an Stelle dessen die folgende(n) Datei(en):

/etc/univention/templates/files/etc/apache2/sites-available/ssl.d/00start

/etc/univention/templates/files/etc/apache2/sites-available/ssl.d/10hsts

/etc/univention/templates/files/etc/apache2/sites-available/ssl.d/10univention-appcenter

/etc/univention/templates/files/etc/apache2/sites-available/ssl.d/99end

NameVirtualHost *:443 Include /etc/apache2/ucs-sites.conf.d SSLEngine on SSLProxyEngine on SSLCertificateFile /tmp/tmp.Hd2vNR4zUA SSLCertificateKeyFile /tmp/tmp.cEzueOTSTy SSLCACertificateFile /tmp/tmp.fLypcH1Sm1
    #SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown

    ### To enable special log format for HTTPS-access
    # LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i" %p" combinedssl
    # CustomLog /var/log/apache2/access.log combinedssl     ## with port number
[/code] Man beachte die Einträge für die SSL-Zertifikate!

Der Apache startet wegen der defekten Einträge nicht:

root@server005:~# apachectl -tS Syntax error on line 20 of /etc/apache2/sites-enabled/default-ssl: SSLCertificateFile: file '/tmp/tmp.Hd2vNR4zUA' does not exist or is empty Action '-tS' failed. The Apache error log may have more information.

Wenn ich diese von Hand korrigiere auf:

SSLCertificateFile /etc/univention/ssl/server005.my.domain.com/cert.pem SSLCertificateKeyFile /etc/univention/ssl/server005.my.domain.com/private.key SSLCACertificateFile /etc/univention/ssl/ucsCA/CAcert.pem
… läuft alles wieder. Bis zum nächsten

ucr commit /etc/apache2/sites-enabled/default-ssl

Warum zieht hier das Template nicht die korrekten Werte?

root@server005:~# grep pem /etc/univention/templates/files/etc/apache2/sites-available/ssl.d/* /etc/univention/templates/files/etc/apache2/sites-available/ssl.d/00start: print ' SSLCertificateFile /etc/univention/ssl/%s.%s/cert.pem' % (configRegistry.get('hostname'), configRegistry.get('domainname')) /etc/univention/templates/files/etc/apache2/sites-available/ssl.d/00start: print ' SSLCACertificateFile /etc/univention/ssl/ucsCA/CAcert.pem'
Die Werte aus

ucr get hostname ucr get domainname
werden jedenfalls korrekt angezeigt.

Current UCS version is 4.1-4 errata375

Danke
Ulf


#2

Hallo Ulf,

ich denke mal, Dateien in /etc/apache2/sites-enabled zu committen ist falsch. In …enabled sollten immer nur Symlinks auf die korrespondierenden Dateien in …available liegen (die werden durch a2enmod/a2ensite angelegt und durch a2dismod/a2dissite wieder gelöscht).

Ich würde das zuerst bereinigen:
[ul]
[li] /etc/apache2/sites-enabled/default-ssl löschen[/li]
[li] den Symlink wiederherstellen mit a2ensite default-ssl[/li]
[li] /etc/apache2/sites-available/default-ssl neu committen[/li][/ul]

Wenn da wieder diese seltsamen Dateinamen zustandekommen, müßte man den Weg der Variablen mal prüfen; die Konfugirationsdatei wird aus insgesamt vier Templates zusammengesetzt:

/etc/univention/templates/files/etc/apache2/sites-available/ssl.d/00start
/etc/univention/templates/files/etc/apache2/sites-available/ssl.d/10hsts
/etc/univention/templates/files/etc/apache2/sites-available/ssl.d/99end
/etc/univention/templates/files/etc/apache2/sites-available/ssl.d/10univention-appcenter

Das SSLCertificateFile wird in 00start ab Zeile 10 gesetzt:

if configRegistry.get('apache2/ssl/certificate'):
        print ' SSLCertificateFile %s' % configRegistry.get('apache2/ssl/certificate')
else:
        print ' SSLCertificateFile /etc/univention/ssl/%s.%s/cert.pem' % (configRegistry.get('hostname'), configRegistry.get('domainname'))

Laut diesem Quelltext wird zuerst in apache2/ssl/certificate geschaut, bevor Hostname und Domainname herangezogen werden. Was steht denn in

ucr get apache2/ssl/certificate

viele Grüße
Frank Greif.


#3

Hallo Greif,

das war genau der richtige Ansatz. Danke.

Die Symlinks waren auch noch ganz nach Debian-Standard eingerichtet. Da brauchte ich nichts löschen oder neu setzen. Schuld waren einfach die falschen Variablen:

[code]root@server005:~# ucr get apache2/ssl/certificate
/tmp/tmp.Hd2vNR4zUA

root@server005:~# ucr get apache2/ssl/key
/tmp/tmp.cEzueOTSTy

root@server005:~# ucr get apache2/ssl/ca
/tmp/tmp.fLypcH1Sm1
[/code]
Woher die kommen ist mir schleierhaft, aber auch egal. Ich habe sie einfach gelöscht.

ucr unset apache2/ssl/certificate ucr unset apache2/ssl/key ucr unset apache2/ssl/ca

Super vielen Dank für die HIlfe. Wieder ein Puzzle-Stein mehr verstanden. Das UCS-System ist einfach Klasse.

Viele Grüße
Ulf


#4

Hallo Greif,

das war genau der richtige Ansatz. Danke.

Die Symlinks waren auch noch ganz nach Debian-Standard eingerichtet. Da brauchte ich nichts löschen oder neu setzen. Schuld waren einfach die falschen Variablen:

root@server005:~# ucr get apache2/ssl/certificate
/tmp/tmp.Hd2vNR4zUA
root@server005:~# ucr get apache2/ssl/key
/tmp/tmp.cEzueOTSTy
root@server005:~# ucr get apache2/ssl/ca
/tmp/tmp.fLypcH1Sm1

Woher die kommen ist mir schleierhaft, aber auch egal. Ich habe sie einfach gelöscht.

ucr unset apache2/ssl/certificate
ucr unset apache2/ssl/key
ucr unset apache2/ssl/ca

Super vielen Dank für die HIlfe. Wieder ein Puzzle-Stein mehr verstanden. Das UCS-System ist einfach Klasse.

Viele Grüße
Ulf