![Ubuntu16.04: Nginx 1.10: Nginx stellt mehrere Zertifikatsinformationen bereit. SSL funktioniert im Browser einwandfrei, aber es gibt ein Problem mit curl. cURL-Fehler 51](https://rvso.com/image/696995/Ubuntu16.04%3A%20Nginx%201.10%3A%20Nginx%20stellt%20mehrere%20Zertifikatsinformationen%20bereit.%20SSL%20funktioniert%20im%20Browser%20einwandfrei%2C%20aber%20es%20gibt%20ein%20Problem%20mit%20curl.%20cURL-Fehler%2051.png)
Ich habe mehrere Sites auf einem Ubuntu-Server (16.04) mit nginx/1.10.0 + letsencrypt.
SSL funktioniert im Browser einwandfrei. Aber die Anwendung unseres Entwicklers, die eine Curl-Anfrage (mit SSL) verwendet, weist einen Fehler auf, da
Update Failed: Download failed. cURL error 51: SSL: certificate subject name 'domain2.com' does not match target host name 'domain1.com'
und bei der Überprüfung mit SSLLABS wurde A_grade angezeigt, es werden jedoch mehrere Zertifikate geladen (Zertifikat einer anderen Domäne auf demselben Server).
Certificate #1: RSA 2048 bits (SHA256withRSA)
Und
Certificate #2: RSA 2048 bits (SHA256withRSA) No SNI
und unter dem zweiten Zertifikat gibt es folgende Fehler.
Common names domain2.com MISMATCH
Trusted No NOT TRUSTED
Der Curl-Fehler betraf auch den zweiten Domänennamen.
cURL error 51: SSL: certificate subject name 'domain2' does not match target host name 'domain1'
Die Domain2 ist eine völlig andere Site. Ich weiß nicht, wie Nginx seine Informationen zusammen mit Domain1 sendet.
Außerdem habe ich das gleiche Szenario auf anderen Servern getestet, indem ich eine Domäne mit Letsencrypt SSL erstellt habe, und alle haben das gleiche Problem. beim Überprüfen mit SSLlabsSSLLabs-CheckerEs ist möglich, die Zertifikatsdetails von Domäne 2 zusammen mit Domäne 1 abzurufen. Die Note von Domäne 1 ist immer noch A. Auch auf allen anderen Prüfsites sicher.
und wenn ich Domäne2 mit SSLlabs überprüfe, werden alle anderen Domänenzertifikate abgerufen, die sich auf demselben Server befinden. (Wenn jedoch die Domänen A, B, C, D vorhanden sind, wird bei einer der Domänen-SSL-Prüfungen nur ein Zertifikat abgerufen. Das ist kein Problem und alle anderen werden dieses Problem haben.)
Screenshot anbei. (ein langer Screenshot einer ganzen Seite). Ich denke, das wird den Fall klären :(
**Ich konnte keine unsichere Curl-Anfrage in einer Anwendung verwenden, die dieses Problem ignorieren und die Curl-Anfrage erfolgreich machen würde. Wenn jemand eine Idee dazu hat, helfen Sie bitte. Ich habe immer noch viele Stunden damit verbracht....
Das obige Problem betrifft das Wordpress-Plugin und kann daher keinen bestimmten Parameter zusammen mit curl hinzufügen. (Es stammt vom WP-Kern)
Dank im Voraus.
Antwort1
Der verwendeten Curl-Version fehlen anscheinend grundlegendeSNIUnterstützung. SNI ist erforderlich, wenn mehrere Domänen mit SSL auf derselben IP-Adresse gehostet werden.
Sie haben grundsätzlich drei Möglichkeiten:
- Aktualisieren Sie curl auf eine Version, die SNI unterstützt.
Die Unterstützung hierfür wurdeeingeführt in Version 7.18.1. - Fügen Sie den Host-Parameter selbst auf Ihren Clients hinzu:
-H "Host: domain1.com"
- Um eine andere IP-Adresse zu verwenden, kann die Domäne verschoben werden. Auf dem Client sind dadurch keine Änderungen notwendig.