17

Google ドキュメントに接続しようとしています (Marco Cantu の優れた REST の例に従って) が、次の SSL エラーが発生します。

1) openssl-0.9.8i-i386-win32.zip の SSL dll を使用すると、次のエラーが表示されます。

「SSL ライブラリを読み込めませんでした」

2) indy_OpenSSL096m.zip の SSL dll を使用すると、次のエラーが表示されます。

「SSL接続エラー」

3) openssl-0.9.8h-i386-win32-Indy-IntraWebEdition.zip の SSL dll を使用すると、次のエラーが表示されます。

「SSL ライブラリを読み込めませんでした」

今、私はこれを調査しましたが、スタック オーバーフローに関するリンクを含む、dll へのデッド リンクに関する推奨事項がたくさんあります。使用している INDY のバージョンと互換性のある SSL dll を見つける必要があると思います。

私の質問は、Delphi 2006 & INDY 10.1.5 と互換性のある SSL dll を正確に知っている人はいますか?

4

5 に答える 5

18

INDY 10.2.3 にアップグレードした後も同じ問題が発生し、見つかった「libeay32.dll」および「ssleay32.dll」ファイルのすべての異なるバージョンを試しました... Matt のように、常に 2 つのエラーのいずれかが発生しました: 「SSL ライブラリを読み込めませんでした」または「SSL との接続エラー」が「error:00000006:lib(0):func(0):EVP lib」のようなもので表示されます ...

TidSSLioHandlerSocketOpenSSL.SSLOptions.Method を sslvSSLv23 に変更し、すべてが機能し始めたときはとてもうれしかったです。

もう少し調査したところ、「SSL ライブラリを読み込めませんでした」というエラーが表示されるたびに、間違ったバージョンの DLL ファイルを使用していて、「エラー: 00000006:lib (0):func(0):EVP lib" 間違った SSLOptions.Method 値を使用していました。

その他の情報: Delphi 2006、INDY 10.2.3 を使用しており、WinXP Pro で実行しています。

これは私に大きな苦痛をもたらしました。この投稿が誰かの時間を救うことを願っています.

于 2010-03-12T22:07:41.283 に答える
3

Fulgan サイトからのダウンロードを使用して試行錯誤することもできます。

Indy のコピーを更新し、最新の OpenSSL DLL を使用することを検討してください。

于 2009-12-09T17:19:11.790 に答える
3

FWIW、私はこのhttpsを機能させるのに多くの時間を費やしたので、ここに私の成功した努力の結果があります.

1-デルファイ7

2-indy9.0.19_d7.exe

3- IdSSLIOHandlerSocket1.SSLOptions.Method := sslvTLSv1; また、

IdSSLIOHandlerSocket1.SSLOptions.Method:= sslvTLSv23; また、

IdSSLIOHandlerSocket1.SSLOptions.Method:= sslvTLSv3;

Delphi 7 で indy10.0.76_d7.exe と indy10.1.5_d7.exe を試してみましたが、HTTPS を機能させるどころか、正しくインストールすることもできません。「ユニット IdSysWin32 は、異なるバージョンの IdException.EIdException でコンパイルされました。」という悪名高いメッセージが表示されます。その問題の解決策を Web で検索しましたが、見つかりませんでした。他の多くの人にも同じメッセージが表示されていました。

https のテストに役立つサイトはhttps://msp.f-secure.com/web-test/common/test.htmlです。

ここに私の情報源があります:

procedure TForm1.ButtonHTTPSClick(Sender: TObject);
var
  IdHTTP1: TIdHTTP;
  ParamStringList: TStringList;
  s1: String;
  MemoryStream1: TMemoryStream;
  IdSSLIOHandlerSocket1:  TIdSSLIOHandlerSocket;
begin //  ssl works fine must have Indy version indy9.0.19_d7.exe and must use option  sslvSSLv23

  Screen.Cursor := crHourGlass;
  IdHTTP1 := TIdHTTP.Create(nil);
  IdSSLIOHandlerSocket1 := TIdSSLIOHandlerSocket.Create(nil); 
  IdHTTP1.IOHandler := IdSSLIOHandlerSocket1;

//  IdSSLIOHandlerSocket1.SSLOptions.Method := sslvTLSv1; // sslvSSLv1 works fine
    IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv3; // sslvSSLv3 works fine
//  IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv23; // sslvSSLv23 works fine
//  IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv2;   sslvSSLv2 does not work
    IdSSLIOHandlerSocket1.SSLOptions.Mode := sslmUnassigned;
    IdSSLIOHandlerSocket1.SSLOptions.VerifyMode := [];
  IdSSLIOHandlerSocket1.SSLOptions.VerifyDepth := 0;

  ParamStringList := TStringList.Create;
  MemoryStream1 := TMemoryStream.Create;
  s1 := IdHTTP1.Post('https://msp.f-secure.com/web-test/common/test.html', ParamStringList);
  MemoryStream1.Write(s1[1], Length(s1));
  MemoryStream1.Position := 0;
  MemoryStream1.SaveToFile('c:\temp\MemoryStream1.txt');
  Memo1.Lines.Clear;
  Memo1.Lines.LoadFromFile('c:\temp\MemoryStream1.txt');
  MemoryStream1.Free;
  ParamStringList.Free;
  IdSSLIOHandlerSocket1.Free;
  IdHTTP1.Free;
  Screen.Cursor := crDefault;
end;
于 2012-04-25T01:42:05.433 に答える
2

私の知る限り、Indyの最新バージョンは標準のOpenSSLバイナリで動作します。 ここからダウンロードしてください。しばらく前に、SSL接続でIndyを使用してDelphi FTPクライアントアプリを作成しましたが、現在のOpenSSLdllを出荷したばかりだと確信しています。

編集:アプリディレクトリを確認したところ、使用したDLLはOpenSSL 0.9.8.2(2006年8月3日)です。(古いアプリです)

編集2:そして私は最近の0.9.8k dllをコピーしたところですが、それらも正常に機能します。

于 2009-12-10T10:15:09.320 に答える