2

動作中のクライアントとサーバーがあり、終了すると有効な SSL 証明書が作成されます。

現時点では、テストの意味で、次のようにフラグINTERNET_FLAG_IGNORE_CERT_CN_INVALIDを追加して、クライアントでの SSL 検証の必要性を無効にしています。SECURITY_FLAG_IGNORE_UNKNOWN_CA

HINTERNET hRequest = HttpOpenRequest(hConnection,
           "GET","index.html",
           NULL,NULL,NULL,
           INTERNET_FLAG_RELOAD|
           INTERNET_FLAG_EXISTING_CONNECT
           #ifdef  __HTTPS__
           | INTERNET_FLAG_SECURE |INTERNET_FLAG_IGNORE_CERT_CN_INVALID|SECURITY_FLAG_IGNORE_UNKNOWN_CA
           #endif
           ,
           dwContext);

これをラップトップで完全に動作させることができました。今、PCで使ってみました。まったく同じコード。ファイルをコピーして貼り付けました(両方ともVisual Studio Professional 2008)が、12045エラーが発生しました。つまりInvalid Certificate Authority

Windows ファイアウォールを無効にしようとしましたが、うまくいきませんでした。同じルーターに接続された両方のコンピューター

これを引き起こす可能性のあるアイデアはありますか?

ありがとう!

EDIT基本的に何が起こるかはMicrosoft がここで 説明したものと同じですが、この記事のみが対象ですWindows CE

4

1 に答える 1

2

これは役に立ちますか?

サーバー SSL 証明書が不明または無効な認証局によって発行された場合、WinInet HttpSendRequest API または MFC CInternetFile::SendRequest はエラー 12045 (ERROR_INTERNET_INVALID_CA) で失敗します。

フラグが指定されていないInternetSetOption()ため、次のように、発行する前にリクエストを呼び出す必要があると思います。HttpOpenRequest()SECURITY_FLAG_IGNORE_UNKNOWN_CA

HINTERNET hRequest = HttpOpenRequest(hConnection,...

#ifdef  __HTTPS__
    DWORD dwFlags;
    DWORD dwBuffLen = sizeof(dwFlags);
    InternetQueryOption(hRequest, INTERNET_OPTION_SECURITY_FLAGS, (LPVOID)&dwFlags, &dwBuffLen);

    dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;

    InternetSetOption (hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, sizeof (dwFlags));
#endif

HttpSendRequest(hRequest,...
于 2012-12-28T15:12:15.700 に答える