C # Asynchroner Tcp-Server mit SSL. Wie kann ich eine gegenseitige Authentifizierung mit iOS NStream erhalten?

9

Dies ist mein erster Post bei stackoverflow.com, also wenn ich etwas falsch mache, lass es mich wissen. Also auf das Problem.

Ich habe einen C# Server, der gerade läuft. System.Net.Socket Sockets ähnlich dem Beispielcode, den Microsoft hier zur Verfügung gestellt hat .

Ich habe auch einen Objective-C iPad-Client, der NSInputStream/NSOutputStream an CFReadStream/CFWriteStream gebunden hat.

Gegenwärtig wird nur die Benutzername / Passwort-Authentifizierung über XML Serialized Object gesendet. Der Client und der Server können ohne Probleme kommunizieren.

Das Problem, das ich jetzt habe, ist, dass die Kommunikation sicher sein muss, und im Gespräch mit Kunden, wäre SSL encryption akzeptabel. Ich glaube jedoch nicht, dass sie nur das "Server-Zertifikat" als gut genug akzeptieren würden. Also versuche ich, den iPad-Client dazu zu bringen, ein "Client-Zertifikat" zu verwenden. Ich möchte eine echte gegenseitige Authentifizierung ermöglichen.

Wenn ich keine gegenseitige Authentifizierung erreichen kann, könnte eine dritte Partei VPN Software die bessere Lösung sein, um die Kommunikation zu sichern.

Ich habe die Konvertierung noch nicht abgeschlossen, aber ich habe ein paar Artikel gefunden, die mir gute Beispiele dafür geben, aber es gibt keine Beispiele, die zu meiner Situation für clientseitige Zertifikate auf dem iPad passen. Die Beispiele, die ich gefunden habe, sind:

C # SSL Tcp Server

Apple-Entwickler-Website, die zeigt, wie man SSL verwendet, aber nein Client-Zertifikat

iPad SSL-Stream ohne Client-Zertifikat.

iPad SSL-Stream ohne Client-Zertifikat

iPad HTTP Client, der das Client-Zertifikat verwendet

Grundsätzlich muss das System schließlich TCP communication mit SSL embedded ausführen, um Zertifikate verwalten zu können. Nicht sicher, ob es einen Unterschied macht, aber da dies zu vielen verschiedenen Clients gehen würde, ist es besser mit SSL 3.0 und TLS (jeder Version) kompatibel zu sein.

Da ich in den letzten 6 Monaten nur in Objective-C getüftelt habe und mit C# besser vertraut bin, werde ich wahrscheinlich Ihre Antwort einfacher erklären müssen.

Bearbeiten:
Ich bin mehr mit der Objective-C -Seite der Gleichung beschäftigt, da ich ziemlich sicher bin, dass die C# -Seite einfach sein wird. Im Grunde brauche ich jemanden, der erklärt, wie man clientseitige Zertifikate auf einem TCP NSStream in Objective-C implementiert oder auf mögliche Lösungen oder Lösungsansätze hinweist.

Jede Hilfe wird sehr geschätzt.

Chris

    
user1709113 30.09.2012, 01:34
quelle

2 Antworten

2

Ich kann Ihre Frage nicht beantworten, wie dies auf der Ziel-C-Seite implementiert werden soll, da das, was Sie fragen, über das hinausgeht, was eine einzelne Anwendung auf IOS-Geräten erreichen kann . Über den Tellerrand hinaus denken ..

Von Apple:

  

iOS unterstützt das Simple Certificate Enrollment Protocol (SCEP). SCEP   ist ein Internet-Entwurf in der IETF, und soll ein   vereinfachte Handhabung der Zertifikatsverteilung für große   Bereitstellungen. Dies ermöglicht die Registrierung von Identitäten über die Luft   Zertifikate für iPhone und iPad, die zur Authentifizierung verwendet werden können   Unternehmensdienste.

Wenn ich das wüsste und nach SCEP in der Entwicklerbibliothek suche, bin ich auf dieser Seite - Ссылка

Diese Seite wird von Interesse sein, beachten Sie, dass Microsoft Server dies unterstützt: - Ссылка und es hat sogar einen Beispiel-Client / Server-Code.

Mein Interesse gilt allgemein dem Bereich Mobile-Device-Management und ich habe mich damit beschäftigt.

Hoffe, das hilft.

    
teopeurt 09.10.2012, 09:29
quelle
1

Schauen Sie sich CFSocket und / oder CkoSocket

    
Pete 30.11.2012 19:22
quelle