2016-04-16 4 views
4

Ich habe SSL-Zertifikate von Let's Encrypt erfolgreich auf einer Domäneninstanz (unter Ubuntu 14.4) installiert, aber ich möchte jetzt die gleichen Zertifikate auf einer anderen virtuellen Instanz für dieselbe Domain installieren.Wir verschlüsseln SSL-Zertifikate für dieselbe Domain, mehrere Instanzen

Frage: Mit mehreren virtuellen Instanzen für die gleiche Domäne, sollte ich nur die Zertifikate aus der ursprünglichen Initiale kopieren (mit den Let's Encrypt Tools), oder gibt es einen anderen besseren Weg?

Ich stelle mir vor, dass Sie Let's Encrypt für ein neues Zertifikat nicht abfragen können, sonst wird es das erste ungültig machen.

Ich teile derzeit die certs, die funktioniert.

Antwort

0

Ich finde die Frage sehr interessant aus der Sicht des gemeinsamen Verständnisses von SSL/TLS-Zertifikaten. Ich persönlich sehe kein generelles Problem bei der gemeinsamen Nutzung desselben SSL/TLS-Zertifikats auf mehreren Computern oder virtuellen Instanzen. Das einzige Problem könnte nur in einigen Eigenschaften des Zertifikats auftreten, wie zum Beispiel alternativer Antragstellername (DNS-Name) des Zertifikats (ich meine die Optionen wie).

Der Abschnitt 3.1 (Server Identity) von rfc2818:

Wenn der Kunde in Bezug auf die erwartete Identität der Server externe Informationen hat, kann der Hostname Prüfung entfallen. (Zum Beispiel kann ein Client kann eine Maschine sein verbindet, dessen Adresse und den Hostnamen sind dynamisch aber der Kunde weiß, das Zertifikat, dass der Server präsentiert.)

...

Wenn eine Erweiterung des Typs subjectAltName dNSName ist vorhanden, dh MUSS als Identität verwendet werden. Andernfalls MUSS das (am meisten spezifische) allgemeine Feld Name im Feld Betreff des Zertifikats verwendet werden. Obwohl die Verwendung des allgemeinen Namens eine gängige Praxis ist, wird sie nicht weiter unterstützt. Zertifizierungsstellen sollten stattdessen stattdessen den Namen dNSName verwenden.

Das einzige Problem ist, dass Let's Encrypt scheint noch nicht unterstützt Wildcard-Zertifikate (siehe FAQ). Ich bin mir nicht sicher, ob die Einschränkung noch existiert und Sie können Let's Encrypt mit Subject Alternative Name (DNS) wie DNS-Name = www.ihredomain.com und DNS-Name = *. Yourdomain.com nicht erstellen. Daher kann die genaue Antwort auf Ihre Frage von Zertifikatseigenschaften abhängen.

Wenn Sie dasselbe Zertifikat für zwei Server verwenden, könnten Sie ein zusätzliches Problem mit der Verwendung des Sitzungscache von TLS haben, was die Leistung von TLS verbessert und beide Clients und der Server die gleiche Sitzungs-ID verwenden können die Leistung von TLS. Sie sollten das genaue Szenario beschreiben, mit dem Sie genau prüfen können, ob in der Sitzungs-ID Probleme auftreten können oder nicht.

+0

Sie können bis zu 100 Domains auf einem Zertifikat speichern, aber keine Platzhalter. Das scheint mir ausreichend - es zwingt Sie nur dazu, die Domains aufzulisten, was für mich in den meisten Fällen die Varianten www.example.com, example.com sind. –

+0

Ich habe nicht über den Sitzungscache nachgedacht, was der Verbindungszeit zugute käme, also muss das ein Nachteil sein, wenn ich Teile teile, aber nimmt der Server tatsächlich etwas auf, wenn ein Browser eine Verbindung herstellt, die ich teilen kann? Oder ist der Cache auf dem Client gespeichert und für einige Zeit gültig, was in diesem Fall die Freigabe der Zertifikate wäre in Ordnung. –

+0

@CarsonCole: Könnten Sie die URL an zwei Server oder die URLs an das von Ihnen verwendete Zertifikat senden? Ich möchte sagen, dass man mehr Einzelheiten des Zertifikats wissen muss, um den alternativen Antragstellernamen zu kennen. Über das Problem mit dem Sitzungscache. Ich würde Ihnen empfehlen, mit Wireshark eine Ablaufverfolgung durchzuführen, bei der derselbe Client zum ersten Mal eine Verbindung zum Server herstellt und später zum zweiten Mal. Sie werden sehen, dass der Client die Sitzungs-ID von der ersten Verbindung sendet. Dann können Sie die Verbindungsspur zum zweiten Server untersuchen. Wird Session ID1 gesendet? Was macht der Server2? – Oleg

0

Ja, es ist möglich. Es gibt mindestens zwei Möglichkeiten:

  • Run certbot im manuellen Modus

    ./certbot-auto certonly --manual -d example.com 
    

    in diesem Fall certbot erfordern eine zufällige Datei aus .well-known/acme-challenge/ bedient werden, z.B.Nun könnte man die Frage gestellt Datei auf alle Server verteilen oder ein Umschreiben von allen Ihren Seiten zu einem einzigen Herausforderung Server

    http://example.com/.well-known/acme-challenge/-Y5pUBNKdx5GKSloP3RifHzUW3NT9xt1UAloNkHz7wc 
    

    erstellen:

    rewrite ^/.well-known/acme-challenge/(.*)$ http://acme.example.com/$1 redirect; 
    

    acme.example.com sollte aus einzelnen Server mit Root-Zeige serviert zu /tmp/certbot/public_html/ (oder wo auch immer Sie angegriffene Dateien speichern).

    Werfen Sie einen Blick auf hooks in certbot manual, um dieses Verfahren zu skripten.

  • DNS-Abfrage verwenden. In diesem Fall werden Sie gefragt, TXT Datensatz zu Ihrem DNS hinzuzufügen, für example.com Domain:

    _acme-challenge.example.com. 300 IN TXT "gfj9Xq...Rg85nM" 
    

    Auch hier können Sie diese using hooks--manual-auth-hook, --manual-cleanup-hook automatisieren.