Auf Ubuntu sieht es so aus, als ob sich der beste Ort für einen privaten Schlüssel, der zum Signieren eines Zertifikats (zur Verwendung durch nginx) verwendet wird, in befindet /etc/ssl/private/
Diese Antwort fügt hinzu, dass das Zertifikat eingehen sollte, /etc/ssl/certs/
aber das scheint ein unsicherer Ort zu sein. Müssen .crt
Dateien sicher aufbewahrt werden oder gelten sie als öffentlich?
ssl
ssl-certificate
openssl
Adam Nelson
quelle
quelle
.crt
Wenn Sie möchten, können Sie sich auf eine Plakatwand am Times Square stellen.Antworten:
Die CRT-Datei wird an alle Verbindungen gesendet. es ist öffentlich. (
chown root:root
undchmod 644
)Hinzufügen zum Speicherort des privaten Schlüssels; Stellen Sie sicher, dass Sie es ordnungsgemäß sichern und auch dort haben. (
chown root:ssl-cert
undchmod 640
)quelle
ssl-cert
, das möglicherweise unter anderem dazu verwendet wird, selbstsignierte Schlangenöl-Zertifikate zu erstellenEs ist wirklich egal, wo Sie sie ablegen, solange Sie Ihre privaten Schlüsseldateien ordnungsgemäß schützen . Das öffentliche Zertifikat ist öffentlich; Kein Schutz erforderlich - Serverberechtigungen oder sonstiges.
Um die Antwort zu erweitern, verwende ich nicht den Standardspeicherort
/etc/ssl
.Es ist einfacher für mich, alle meine aus Backups und anderen Gründen in einem separaten Bereich aufzubewahren.
Für Apache SSL behalte ich meinen
/etc/apache2/ssl/private
oder einen ähnlichen "Root-Bereich" bei/etc/
.Beispiel Setup
Dieser Beitrag richtet sich an Ubuntu (Debian) + Apache, sollte aber auf den meisten Systemen funktionieren -
Wenden Sie einfach die Berechtigungen an und aktualisieren Sie den Speicherort / Pfad in der angegebenen Konfiguration (apache / nginx / etc).
Wenn die SSL-Schlüsseldateien korrekt geschützt sind (Verzeichnis & Dateien), ist alles in Ordnung. Beachten Sie die Hinweise!
Verzeichnisse erstellen:
Hinweis:
chmod 710
Unterstütztssl-cert
Gruppen unter Ubuntu. (Siehe Kommentare) DasSetzen der Berechtigung
700
auf/etc/apache2/ssl/private
"Ein" funktioniert auch einwandfrei.Legen Sie SSL-Dateien ab:
Eigentümer festlegen:
Hinweis:
Wenn Sie keine SSL-Zertifikatsgruppe haben , verwenden Sie einfach 'root: root' in der oberen Zeile oder überspringen Sie die zweite Zeile.
Berechtigungen festlegen:
Öffentliches Zertifikat
Privater Schlüssel
Hinweis:
Die Gruppenberechtigung ist aufgrund der Ubuntu ssl-cert-Gruppe auf READ (640) gesetzt. '600' ist auch in Ordnung.
Aktivieren Sie das Apache SSL-Modul
Bearbeiten Sie alle Apache-Site-Dateien und aktivieren Sie
(siehe letzter Absatz) *
Starten Sie den Apache2-Dienst neu
oder
Getan. Testen Sie Ihre neue SSL-Site.
* Auch dies geht über die Frage hinaus, aber Sie können die standardmäßige Apache SSL-Site-Konfigurationsdatei (
sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/mysiteexample-ssl.conf
) als guten Ausgangspunkt / Beispiel für standardmäßige Direktiven / Verzeichnisse kopieren, die normalerweise unter einer einfachen (Ubuntu / Debian) Apache / SSL-Conf-Datei verwendet werden . Normalerweise verweist es auf ein selbstsigniertes SSL-Zertifikat + Schlüssel (snakeoil), CA-Bundles sowie auf allgemeine Anweisungen, die für eine bestimmte SSL-Site verwendet werden.Bearbeiten Sie nach dem Kopieren einfach die neue .conf-Datei und fügen Sie sie nach Bedarf mit neuen Informationen / Pfaden hinzu / entfernen / aktualisieren Sie sie und führen Sie sie aus
sudo a2ensite mysiteexample-ssl
, um sie zu aktivieren.quelle
<VirtualHost *:443>
Abschnitt in Ihremsites-available/mysite.conf
die Zertifikate wie folgt enthalten:SSLEngine on
SSLCertificateFile /etc/apache2/ssl/mysite.crt
SSLCertificateKeyFile /etc/apache2/ssl/private/mysite.key
Alle Antworten hier scheinen in Ordnung zu sein, aber ich möchte eines erwähnen, bei dem ich ein Problem festgestellt habe ... Wenn Sie Ihr Zertifikat mit Intermediates oder Roots verknüpfen müssen, um eine Chain-Datei zu erstellen, geben Sie das nicht ein
/etc/ssl/certs
, denn wann ?c_rehash
wird es ausgeführt, kann es aufgrund der darin enthaltenen Wurzeln oder Zwischenstufen zu Hash-Symlinks zu Ihren Zertifikaten kommen.Später, wenn Ihre Zertifikate abgelaufen sind und Sie sie entfernen und nicht wissen, ob Sie sie erneut ausführen sollen
c_rehash
, haben Sie möglicherweise Hash-Symlinks in Ihrem/etc/ssl/certs
Verzeichnis unterbrochen , und seltsame Dinge beginnen, wenn Ihr lokaler Computer versucht, sich über zu verbinden SSL, und es können keine zu überprüfenden Roots gefunden werden. Zum Beispiel bekam ich plötzlich mit Locken:Kurz nach dem Aufräumen einiger alter .crt- und verketteter .pem-Dateien, die ich in hatte
/etc/ssl/certs
.Wenn Sie zumindest Ihre Ketten an einem anderen Ort aufbewahren, wird dieses Problem vermieden.
/etc/ssl/local_certs
Am Ende habe ich ein gemacht , um meine Zertifikate und Ketten zu halten, damit sie nicht im Chaos der CA-Zertifikate verloren gehen, in denen Sie zu finden sind/etc/ssl/certs
quelle
Es gibt keinen wirklich unsicheren Ort, wenn die Berechtigung für die einzelnen Dateien / Verzeichnisse auf so etwas wie gesetzt ist
chown root :0 private.key
undchmod 600 private.key
nur root darauf zugreifen kann. CSRs und Zertifikatsdateien sind, wie Sie sagen, weniger sensibel.Mit diesen Berechtigungen sollten die von Ihnen angegebenen Pfade und / usr / local / ssl in Ordnung sein.
quelle
Standorte sind korrekt:
/etc/ssl/certs/
für die.crt
Datei/etc/ssl/private
für die.key
DateiEigentümer muss
root:root
für beide sein (sudo chmod root:root <file>
ggf. ändern).Berechtigungen :
644
für die.crt
Datei600
für die.key
DateiDies wird funktionieren für
nginx
.quelle