2009-12-09 22 views
16

私は(マルコ・カントゥの優れたRESTの例次の)文書をGoogleに接続しようとしているが、私は、次のSSLエラーを取得しています:INDY 10.1.5 - どのSSL dllがDelphi 2006で動作しますか?

1)私はopensslの-0.9.8i-I386-win32のからSSL DLLを使用している場合.zipの私はエラーを取得する:

2を "SSLライブラリをロードできませんでした")私はindy_OpenSSL096m.zipからSSL DLLを使用している場合、私はエラーを取得する:

"SSLで接続エラー"

3)私はopenssl-0.9.8h-i386-win32-Indy-IntraWebEdition.zipからSSL DLLを使用している場合、私はエラーを取得する:

今、私はこれを研究してきたし、そこ

を「SSLライブラリをロードできませんでした」スタックオーバーフローのリンクを含む、dllに関する死んだリンクに関する多くの推奨事項です。私は使用しているINDYのバージョンと互換性のあるSSL dllを見つける必要があると思う。

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

答えて

15

私はINDY 10.2.3にアップグレードしても同じ問題を抱えていました。見つけられる "libeay32.dll"と "ssleay32.dll"ファイルの異なるバージョンを試しました。 「エラー:00000006:lib(0):func(0):EVP lib」のようなもので「SSLライブラリをロードできませんでした」または「SSL接続エラー」の2つのエラー:

私がTidSSLioHandlerSocketOpenSSL.SSLOptions.MethodをsslvSSLv23に変更すると、すべてがうまく始まりました。

もう少し調査して、「SSLライブラリをロードできませんでした」というエラーが表示されたらすぐに理解しました。間違ったバージョンのDLLファイルを使用していました。 :00000006:lib(0):func(0):EVP lib "私は間違ったSSLOptions.Method値を使用していました。

その他の情報:私は、Delphi 2006、INDY 10.2.3を使用していると私は、これは私にそんなに痛みの原因となったWinXPの上でプロ

をのrunninよ、私はこの記事が誰かにいくつかの時間を節約することを願っています。

+0

非常に有用なコメントですが、これらは同じ状況の他の人に役立つと確信しています。ありがとう。 – Mattl

+0

+1ありがとう、助けて! – johnny

+0

+1この修正はトリックでしたが、私はsslvSSLv23が何を意味するか分からなかったが、私はhttp://www.ehow.com/how_5953595_determine-ssl-protocol-version.htmlを読んでいた。私は最新のIndy9をD5 Windows2000で使用している。 – notidaho

3

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

Indyのコピーを更新し、最新のOpenSSL DLLを使用することをお勧めします。

+1

私はあなたが正しいと思います。私はINDYを更新し、最新のOpenSSL dllを使用する必要があります。 – Mattl

+0

私はそれが事をもっと簡単にするだろうと思う。 –

+1

Fulgainインストーラで私が夢中になっていることは分かっていますか?いくつかのインストーラは、Windowsインストールフォルダ(例えば、0.9.8h)に直接インストールされます。それは黒い魔法のようなSSL dllの作業を見つけるようです。 –

2

私が知っている限り、もっと新しいバージョンのIndyは、標準のOpenSSLバイナリで動作します。 Download from here。しばらく前にIndyをSSL接続で使用してDelphi FTPクライアントアプリを製作しましたが、私たちは現在のOpenSSL dllを出荷したことを確信しています。

編集:私が使用したDLLはOpenSSL 0.9.8.2(3-Aug-06)です。 (これは古いアプリです)

編集2:最近の0.9.8k dllをコピーしたところ、うまく動作します。

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の別のバージョンでコンパイルされました。"私はウェブ上でその問題の解決策を探して、見つけられませんでした。他の人たちが同じメッセージを持っていました。

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; 
+0

ありがとう。それは私のためにうまくいきます。 Indy-10.1.5とDelphi-7、Win-7x64とSSL dllをindy_OpenSSL096m.zipからあなたのリンクhttps://msp.f-secure.com/web-test/common/test.htmlに持っています。 ただし、SSLOptions.Method = sslvSSLv23またはsslvTLSv1の場合のみ。ドロップダウンリストに「sslvTLSv23」または「sslvTLSv3」がありません。代わりに「sslvSSLv2」と「sslvSSLv3」があります。そして、私は "IdHTTP1.get"を単純化バージョンとして使うか、パラメータなしでリクエストしています。 –

1

あなたはusing.Copyインディのdllすなわちlibeay32.dll、libssl32.dllと あるインディバージョンを探しますssleay32.dllをWindows/System32フォルダにコピーします。 "SSLライブラリをロードできませんでした"というエラーが解決されます。

関連する問題