Dynamisches SNI-Zertifikat

9

Ich ziehe meine Haare hier raus. Websites wie wix.com , quadspace.com ... usw .; kann Websites im laufenden Betrieb generieren und trotzdem SSL für jede der Millionen von benutzerdefinierten Domänen verwenden.

Ich versuche das Gleiche zu tun, aber ich kann nicht herausfinden, wie sie es machen !

Die logische Lösung wäre auf Apache:

%Vor%

Aber wenn ich Apache neu starte, erhalte ich einen Fehler: SSLCertificateFile: Datei '/etc/apache2/ssl/%0/server.crt' existiert nicht oder ist leer

Selbst wenn ich einen Dummy-Ordner / ssl /% 0 / mit einigen Dummy-Zertifikaten erstelle ... verwendete er immer noch die (falschen) Dummy-Zertifikate.

Ich weiß, dass einige auf ihre hohen Pferde kommen werden und schreien, dass Sie den Servernamen VOR dem TLS-Handshake nicht auflösen können. Aber nach diesem Beitrag und anderen:% 0 kann mit mod_vhost_alias gelöst werden, da der Servername mit SNI ... gesendet wird ...

Ich weiß, dass das funktioniert: Ein zweiter Ansatz wäre, einen virtuellen Host für jede benutzerdefinierte Domäne zu erstellen:

%Vor%

Ich könnte ein schmutziges System erstellen, wo ich einen virtuellen Host pro neuer Domain hinzufüge und Apache jeden Tag neu lade. Eeewwww ... und noch einmal: Apache begrenzt die Anzahl der virtuellen Hosts auf 256: /

Wie machen sie das? Gibt es andere Technologien, die mir helfen können? Nginx, Nodejs? Danke für deine Zeit.

    
Fryser wow 20.12.2017, 03:12
quelle

2 Antworten

1

TL; DR : Sie verwenden Platzhalterzertifikate. Das Problem ist also auf der Ebene des Zertifikats und auf der Ebene der Serverkonfiguration gelöst, nicht nur auf der Ebene der Serverkonfiguration, wie Sie es versuchen.

Paar Punkte:

  • The logical solution - kaum sehe ich etwas "logisch" in Informatik oder Software Engineering. Es ist Technik, nicht Mathe, du musst Dinge tun, nicht Dinge denken. So wird Wissen in vielen Fällen (nicht in allen Fällen) wichtiger als Intelligenz.

  • Sie haben einen korrekten Punkt zu SNI - es ist ein Push-Back der Host-Identifikation auf die TCP / SSL-Schicht (vor HTTP, wo HTTP-Header verfügbar werden).

  • virtualhost for every custom domain - Abhängig von der Skala, über die wir sprechen, könnte es funktionieren. Wenn Sie jedoch einen Client mit 200, 1000, 5000 - Subdomains an Bord haben. Was dann?

  • How do they do it - Lassen Sie mich nur Beispiele nennen: HTTP-Proxy wie cloudflare generiert ein kostenloses Zertifikat für Sie, das Sie auf Ihrem Server hinzufügen müssen (PROXY- & gt; ORIGIN-Verschlüsselung) und END_USER - & gt; Die CLOUDFLARE-Verbindung wird mit einem Platzhalterzertifikat verschlüsselt. Dies sind die DNS-Namen des Wildcard-Zertifikats, das sie für mich ausgestellt haben:

Kurz:

%Vor%
  • Wie sieht die Konfiguration eines solchen Servers aus? Es ist wirklich eine Serverfarm, unter einem Loadbalancer, mit Ressourcen geteilt (statische Ressourcen auf separat getunten Maschinen mit Cache). Es gibt mehrere virtuelle Hosts / Domains / Host-Aliase auf jedem Server, aber nur eine SSL-Datei für viele von ihnen (oder alle, je nach Skalierung). Die Domänen können dedizierte Konfigurationen haben, sie können zusammen gruppiert werden, wenn ihre Konfigurationen identisch sind.

  • In Bezug auf die Empfehlungen des Webservers - wenn es keinen guten Grund gibt, APACHE zu verwenden, würde ich es nicht verwenden. Es gibt einen Grund, warum Nginx an Zugkraft und Beliebtheit gewinnt.

quelle
0
  

Ich versuche das Gleiche zu tun, aber ich kann nicht herausfinden, wie sie es machen!?

Um SSL-Websites im laufenden Betrieb zu generieren, verwenden sie die Zertifikatsautorität von Letsencrypt, wie Sie selbst überprüfen können (Beispiel: CN = www.thefoodmarketchiswick.com). Aber für die Websites, die unter .wix.com-Namen gehostet werden, verwenden sie nur ein Platzhalterzertifikat (CN = * .wix.com). Bis dann, einfach.

Die zweite Frage, wie Sie erwähnt haben, Apache konnte dieses massive Hosting nicht bewältigen (und niemand glaubt, dass Sie Millionen von Anwendungen auf einem einzigen Server hosten könnten). Werfen Sie einen Blick auf diese Netcraft-Umfrage , die einige gibt Hinweise. Ich kann nicht für sie antworten, aber das Ausführen eines openssl s_client endet mit einem Fehler, was bedeutet, dass sie nicht sehr konforme Dinge tun.

    
Eugène Adell 03.01.2018 23:07
quelle