8

TidHTTP + TIdSSLIOHandlerSocketOpenSSL + 2つのDLLを使用しています:http://indy.fulgan.com/SSLのssleay32.dllとlibeay32.dll

しかし、HTTPアナライザーで私のプログラムのすべての作業を見ることができます!HTTPSとしてではなく、HTTPとして機能します。Operaを使用している場合、同じサイト(https://esta.cbp.dhs.gov/esta)でのダウンロードが表示されません。

TidHTTPとTIdSSLIOHandlerSocketOpenSSLに特別なパラメーターを設定しませんでした(必要かもしれませんが、正確にはわかりません)。

TIdSSLVersion(sslvSSLv23)+ SSL証明書の場所を使用する必要がありますか?この証明書はどこで入手できますか?それともRootCertFileだけですか?

idHttpのポートを443に変更する方法(私はそれをしなければなりませんか?)?

私が使う:

procedure TForm1.FormCreate(Sender: TObject);
var mem:tmemorystream;
begin
try
  mem:=TMemoryStream.Create();
  try
    idhttp1.Get('https://esta.cbp.dhs.gov/esta/',Mem);
  except
   on E : Exception do ShowMessage(E.Message);
  end;
finally
  mem.Free;
  idhttp1.Free;
end;
end;

私のビデオをご覧ください:http://liga-installer.realservers.info/ssl.mp4

スクリーンショット:

ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください

ありがとうありがとう助けてくれてありがとう!!!

4

2 に答える 2

15

この簡単な例は、そのままDelphi XEで機能するため、ポートを変更したり、クライアント側で証明書を使用したりする必要はありません。これはRosettaCodeの例に基づいています:

Uses
  IdHttp, IdSSLOpenSSL

..。

procedure TForm2.Button1Click(Sender: TObject);
var
  s: string;
  lHTTP: TIdHTTP;
begin
  lHTTP := TIdHTTP.Create(nil);
  try
    lHTTP.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(lHTTP);
    lHTTP.HandleRedirects := True;
    s := lHTTP.Get('https://esta.cbp.dhs.gov/esta/');
    RichEdit1.Text := s;
  finally
    lHTTP.Free;
  end;
end;

問題は、展開する必要のあるDLLのバージョンである可能性があります。最近のバージョンではセキュリティの問題が修正されているため、Indyのバージョンを最新にアップグレードし、fulganサイトの最新のOpenSSLライブラリを使用することをお勧めします。

更新:Webブラウザーを使用してサイトを表示できないということですか、それともHTTPアナライザーでトラフィックを表示できないということですか?Robが述べたように、サイトが通常のWebブラウザーを使用して表示されない場合、問題はアプリケーションにない可能性があります。

于 2011-07-14T13:08:56.993 に答える
2

間違ったツールを使用して通信をチェックしています。観察結果は、SSL / TLSを使用している場合でも、使用されているプロトコル(HTTP1.0または1.1)のみを示しています。

SmartSnifやWiresharkなどのツールを試して、実際のネットワークトラフィックを確認してください。トラフィック全体が暗号化されたデータでポート443を使用していることがわかります。

HTTP / 1.1(または1.0)のヘッダー応答はHTTPSトラフィックに対して完全に正しいです。SSL/ TLS暗号化は転送されたデータを変更しませが、HTTPトラフィックの上のトランスポート層です。

HTTPアナライザーについて(Webサイトhttp://www.ieinspector.com/httpanalyzer/から):「主な機能:HTTPSをサポートし、 HTTPS/SSL接続を介して送信される暗号化されていないデータをHTTPと同じ詳細レベルで表示します。」

つまり、前述したように、SSLをデコードし、HTTPベースの暗号化されていないトラフィックを表示します。

よろしく、Arvid

于 2011-07-14T15:38:50.730 に答える