[Delphi] Indyのエラー関連






トップページへ

ご参考の際は自己責任でお願いします。また、提示した解決法はあくまでも一例なので、必ず解決できるとは限りません。

 

※画像は一部を除きタップ(クリック)で拡大します。

 

Q. 例外クラス
EIdIOHandlerPropInvalid (メッセージ ‘IOHandler value is not valid’)を送出しました。

A. IOHandlerプロパティが空欄の時に出ることがあります。

フォーム上にIdSSLIOHandlerSocketOpenSSLコンポーネントを配置し、それを指定することで回避できる場合があります。

 

 

 

Q. IdSSLIOHandlerSocketOpenSSLコンポーネントでエラーになる。あるいは、プログラムを開発したマシンならエラーにならないが、他のマシンで実行するとエラーになった場合。

実行例 Methodプロパティが

「sslvSSLv2」の時

例外クラス
EIdOSSLConnectError (メッセージ ‘Error connetcting with SSL.
error:00000006:lib(0):func(0):EVP lib’)を送出しました。

 

「sslvSSLv23」の時

例外クラス
EIdOSSLUnderlyingCryptoError (メッセージ ‘Error connetcting with SSL.
error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version’)を送出しました。

 

「sslvSSLv3」の時

例外クラス
EIdOSSLUnderlyingCryptoError (メッセージ ‘Error connetcting with SSL.
error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure’)を送出しました。

 

「sslvTLSv1」「sslvTLSv1_1」「sslvTLSv1_2」の時

例外クラス
EIdOSSLUnderlyingCryptoError (メッセージ ‘Error connetcting with SSL.
error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert protocol version’)を送出しました。

 

2022/10/22追記

 

Methodプロパティとは関係なく、同じWindows10のマシンが2台で「開発したマシンでは正常、他のマシンではエラー」といった事例がありましたが、同じ方法で解決しました。

 

A. Embarcadero のサイトを参考に、開発用プラットフォーム向けの最新の OpenSSL アーカイブをダウンロードし、その中から次の2つのライブラリファイルを「自分のアプリケーションと同じフォルダにコピー」します。

libeay32.dll
ssleay32.dll

コピー後にプログラムの再コンパイルは不要と思われ、「同じフォルダに置くだけ」で動作します(あくまでも当方の見解です)


2022/10/22追記

OpenSSLの64bit用をダウンロードして

libeay32.dll
ssleay32.dll

を自作PGと同じフォルダに置いたものの再度エラーとなったので、今度はOpenSSLの32bit用をダウンロードして2つのdllを同じフォルダに置いたら、エラーが出ませんでした。

OSは64bitなのですが、自作PGが32bitだったからかもしれません。


 

それでも上記のエラーが出る場合は

接続するサーバー(サイト)によってSSLのプロトコルが異なるため、「Methodプロパティの変更」を検討してみて下さい。

 

私の接続先サイトの場合、

sslvSSLv23

sslvTLSv1_2

の2つのみ正常で、それ以外ではエラーでした。

 

あくまでも一例です。

 

 

他の方の関連記事

Delphi(楽天市場で探すamazonで探す)でHttps TSLページを開けない – Indyエラー

 

リンク切れ

DelphiでIndyのGitHubAPIを使用する

https://www.javaer101.com/ja/article/47255513.html

 






関連記事
[Delphi]MySQLへの接続で失敗(未解決)

[Delphi] Indyをバージョンアップする

[DELPHI] フォームにプロパティを追加する

[Delphi]StringReplaceのヘルプの誤記載

Delphi メニュー