4

asp.netmvcアプリケーションがあります。Windows Server2008R2およびフレームワーク4.5で実行されています。1つのコントローラー。httpsチャネルを介してリモートSOAPサーバーにhttpclientpostxmlを使用します。しかし、非常に遅い。リクエストが完了するまでに6秒かかります。CAPI2ログを有効にします。エラーが見つかりました:

> System 
>
>  - Provider 
>
>   [ Name]  Microsoft-Windows-CAPI2 
>   [ Guid]  {5bbca4a8-b209-48dc-a8c7-b23d3e5216fb} 
> 
>   EventID 53 
> 
>   Version 0 
> 
>   Level 2 
> 
>  Task 53 
> 
>   Opcode 2 
> 
>   Keywords 0x4000000000000036 
> 
>  - TimeCreated 
>
>   [ SystemTime]  2013-03-06T00:09:12.342400000Z 
> 
>   EventRecordID 226 
> 
>   Correlation 
> 
>  - Execution 
>
>   [ ProcessID]  4716 
>   [ ThreadID]  3620 
> 
>   Channel Microsoft-Windows-CAPI2/Operational 
> 
>   Computer WIN-PFVACQLB4A9 
> 
>  - Security 
>
>   [ UserID]  S-1-5-82-100694679-852442941-408577778-1461352480-452402374 
> 
>
>- UserData 
>
>  - CryptRetrieveObjectByUrlWire 
>
>  - URL http://gtssldv-aia.geotrust.com/gtssldv.crt 
>
>   [ scheme]  http 
> 
>  - Object 
>
>   [ type]  CONTEXT_OID_CERTIFICATE 
>   [ constant]  1 
> 
>   Timeout PT15S 
> 
>  - Flags 
>
>   [ value]  286005 
>   [ CRYPT_RETRIEVE_MULTIPLE_OBJECTS]  true 
>   [ CRYPT_WIRE_ONLY_RETRIEVAL]  true 
>   [ CRYPT_LDAP_SCOPE_BASE_ONLY_RETRIEVAL]  true 
>   [ CRYPT_OFFLINE_CHECK_RETRIEVAL]  true 
>   [ CRYPT_AIA_RETRIEVAL]  true 
>   [ CRYPT_PROXY_CACHE_RETRIEVAL]  true 
> 
>  - AuxInfo 
>
>   [ maxUrlRetrievalByteCount]  100000 
>   [ fProxyCacheRetrieval]  true 
> 
>  - AdditionalInfo 
>
>  - NetworkConnectivityStatus 
>
>   [ value]  1 
>   [ _SENSAPI_NETWORK_ALIVE_LAN]  true 
> 
>  - Action 
>
>   [ name]  Call_WinHttpGetProxyForUrl 
>  - Error The Proxy Auto-configuration URL was not found. 
>
>   [ value]  2F94 
> 
> 
>  - Action 
>
>   [ name]  NoProxy 
> 
>  - Action 
>
>   [ name]  Call_WinHttpGetProxyForUrl 
>  + Error The Proxy Auto-configuration URL was not found. 
>
>   [ value]  2F94 
> 
> 
>  - Action 
>
>   [ name]  NoProxy 
> 
>  - HTTPRequestHeadersInfo 
>
>   Header GET /gtssldv.crt HTTP/1.1 
> 
>   Header Accept: */* 
> 
>   Header User-Agent: Microsoft-CryptoAPI/6.1 
> 
>   Header Connection: Keep-Alive 
> 
> 
>  - HTTPResponseHeadersInfo 
>
>   Header HTTP/1.0 200 OK 
> 
>   Header Connection: Keep-Alive 
> 
>   Header Date: Tue, 05 Mar 2013 23:43:39 GMT 
> 
>   Header Via: NS-248 
> 
>   Header Via: 1.0 hostname:80 (squid/2.6.STABLE21) 
> 
>  Header Content-Length: 1022 
> 
>   Header Content-Type: text/plain 
> 
>   Header Last-Modified: Wed, 21 Jul 2010 18:25:03 GMT 
> 
>   Header Accept-Ranges: bytes 
> 
>   Header Age: 540 
> 
>   Header ETag: "25f7fb-3fe-48be9eb969dc0" 
> 
>   Header Server: Apache/2.2.3 (Red Hat) 
> 
>   Header X-Pad: avoid browser bug 
> 
>   Header X-Cache: MISS from hostname 
> 
>   Header X-Cache-Lookup: HIT from hostname:80 
> 
> 
>  - Action 
>
>   [ name]  WriteToCache 
>  - Error The system cannot find the file specified. 
>
>   [ value]  80070002 
> 
> 
> 
>  - CacheInfo 
>
>   [ lastSyncTime]  2013-03-06T00:09:12.342Z 
>  - URLCacheResponseInfo 
>
>  [ responseType]  CRYPTNET_URL_CACHE_RESPONSE_HTTP 
>   [ lastModifiedTime]  2010-07-21T18:25:03Z 
>   [ eTag]  "25f7fb-3fe-48be9eb969dc0" 
>   [ proxyId]  DEAE4085 
> 
> 
>  - RetrievedObjects 
>
>  - Certificate 
>
>   [ fileRef]  BAE30B15DBB1544CF194D076B75B7BB9E3D6B760.cer 
>   [ subjectName]  GeoTrust DV SSL CA 
> 
> 
>  - EventAuxInfo 
>
>   [ ProcessName]  w3wp.exe 
> 
>  - CorrelationAuxInfo 
>
>   [ TaskId]  {2B4FC750-01D1-4D7E-BEEF-A3F9DD09B0E8} 
>   [ SeqNumber]  4 
> 
>  - Result 
>
>   [ value]  0 

また、[InternetExplorer]->[インターネットオプション]->[接続]->[LAN設定]->[設定を自動的に検出する]のチェックを外しました。何も変わりません。

助けを求めています。

ありがとう

4

2 に答える 2

1

おそらく手遅れですが、同じ問題を解決する方法は、ユーザー ID を見つけることでした。

[ UserID]  S-1-5-82-100694679-852442941-408577778-1461352480-452402374

レジストリ内の次の場所にあります。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList .

Crypto API 2 (CAPI2) を呼び出しているユーザーがわかります。私の場合は、「クラシック .NET アプリケーション プール」などでした。

なりすまし(十分な権限を持つ別のユーザーとしてプロセスを実行する)ことで修正したところ、この書き込みエラーが発生しなくなり、イベントログに赤いエラーメッセージが表示されなくなりました。

このために、ローカル コンピューターで管理者権限を持つユーザーを作成しました (これが最も安全なオプションではないことはわかっていますが、試してみる必要がありました)。結局、問題はプロキシにあるように見えましたが、その特定のエラーでした:.

>   [ name]  WriteToCache 
>  - Error The system cannot find the file specified. 
>
>   [ value]  80070002 
> 

どこかに書き込み権限がありませんでしたが、管理者は :P

また、ローカル グループ ポリシー エディターで、次のパスに従って (crypto API が常に CRL を要求していたため)、別のことを行いました。

[コンピューターの構成] > [Windows の設定] > [セキュリティの設定] > [公開キー] > [証明書パスの検証の設定] > [失効] タブ。[これらのポリシー設定を定義する] を有効にし、[CRL および OCSP 応答を有効期間より長く有効にする] も有効にします。

次に、この CRL の有効期間を 1 年 (8760 時間) に延長しました。これも長すぎることはわかっていますが、必要性やセキュリティ上の懸念によって異なります。私の場合は十分に安全です。

それがあなたを助けることを願っています

于 2014-01-03T15:04:50.380 に答える
0

私の答えはここから取られます: http://social.technet.microsoft.com/Forums/en-US/winserversecurity/thread/82c52c69-1a53-4f48-8c7e-37bc7364dca3/

http://wpad.mylab.local/wpad.dat内の javascript で応答するように IIS サーバーをセットアップします。wpad.datの MIME タイプを追加することを忘れないでください (application/x-javascript で問題ありません)。プロキシが必要ない場合、wpad.dat ファイルの JavaScript は次のようになります。

function FindProxyForURL(url, host)
{
    return "DIRECT";
}

その後、certutil を使用すると、CAPI2 ログにイベント 53 が記録されなくなります。

于 2013-05-29T18:50:10.717 に答える