2016-04-06 8 views
0

Apache/PHP/Symphony wird in meiner mittleren Schicht für Authentifizierung und Routing verwendet. Eine Anfrage kommt über http, wenn die Anfrage authentifiziert die Person, die die Anfrage stellt autorisiert ist, macht dann einen Aufruf an einen Backend-Web-Service über https. Der Back-End-Webdienst ist über HTTPS mit einem selbstsignierten Zertifikat. Ich kann direkt auf den Back-End-Dienst zugreifen und meine Zertifikatsinformationen über den Chrome-Inspektor einsehen. Wenn ich die Anfrage über die URL direkt an das Backend stelle, funktioniert alles. Wenn ich versuche, durch die mittlere Schicht zu gehen, erhalte ich eine Antwort zurück, dass ein 504:So erhalten Sie Apache, um ein selbstsigniertes Cert zu akzeptieren, das von Javas KeyTool erstellt wurde

{"code":504,"message":"A network communication error has occurred","error":{"code":77,"message":"SSL: can\u0027t load CA certificate file \/etc\/pki\/tls\/certs\/ca-bundle.crt"}}

erzeugen ich das Zertifikat:

/usr/local/jboss-eap-6.4/standalone/configuration/.keystore

den Befehl:

keytool -genkey -keyalg RSA -alias jboss -keystore .keystore -storepass changeit -validity 9999 -keysize 2048

Ich aktualisierte auch meine Standalone.xml, um th zu verweisen e-Datei über:

<ssl name="ssl" key-alias="jboss" password="changeit" certificate-key-file="/usr/local/jboss-eap-6.4/standalone/configuration/.keystore" protocol="TLSv1" verify-client="false"/>

Meine dev Maschine ist OSX.

Es scheint, dass Apache oder Symfony das Zertifikat in /etc/pki/tls/certs/ca-bundle.cert sucht, das eine Datei ist, die nicht auf meinem System existiert. Die Suche nach "pki" in /etc/apache2/httpd.conf führt zu keinem Ergebnis.

Wie konfiguriere ich apache/symfony2 diesem Zertifikat zu vertrauen, oder gibt es eine andere Möglichkeit, dieses Zertifikat global zu vertrauen?

Antwort

0

Erstellen der CA Cert Bundle

Datei Das System ist für /etc/pki/tls/certs/ca-bundle.cert suchen, die einen Standardpfad auf Linux, aber nicht auf osx. Wir umgehen das, indem wir die Datei generieren.

Ich generierte die .keystore Datei mit keytool und verwendet jboss für meinen Alias. Um die ca-Bundle-Datei zu erstellen, müssen wir sie im PEM-Format haben, also müssen wir -rfc zu unserer Export-Anweisung hinzufügen. Im Folgenden sind die Befehle:

cd /usr/local/jboss-eap-6.4/standalone/configuration 
keytool -export -alias jboss -file local-sbx.dev.yourcompany.com.crt -keystore .keystore -rfc 

Nachdem Sie die Datei haben, können Sie Katze es aus und stellen Sie sicher, dass die Datei in den BEGIN CERTIFICATE und END CERTIFICATE Sachen hat. Wenn ja, ist es im richtigen Format.

Schließlich erstellen Sie die Verzeichnisstruktur, bewegen Sie den cert wie das Bündel zu handeln (die aneinander gehängt nur ein Haufen von certs ist) und dann Apache neu starten:

mkdir -p /etc/pki/tls/certs/ 
sudo cp local-sbx.dev.yourcompany.com.crt /etc/pki/tls/certs/ca-bundle.crt 
sudo apachectl restart 

Hinweis: Dies war ein Unterproblem von SSL: can't load CA certificate file /etc/pki/tls/certs/ca-bundle.crt also, wenn Sie immer noch Probleme haben, müssen Sie möglicherweise Ihre PHP-Setup zu aktualisieren ... Richtungen sind in den Link zur Verfügung gestellt.

Verwandte Themen