Ich verwende libcurl in meiner C-Anwendung, um mit einem HTTPS-Server zu kommunizieren, den ich eingerichtet habe. Ich habe auf diesem Server ein selbstsigniertes Zertifikat erstellt, das ich mit curl verwenden möchte.
Ich bin mir bewusst, CURLOPT_SSL_VERIFYPEER auf 0 zu setzen, um die SSL-Verifizierung zu umgehen, aber ich möchte das erzeugte Zertifikat den "gültigen" CA-Zertifikaten von curl hinzufügen.
Ich habe versucht, CURLOPT_CAPATH und CURLOPT_SSLCERT auf den Speicherort des öffentlichen SSL-öffentlichen Schlüssels des Servers zu setzen, aber die Überprüfung wird nicht bestanden.
Wie kann ich mein eigenes CA / Self-signiertes Zertifikat hinzufügen, damit libcurl es erfolgreich validiert?
Um ein selbstsigniertes Zertifikat hinzuzufügen, verwenden Sie CURLOPT_CAINFO
Um das öffentliche SSL-Zertifikat einer Site abzurufen, verwenden Sie
%Vor% Das Zertifikat ist der Teil, der durch ----BEGIN CERTIFICATE----
und
---END CERTIFICATE----
gekennzeichnet ist.
Speichern Sie dieses Zertifikat in einer Datei und verwenden Sie curl auf folgende Weise:
%Vor%Zuerst mischen Sie "Certificate Authority" -Dateien und "Certificate" -Dateien, die mich verwirren.
Wie kann ich mein eigenes CA / Self-signiertes Zertifikat hinzufügen, so dass libcurl dies tut? erfolgreich validieren?
Dies könnte als eine ergänzende Antwort auf die obige gesehen werden. Wenn Sie eine selbstsignierte Zertifizierungsstelle hinzufügen möchten (jede Stammzertifizierungsstelle ist selbstsigniert), damit libcurl das Zertifikat einer Website, das von der Zertifizierungsstelle generiert wurde, erfolgreich validiert, lesen Sie weiter.
Mit CURLOPT_CAINFO müssen Sie die "Certificate Authority" -Datei (CA) übergeben, die beim Generieren des (nicht CA-) Zertifikats der Site verwendet wurde, die Sie überprüfen möchten.
(Ich weiß nicht, ob diese Option funktioniert, indem ich ein Nicht-CA-Zertifikat übergebe, die Dokumentation ist nicht wirklich klar, und die vorherige Antwort hat zwei Up-Stimmen, also wenn jemand es getestet hat, bitte kommentiert)
Sie können auch eine Zertifizierungsstellenkettendatei übergeben, die die verwendete Zertifizierungsstelle enthält, falls sie keine Stammzertifizierungsstelle war.
Hier ist ein kleines Tutorial, das Ihnen helfen kann, Ihre Lösung zu testen:
Erstellen einer privaten Stammzertifizierungsstelle: Ссылка
Erstellen eines Site-Zertifikats: Ссылка
Tags und Links c ssl libcurl self-signed