So machen Sie Indy OpenSSL mit den meisten Servern kompatibel
Ich verwende den folgenden Code, um SSLHandler für die POP3 / SMTP-Sende- / Empfangs-App einzurichten:
IdSSLHandler->SSLOptions->Mode = sslmClient;
IdSSLHandler->SSLOptions->Method = slvSSLv23;
IdSSLHandler->SSLOptions->SSLVersions = TIdSSLVersions() << sslvSSLv3 << sslvTLSv1 << sslvTLSv1_1 << sslvTLSv1_2;
Der obige Code soll also automatisch SSL 3, TLS 1, TLS 1.1 und TLS 1.2 unterstützen. Dies funktioniert nicht gut und meldet den Fehler "Falsche Version". Wenn dieSSLVersions
Linie wird entfernt, dann funktioniert es, aber standardmäßig enthält essslvSSLv2
das möchte ich nicht unterstützen. Es ist das gleiche wie:
IdSSLHandler->SSLOptions->Mode = sslmClient;
IdSSLHandler->SSLOptions->Method = slvSSLv23;
IdSSLHandler->SSLOptions->SSLVersions = TIdSSLVersions() << sslvSSLv2 << sslvSSLv3 << sslvTLSv1 << sslvTLSv1_1 << sslvTLSv1_2;
Aus irgendeinem Grund funktioniert dies und das oben Genannte funktioniert nicht auf demselben Server. ich weiß dasslvSSLv23
ist eine Art Wert für "Beliebige verfügbare Version verwenden". Warum funktioniert es mit dem obigen Code nicht, wenn Version 2 nicht vorhanden ist?
Außerdem kann ich TSL1 verwenden, das anscheinend weit verbreitet ist. Wenn der Server jedoch 1.1 oder 1.2 unterstützt, verwendet mein Code keine neueren Versionen, sondern erzwingt die Version 1.0, sofern nicht etwas wie das oben Genannte verwendet wird.
Ich möchte eine Initialisierung mit folgenden Zielen durchführen:
Kompatibel mit allen Servern, unabhängig davon, ob sie v3, tls1, tls1.1 oder tls1.2 verwendenAutomatisch die aktuellste Version verwenden und niedrigere Version verwenden, wenn auf dem Server keine aktuellere Version verfügbar ist, jedoch nicht niedriger als Version 3 - Fehler / Ausnahme, wenn die Version niedriger als 3 istIch dachte, dass die erste Version des Codes das liefern würde, aber es meldet Versionsfehler. Sind die oben genannten Ziele möglich oder muss eine Benutzereinstellung angegeben werden, um die zu verwendende SSL-Version auszuwählen?