1

Indy (10.XX) コンポーネントを使用して、NTLM 認証を使用して Squid プロキシ サーバーのセットアップを介してhttpsの場所に正常に接続できた人はいますか?

http の場所には正常に接続できますが、https の場合、Indy は EAbort エラーを返します。

また、プロキシ サーバーとして FreeProxy を使用すると (NTLM 認証を使用)、http/https にも同様にアクセスできます。しかし、Squid NTLM + https は機能しませんか? 誰かがこれを機能させましたか?

ありがとうラエル

4

1 に答える 1

1

ここにいるよ

1 - まず、indy のソースが更新されていることを確認してください。

2 - Indy SLL DLLSから SSL dll をダウンロードし、アプリの出力に配置します。

3 - 次のプロパティが構成されたプロパティにTIdSSLIOHandlerSocketOpenSSL接続されていることを確認します。TidHttp IOHandler

SSLOptions.Method := sslvSSLv23;
SSLOptions.Mode := sslmUnassigned;
OnVerifyPeer := SSLIOHandlerVerifyPeer;
SSLOptions.VerifyMode := [sslvrfPeer];
SSLOptions.VerifyDepth := 2;

4 - このイベントを書きます:

function SSLIOHandlerVerifyPeer(Certificate: TIdX509; AOk: Boolean; ADepth, AError:    Integer): Boolean;
begin
  Result := True;
end;

5 - これらのユニットを uses 句に含めます。

IdAuthentication, IdAuthenticationDigest, IdAuthenticationNTLM

6 -TidHttp.OnProxyAuthorizationイベントを次のように設定します。

procedure IdHTTPProxyAuthorization(Sender: TObject; Authentication: TIdAuthentication; var Handled: Boolean);
begin
  Handled := False;
end;

7 - これらのプロパティを設定します。

IndyHttpClient.HTTPOptions := IndyHttpClient.HTTPOptions + [hoKeepOrigProtocol] + [hoInProcessAuth];
IndyHttpClient.ProtocolVersion := pv1_1;
IndyHttpClient.ProxyParams.ProxyServer := 'you proxy address here'
IndyHttpClient.ProxyParams.ProxyPort := 8080;
IndyHttpClient.ProxyParams.ProxyUsername := 'your proxy username here';
IndyHttpClient.ProxyParams.ProxyPassword := 'your proxy psw here';

これで準備完了です。このコードは、Microsoft ISA Server でも機能します。ご希望でしたら、私のコンポーネントの完全なソース コードをお送りします。ポルトガル語で書かれているので、ここには投稿しません (誰かが投稿してもいいと言わない限り)。

于 2011-03-17T13:04:34.280 に答える