3

IISでホストされるWCFアプリケーションを作成しようとしています。このWCFアプリは、サードパーティのWebサイトを呼び出してCSVファイルをダウンロードします。サードパーティのWebサイトは、WCF呼び出しを認証するための証明書を提供しています。私の開発環境は、

-OS:Windows 2008R2 -ツール:Visual Studio 2010(.Net 4.x)

開発中、HttpWebRequestを使用して呼び出しを行うのに問題はありませんが、IISに同じものを展開した後、IISを開発サーバーとして使用してVisual Studio 2010を実行した場合でも、次のエラーが発生します。

「\r\n証明書情報がログインと一致しません。接続が拒否されました。」

インストール中の証明書にはパスワードが必要です。「マイユーザーアカウント」と「コンピューターアカウント」にインストールしました。IEにもインストールされています。すべてのインストールで、「信頼されたルート証明機関」にインストールされます。しかし、それでもエラーメッセージが表示されます。以下にコードスニペットを示します。

        X509Certificate2 xc = new X509Certificate2(CertPath, GetCertificatePassword());

        HttpWebRequest wc = (HttpWebRequest)WebRequest.Create(QryUrl);
        wc.ClientCertificates.Add(xc);
        Stream str = wc.GetResponse().GetResponseStream();

誰かが私に情報を提供してくれるなら、いいでしょう、もう一度ありがとう、

4

1 に答える 1

1

これは単なる推測です。IISが実行されているユーザーアカウントが、証明書に関連付けられている秘密鍵にアクセスできることを確認してください。

MMC証明書スナップインを使用する場合は、証明書を選択し、右クリック->[すべてのタスク]->[秘密鍵の管理]を選択します。IISのユーザーアカウントが表示されない場合は、そこから追加できます。 [追加]をクリックし、たとえばIISをネットワークサービスとして実行している場合に表示されるダイアログで、「ネットワークサービス」(スペースを含む)と入力し、[名前の確認]をクリックします。次に、秘密鍵の管理に戻ったら、セキュリティを設定できます。アクセス。

TLS接続に秘密鍵を使用するには、読み取りアクセスを許可するだけでよいと思います。

ローカルコンピューターまたは現在のユーザーにインストールされているかどうかに関係なく、秘密キーへのアクセスを設定できますが、IISは、ユーザーアカウントとして実行されない限り、現在のユーザーにアクセスできません。

また、秘密鍵を使用するクライアント証明書の場合は、ほとんどの場合、信頼されたルート証明機関ではなく、パーソナルストアに保存する必要があります。したがって、Local Computer、Personalを試して、IIS(またはアプリケーション)が実行されているアカウントの秘密鍵へのアクセスを許可してください。

于 2011-02-22T18:17:38.263 に答える