2016-03-22 10 views
0

Inno Setupの場合、サードパーティのツールをDwinsHsの名前で使用します。Innoセットアップ:サードパーティのツールを使用してSSL証明書エラーを無視するDwinsHs

このサードパーティツールは、インストールの一部としてファイルをダウンロードする機能を提供します。

機能DwinsHs_ReadRemoteURLを使用してHTTPSリクエストを送信したいとします。
すべてのTLS(SSL)証明書のエラーを無視するように要求しますが、方法が見つかりません。

このサードパーティのツールはオープンソースで、この機能はdwinshs.issで定義されています。これはサードパーティのツールをダウンロードして取得します。

DwinsHs_ReadRemoteURLをサードパーティのツールDwinsHsで使用して、HTTPSリクエストでSSL証明書のエラーをすべて無視するにはどうすればよいですか。

答えて

1

dwinshs.issはWinInet APIを使用します。このAPIを使用すると、未知のCAエラーを無視するには、InternetSetOption functionを呼び出す必要があります。

これは、引数としてセキュリティフラグを持つ整数へのポインタを取るため、やや複雑です。 Inno Setupは整数へのポインタをサポートしていません。しかし、pointers to structures(あなたがコメントした通り)をサポートしています。したがって、整数を構造体にラップすることができます。

InternetSetOptionの代わりに、文字列の代わりに構造体を使用する代替名を宣言する必要があります(Inno Setupは汎用ポインタをサポートしていないため、1つの宣言で十分です)。

const 
    INTERNET_OPTION_SECURITY_FLAGS = 31; 
    SECURITY_FLAG_IGNORE_UNKNOWN_CA = $00000100; 

type 
    TInteger = record 
    Value: Integer; 
    end; 

function InternetSetOptionInt(
    hInet: HINTERNET; dwOption: DWORD; var lpBuffer: TInteger; dwBufferLength: DWORD): BOOL; 
    external '[email protected] stdcall delayload setuponly'; 

など、それを使用します。

SecurityFlags.Value := SECURITY_FLAG_IGNORE_UNKNOWN_CA; 
InternetSetOptionInt(
    hRequest, INTERNET_OPTION_SECURITY_FLAGS, SecurityFlags, SizeOf(SecurityFlags)) 

は(hRequestdwinshs.issに割り当てられた後)。


代わりにプレーンHTTPを使用してください。証明書のエラーを無視するように設定されたHTTPSは、とにかく安全ではありません。


または、別のライブラリを使用してファイルをダウンロードしてください。私はまた、単なるHTTPリクエストを使用して使用して試みたが、それは、エラーコード6で失敗したが、場合関数のパラメータの

idpSetOption('InvalidCert', 'ignore'); 
+0

無効数 'InternetSetOption' – yuval

+0

Inno Download Pluginを有するすべての証明書のエラーを無視することができ私は正常に実行される有効な証明書を持つWebサイトを使用します。 HTTPリクエストが何とか証明書をチェックすることができますか? – yuval

+0

そして私の状況を悪化させるHTTPSではなくHTTPSをブロックするクライアントがあります。 – yuval

関連する問題