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:
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
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.
Tags und Links c# ios client-certificates cross-platform ssl-certificate