Letsencrypt: User-Rechte?!?

Hoeze

Lieutenant
Registriert
Juni 2010
Beiträge
696
Hi,
ich hab gerade Let's Encrypt ausprobiert, das ist echt verdammt leicht zu benutzen.
Allerdings hab ich schon einen Nginx am Laufen, mit CAcert - Zertifikaten, die leider abgelaufen sind.
Deswegen hab ich mir jetzt mit --standalone neue gemacht.

Jetzt mein Problem:
Wie stelle ich Nginx die Zertifikate zur Verfügung?
Die Dateien liegen ja unter /etc/letsencrypt/live/example.com/
Einfach den Pfad angeben ist ja nicht, weil der komplette live-Ordner nur für root lesbar ist.
 
Grundsätzlich fallen mir da mehrere Möglichkeiten ein. Zertifikate manuell kopieren, Ordnerberechtigungen anpassen um es für nginx zugänglich zu machen, letsencrypts nginx Support benutzen um die Zertifikate direkt in nginx zu installieren...

Ich habe noch nicht mit letsencrypt gearbeitet und weiß daher nicht, welcher Weg gut / 'richtig' ist, aber ich bin mir sicher, dass du entsprechende Tutorials oder besser offizielle Dokumentationen im Internet finden wirst, in denen die Kombination von letsencrypt und nginx erklärt wird.

Als Serveradmin sollte dieser Schritt eigentlich keine allzu große Hürde für sich darstellen.
 
Ich kann mit Apache ohne Probleme auf die Zertifikaten unter /etc/letsencrypt/live/ zugreifen. Und ich habe nichts an den Berechtigungen geändert..

Zur Not machst du halt eine neue Gruppe, fügst den Nutzer, unter dem Nginx läuft dazu, änderst mit chown die Gruppe der Zertifikate und machst sie mit chmod g+r für diese lesbar.
 
Oh da fällt mir ein: Liest nginx nicht die Zertifikate, bevor es seine root Rechte nach dem Serverstart abgibt? Ich meine, meine eigenen Zertifikate hätten auch nur Zugriffsrechte durch root. Das kann ich gerade aber nicht nachschauen.
 
Achso... Ja, ich hatte mich schon gefragt, wie das nginx-Plugin das anstellt.
Bei dem wird da auch einfach nur /etc/letsencrypt/live/... verlinkt.
Aber wenn nginx sowieso mit root-Rechten startet...

Danke für den Tipp :)
 
Völlig unerheblich ob apache, nginx oder was auch immer, um einen well known port zu binden brauchts die uid 0.

Code:
mysql     2625  0.0  6.9 3028588 282992 ?      Ssl  Jan25   5:40 /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf
root      2770  0.0  1.4 509352 58808 ?        Ss   Jan25   0:06 /usr/sbin/apache2 -D DEFAULT_VHOST -D SUEXEC -D PHP5 -D SSL -D STATUS -d /usr/lib64/apache2 -f /etc/apache2/httpd.conf -k start
apache   10187  0.0  0.8 513008 35732 ?        S    10:32   0:00 /usr/sbin/apache2 -D DEFAULT_VHOST -D SUEXEC -D PHP5 -D SSL -D STATUS -d /usr/lib64/apache2 -f /etc/apache2/httpd.conf -k start
root     23444  0.0  0.0  35860   832 ?        Ss   11:50   0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx    23445  0.0  0.0  36236  2876 ?        S    11:50   0:00 nginx: worker process
nginx    23446  0.0  0.0  36236  2876 ?        S    11:50   0:00 nginx: worker process
root     23457  0.0  0.0  12772  2284 pts/1    R+   11:50   0:00 grep --colour=auto -e apa -e ngi -e my
apache   27865  0.0  1.1 516312 44800 ?        S    06:00   0:00 /usr/sbin/apache2 -D DEFAULT_VHOST -D SUEXEC -D PHP5 -D SSL -D STATUS -d /usr/lib64/apache2 -f /etc/apache2/httpd.conf -k start
apache   29300  0.0  1.0 514976 41552 ?        S    06:09   0:00 /usr/sbin/apache2 -D DEFAULT_VHOST -D SUEXEC -D PHP5 -D SSL -D STATUS -d /usr/lib64/apache2 -f /etc/apache2/httpd.conf -k start
apache   30563  0.0  1.0 516560 43484 ?        S    03:10   0:01 /usr/sbin/apache2 -D DEFAULT_VHOST -D SUEXEC -D PHP5 -D SSL -D STATUS -d /usr/lib64/apache2 -f /etc/apache2/httpd.conf -k start
apache   30564  0.0  1.0 515092 41944 ?        S    03:10   0:01 /usr/sbin/apache2 -D DEFAULT_VHOST -D SUEXEC -D PHP5 -D SSL -D STATUS -d /usr/lib64/apache2 -f /etc/apache2/httpd.conf -k start

MySQL -> kein well known port, kein root
apache & nginx -> well known port, root für den Master-Prozess, alle Childs geforked unter dem jeweiligen Benutzer.

Freilich sollte man die key-files der Zertifikate nicht global lesbar lassen, ergo 640 oder 440 setzen. Sollte keine Probleme verursachen.
 
Zurück
Oben