Ich habe eine Owin-Self-Host-C# -App, die Web-API-Dienste über 127.0.0.1:5555 bereitstellt (sie überwacht nur localhost, keine externen Verbindungen).Selbstsigniertes SSL-Zertifikat für localhost, wie man vertrauenswürdig macht
Diese Web-API-Dienste werden mit Ajax aus einer AngularJS-App aufgerufen. Nebenbei: Der Grund für die Owin-App ist, dass bestimmte Interaktion mit der Hardware benötigt wird, die nicht von einem Browser aus möglich ist. Außerdem ist die AngularJS-App für den internen Gebrauch, so dass ich die Kontrolle über die verwendeten Browser habe.
Die oben genannten Arbeiten sehr gut über HTTP, aber die Angular JS App benötigt SSL zu verwenden, die, wenn die App SSL verwendet auch Owin funktioniert nicht (sonst Sie „Mixed Content“ Fehler erhalten).
Ich habe ein offizielles Zertifikat für die AngularJS App gekauft, und ich benutze selbstsignierte Zertifikate für das Owin Localhost-Zeug.
Das Problem ist, dass ich "NET :: ERR_CERT_AUTHORITY_INVALID" (wenn testin von Chrome) und "net :: ERR_INSECURE_RESPONSE" aus der AngularJS App erhalten, wenn die API Owin Web sprechen. Hier
ist das, was ich getan habe, in groben Zügen:
Ich benutzte ein CentOS-Box das CERT für localhost zu generieren und exportiert sie/pfx Format pkcs12. Ich habe auch ein CA-Zertifikat erstellt und es auf die gleiche Weise exportiert.
Mit MMC ich die localhost cert auf der Windows-7-Maschine importiert, um den Winkel & Owin App in Zertifikate (Lokaler Computer) läuft> Personal> Zertifikate.
ich in Zertifikate (Lokaler Computer)> Vertrauenswürdige Stammzertifizierungs Auhorities> Zertifikate
Mit Blick auf dem lokalen Host-Zertifikat auch das CA-Zertifikat auf der 7-Maschine von Windows importiert, heißt es „erteilt an: localhost“, Herausgeber: "ca.acme.com", "Sie haben einen privaten Schlüssel, der diesem Zertifikat entspricht", (unter Zertifizierungspfad) "Dieses Zertifikat ist in Ordnung"
Das CA-Zertifikat sagt "Ausgestellt für: ca.acme.com" , Ausgestellt von: "ca.acme.com", "Sie haben einen privaten Schlüssel, der diesem Zertifikat entspricht" (unter Zertifizierungspfad) "Dieses Zertifikat ist in Ordnung"
netsh http show sslcert
IP:port : 127.0.0.1:5555
Certificate Hash : 1234555555555555555555511155555555555555
Application ID : {1234a123-1234-1234-1234-123412341234}
Certificate Store Name : (null)
Verify Client Certificate Revocation : Enabled
Verify Revocation Using Cached Client Certificate Only : Disabled
Usage Check : Enabled
Revocation Freshness Time : 0
URL Retrieval Timeout : 0
Ctl Identifier : (null)
Ctl Store Name : (null)
DS Mapper Usage : Disabled
Negotiate Client Certificate : Disabled
Was fehlt mir? Wie kann ich Chrome usw. das SSL-Zertifikat für localhost vertrauen lassen?
Wenn dies nur für Ihre eigenen Tests gilt: Rufen Sie eine HTTPS-URL auf, die dieses Zertifikat direkt verwendet, und fügen Sie eine Ausnahme in Ihrem Browser hinzu. Wenn Sie möchten, dass es überall in den Browsern von Benutzern im Web funktioniert, müssen Sie ein Zertifikat anfordern, das von einer vertrauenswürdigen Zertifizierungsstelle signiert wurde. – CBroe
http://stackoverflow.com/questions/7580508/getting-chrome-to-accept-self-signed-localhost-certificate – epascarello
@CBroe Es ist nicht zum Testen. Dies wird auch auf einer großen Anzahl von internen Computern verwendet werden; Könnte ich ein offizielles Zertifikat für localhost bekommen und es irgendwie auf allen verwenden? Da dies alles nur für den lokalen Host-Verkehr gilt (ohne sensible Daten), habe ich wirklich keine Sicherheitsbedenken. – Lars335