2014-03-26 12 views
7

Ich habe einen Server mit einem selbst signierten Zertifikat. Ich möchte mein Gerät über https form mit dem Server verbinden. Ich höre, dass ich nur die Verbindung akzeptieren muss. Aber ich weiß nicht wie. Ich habe ein selbstsigniertes Zertifikat, da es sich um einen Testserver handelt. Aber ich möchte mit https Formular zugreifen? Wenn ich versuche, mit https zugreifen Ich habe einen Fehler:Https iOS mit selbst signierten Zertifikat

SURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813) 

Dann ist es ein selbst signiertes Zertifikat.

Jemand kann mir helfen?

+0

Was die Fehlermeldung generiert? – binki

Antwort

18

Standardmäßig verweigert Cocoa alle SSL-Verbindungen, wenn das Zertifikat ungültig ist.

Sie können sie jedoch zwingen, auch ungültige Zertifikate zu akzeptieren. Die Methode hängt davon ab, welche Bibliothek/Framework Sie verwenden. Beispiel:

  • Überprüfen Sie für NSURLConnection this answer.
  • Für ASIHTTPRequest müssen Sie die Eigenschaft validatesSecureCertificate auf NO setzen.
  • Für AFNetworking, können Sie den Code überprüfen, in this page
  • Für CFNetwork, die Low-Level-Foundation Framework this sample code überprüfen zu verwenden.
  • Für SURLConnection, die aussieht wie Sie verwenden, müssen Sie die gleichen Anweisungen für NSURLConnection folgen. Tatsächlich ist SURLConnection nur eine Unterklasse von NSURLConnection.

Wichtiger Hinweis:
Der obige Code, jede Art von SSL-Zertifikat zu akzeptieren, auch wenn ungültig, ein ernsthaftes Sicherheitsrisiko ist. Grundsätzlich macht es das gesamte SSL nutzlos. Als Konsequenz sollten Sie diesen Code nur während der Entwicklung verwenden, wenn Sie wirklich mit SSL-Verbindungen testen müssen.
Bitte beachten Sie auch, dass Apple alle im App Store eingereichten Anwendungen ablehnt, die ungültige SSL-Zertifikate akzeptieren.

+0

Hallo Qualcuno, danke für deine Antwort. Aber ich benutze kein Framework/Bibliothek. Muss ich ? Und wie integriere ich ein neues Framework in meine App? – Mcr67

+1

Es ist nicht möglich, dass Sie kein Framework verwenden. Die einfachste ist NSURLConnection, Teil von Cocoa (in das System integriert), aber es gibt mehr. – Qualcuno

+0

Danke. Wie installiere NSURLConnection? Gerade vorbei? Danach Was soll ich tun? Kannst mir sagen ? Danke – Mcr67

2

Zertifikatskonfiguration:

Sie haben die Selbst oder CA signierte Zertifikat für das Gerät, um auf dem Gerät zu installieren, zu vertrauen, es dann nur Gerät die SSL-Verbindung vertraut.

Im Falle selbst signiertes Zertifikat Installation stellen Sie sicher, Domain-Namen der URL als Gemeinsamer Name von Zertifikat gleich ist.

Wenn kein Domänenname vorhanden ist, ist die IP-Adresse in Ordnung.

Zertifikat Installation:

Sie können es nur auf dem Server Web-Host und versuchen, es aus Safari zugreifen dann iOS für das Zertifikat Installation in der iOS-Gerät aufgefordert wird

Certificate Creation:

So erstellen Sie ein selbstsigniertes Zertifikat, damit Sie alle Details und den Host im Webserver ausfüllen können.

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 1001 -nodes 

(Achten Sie während der Wert für Common Name Eingabe)

+0

Ihre zweite Methode ist falsch. Wenn Safari Sie auffordert, das Zertifikat zu installieren, wird das Zertifikat in Safari installiert (nur in Safari wird es verwendet). Das bedeutet, dass Sie nach der Installation die Verbindung in Ihrer App immer noch nicht nutzen können. Was am schlimmsten ist - Um das Zertifikat von Safari zu entfernen, müssen Sie (seit ~ iOS 7) alle Geräteeinstellungen zurücksetzen. Für eine ordnungsgemäße Installation sollten Sie beispielsweise Ihr Zertifikat per E-Mail senden und die Datei auf dem iPhone öffnen. – franiis

+0

@franiis - Es wird App auch verwendet werden. Versuchen Sie es –

Verwandte Themen