Kompilierbarer C ++ - Code zur Implementierung eines sicheren SLL / TLS-Clients mit MS SSPI

7

Wie hier beschrieben Ссылка

Ich habe keine Zeit, dies von Grund auf neu zu schreiben.

Gefragt und nicht beantwortet Ссылка

DIE FRAGE IST:

Ich suche nach einem kompilierbaren funktionierenden Quellcode, der MS SSPI implementiert (wie oben im Thread erwähnt), prozedural nicht OOP bevorzugt.

Ich habe mir das Codeprojektbeispiel hier angesehen:

Ссылка

Aber das ist C # OOP. Konvertieren in C ++ - Code ist nicht trivial.

OpenSSL

SChannel-Aufrufe folgen den GSS-API-Standards. Es gibt natürlich einige Alternativen - OpenSSL zum Beispiel. Dieses Paket ist eine vollständige und gründliche Implementierung des Protokolls und für jemanden, der mit UNIX nur zu vertraut ist, ist dies zweifellos die beste Wahl. Das Paket war ursprünglich auf die UNIX-Community ausgerichtet und zum Kompilieren ist es auf die Perl-Laufzeit angewiesen. Daher ist eine gewisse Lernkurve für Windows-Entwickler erforderlich, die nie mit UNIX-Systemen gearbeitet haben.

Abgesehen davon macht OpenSLL einige Dinge, die nicht dem Standard entsprechen

Nikolai, Haben viel kompilierbaren Quellcode mitgeführt  (www.coastrd.com) Ich hatte gehofft, jemanden zu finden, der bereit ist, das Gleiche zu tun.

    
Mike Trader 09.01.2010, 02:05
quelle

4 Antworten

22

Dieses SSPI SChannel SMTPS-Beispiel sollte in Visual Studio 2008 kompiliert und ausgeführt werden wie

Ссылка

SChannel ist die Microsoft-Implementierung der GSS-API, die das SSL / TLS-Protokoll umschließt.

Vorteile der Verwendung von SChannel:

  • Details werden vom Entwickler vom SSPI abgeschirmt.
  • Zum Ausführen der endgültigen Anwendung ist keine zusätzliche Einrichtung erforderlich:
  • SChannel ist ein integraler Bestandteil des Betriebssystems
  • Unter Windows ME / 2000 / XP / ... ist SChannel standardmäßig installiert und konfiguriert
  • SChannel-Aufrufe folgen den GSS-API-Standards.
  • Sie müssen keine Zertifikate erstellen / installieren
  • keine Drittanbieter-DLLs (1 MB oder mehr) zum Versenden und Installieren

Der Code sollte eine Sitzung erzeugen, die wie folgt aussieht:

----- SSPI initialisiert
----- WinSock initialisiert
----- Anmeldeinformationen initialisiert
----- Verbunden mit Server
70 Bytes von Handshake-Daten gesendet
974 Bytes von Handshake-Daten empfangen 182 Bytes von Handshake-Daten gesendet 43 Bytes von Handshake-Daten empfangen Handshake war erfolgreich ----- Client Handshake durchgeführt
----- Authentifizierte Server-Anmeldeinformationen

Server-Betreff: C = US, S = Kalifornien, L = Mountain View, O = Google Inc., CN = smtp.gmail.com
Serveraussteller: C = ZA, S = Westkap, L = Kapstadt, O = Thawte Consulting, OU = Zertifizierungsdiensteabteilung, CN = Thawte Premium Server CA, E = [email protected]

----- Zertifikatskette angezeigt ----- Server Zertifikat verifiziert ----- Server Zertifikat Kontext freigegeben

Protokoll: TLS1
Chiffre: RC4
Verschlüsselungsstärke: 128
Hash: MD5
Hash-Stärke: 128
Schlüsselaustausch: RSA
Schlüsselaustauschstärke: 1024
----- Sichere Verbindungsinfo
64 Byte (verschlüsselte) Anwendungsdaten erhalten
Entschlüsselte Daten: 43 Bytes
220 mx.google.com ESMTP 6sm17740567yyg66

Senden von 7 Bytes Klartext:
EHLO

28 Bytes verschlüsselter Daten, die gesendet wurden 169 Bytes (verschlüsselte) Anwendungsdaten empfangen Entschlüsselte Daten: 148 Bytes
250-mx.google.com zu Ihren Diensten, [22.33.111.222]
250-GRÖßE 35651584
250-8BITMIME
250-AUTH LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250 PIPELINING

Senden von 7 Bytes Klartext:
BEENDEN

28 Bytes verschlüsselter Daten, die gesendet wurden 69 Byte (verschlüsselte) Anwendungsdaten empfangen Entschlüsselte Daten: 48 Bytes
221 2.0.0 schließende Verbindung 6sm17740567yyg66

----- SMTP-Sitzung abgeschlossen Senden Schließen Benachrichtigen 23 Bytes von Handshake-Daten gesendet ----- Disconnected vom Server
----- Reinigung beginnen ----- Alles erledigt -----

    
Mike Trader 12.01.2010, 10:43
quelle
5

Wiederholen Sie nach mir: "Ich möchte OpenSSL ".

verwenden

Dieses Problem ist viel zu ernst und viel zu leicht, um es zu vermasseln, jedes Mal, wenn Sie es lösen wollen, selbst zu rollen. Wenn Sie ein Problem mit OpenSSL haben, versuchen Sie, dies durch Dialog und Patches zu OpenSSL zu beheben.

(Niemand ist immun, um es zu vermasseln, nicht einmal Microsoft oder tatsächlich OpenSSL. Verwenden Sie etwas, dessen Quelle Sie überprüfen können und das bei Problemen gepatcht wird. Verwenden Sie OpenSSL.)

    
Nick Bastin 09.01.2010 02:15
quelle
5

Vielleicht ist dieser Link ein guter Ausgangspunkt. Es enthält tatsächlich funktionierenden Beispielcode mit MS SSPI (obwohl es sehr MSVC-spezifisch aussieht, aber ok, seine Fenster nur sowieso). Ignoriere einfach die OpenSSL-Beispiele ;-)

    
Frunsi 09.01.2010 02:42
quelle
0

Wie viel würden Sie für einen solchen kompilierbaren Quellcode bezahlen? Oder hast du erwartet, dass jemand es dir gibt? OpenSSL Jungs haben es schon getan. Es ist Gott-hässlich, aber der Preis ist richtig.

    
Nikolai Fetissov 09.01.2010 02:21
quelle

Tags und Links