2014-11-11 1 views
12

EDIT: Es war vielleicht vorzuziehen, dies auf Serverfehler zu stellen, aber mein Ruf würde mich nicht mehr als 2 Links veröffentlichen lassen. :(Welche Zertifikatskettendatei soll mit einem selbstsignierten Zertifikat enthalten sein?

Ich möchte ein paar Seiten, die Passwörter auf meiner Website benötigen, sicher zu sein, so folgte ich this ein eigenes SSL-Zertifikat zu erstellen. Ich folgte auch this, weil es erklärt, wie selbstsignierte Multi-Domain-Zertifikate zu generieren (die subjectAltName Erlaubt mir, ein gültiges Zertifikat für example.com und * .example.com zu erhalten, ich habe keinen anderen Weg gefunden, dies zu tun.)
Also musste ich die Befehle mischen, um zu bekommen, was ich wollte, und ich denke alles ist ok mit dem, was ich getan habe (obwohl ich es später nur für den Fall detailliert).
Jetzt muss ich Apache konfigurieren, um Abfragen auf Port 443 zu hören und SSL-Sicherheit auf den entsprechenden Seiten. So fand ich this.

Wenn der Virtualhost auf Port 443 hört definieren, heißt es dazu:

<VirtualHost 127.0.0.1:443> 
    SSLEngine On 
    SSLCertificateFile /etc/apache2/ssl/something.crt 
    SSLCertificateKeyFile /etc/apache2/ssl/something.key 
    SSLCertificateChainFile /etc/apache2/ssl/gd_bundle.crt 
    ... 
</VirtualHost> 

Ich glaube, ich weiß, was die Dateien, die ich für die SSLCertificateFile und SSLCertificateKeyFile Felder angeben müssen, aber ich kann nicht zu Figur scheinen aus was ist die SSLCertificateChainFile. Alles, was ich habe bei Google und Stack-Exchange-Gemeinden durch die Suche hat mich nicht so weit helfen, so dass ich es bin gefragt klar hier:

Welche Datei muss ich für SSLCertificateChainFile bieten, und wie kann ich schaffen es, wenn nötig?

Hier sind die Dateien, die ich erstellt habe, indem ich die Anweisungen der verschiedenen Links mit den Befehlen befolge, mit denen ich sie erstellt habe.

  • Zertifizierungsstelle Schlüssel (ca.key): openssl genrsa -des3 -out ca.key 1024
  • Key-Zertifikat (ca.san.csr): openssl req -new -key ca.key -out ca.san.csr -config /etc/ssl/openssl.cnf
    Hier den Konfigurationsdateipfad I angegeben, weil ich es ein wenig ändern musste hinzufügen die subjectAltName. Ich konnte auch überprüfen, ob alles mit openssl req -text -noout -in ca.san.csr gut gelaufen ist. Alles ist beschrieben here.
  • Erstellung und Signatur des Zertifikats (ca.san.crt): openssl x509 -req -days 3650 -in ca.san.csr -signkey ca.key -out ca.san.crt -extensions v3_req -extfile /etc/ssl/openssl.cnf
    Auch hier wird die Datei conf benötigt, da darin die subjectAltNames definiert ist.
  • Server-Schlüssel (server.key): openssl genrsa -out server.key 1024
  • Key-Zertifikat (server.san.csr): openssl req -new -key server.key -out server.san.csr -config /etc/ssl/openssl.cnf
  • Server-Zertifikat (server.san.crt): openssl x509 -days 3650 -CA ca.san.crt -CAkey ca.key -set_serial 01 -in server.san.csr -req -out server.san.crt

Für die SSLCertificateFile, ich dachte, ich würde die server.san.crt Datei zur Verfügung stellen, scheint dies die logischste Sache für mich zu sein, sowie die server.key Datei für SSLCertificateKeyFile.
SSLCertificateChainFile scheint nach einer .crt Datei zu fragen, so kann es die einzige andere .crt Datei sein, die ich habe, ca.san.crt, aber ich bin mir wirklich nicht sicher darüber.

Hat jemand einen Hinweis?
Vielen Dank für Ihre Zeit das Lesen.


Lösung
Für diesen speziellen Fall, da ich eine benutzerdefinierte Zertifikat verwende, ist SSLCertificateChainFile nicht viel Sinn machen (siehe markierte Antwort unten). Daher müssen Sie nur die gleiche Zertifikatsdatei für beide Direktiven SSLCertificateFile und SSLCertificateChainFile angeben.
Es gibt nur eine Sache, die Sie mit Apache tun müssen, bevor Sie SSL* Direktiven verwenden können. SSL ist auf Apache standardmäßig deaktiviert, daher müssen Sie es unter sudo a2enmod ssl aktivieren. Wenn Apache neu gestartet wird, erhalten Sie eine Fehlermeldung, dass Sie möglicherweise etwas in Ihren vHosts-Dateien falsch geschrieben haben.
Sobald Sie dies getan und den Server neu gestartet haben, können Sie auf Ihrem vHosts mit HTTPS verbinden. Ihr Browser wird Ihnen mitteilen, dass das Zertifikat nicht gültig ist, da es selbstsigniert ist, aber Ihre Verbindung sicher ist.

Antwort

7

Ich möchte einige Seiten, die Passwörter auf meiner Website benötigen

nur eine Notiz, sicher zu sein. Als Best Practice sollte die gesamte Website mit SSL geschützt werden. Hier ist ein Blogbeitrag, der erklärt, warum SSL auf Authentifizierungsseiten nicht ausreicht: Securing your ASP.NET MVC 4 App and the new AllowAnonymous Attribute (obwohl es mit ASP MVC verwandt ist, sind andere Plattformen auch betroffen).

aber ich kann nicht scheinen, um herauszufinden, was die SSLCertificateChainFile ist

denke ich, ist es ein PKCS # 7-Container, die Zertifikate Zwischen CA enthält. Mit selbstsignierten Zertifikaten gibt es keine anderen Zertifikate, also (sorry, ich bin kein Experte Apache) diese Datei sein kann:

  1. selbst signiertes Zertifikat selbst (nur öffentlicher Teil)
  2. Kann sein gelöscht (diese Datei macht bei selbstsignierten SSL-Zertifikaten keinen Sinn)
  3. Leer (weniger wahrscheinlich, Apache kann sich über falsches Dateiformat beschweren).

Ich würde mit Schritt 1 gehen, das gleiche Zertifikat zu SSLCertificateFile und SSLCertificateChainFile Parameter übergeben.

+0

Ich werde das versuchen und so schnell wie möglich Rückmeldung geben, danke. – qreon

+0

Ok so: das scheint zu funktionieren. Ich werde OP für Details über zusätzliche Informationen bearbeiten. Danke für die Verbindung, ich werde etwas dagegen tun. – qreon