19

本番Webサーバー(IIS6)でホストしようとしているWCFサービスがあります。Webを設定し、証明書をWebに関連付けました。サービスのURLを参照しようとすると、イベントログに次のエラーが記録されます。

例外メッセージは次のとおりです。証明書'CN= .mydomain、OU = Secure Link SSL Wildcard、OU = IT、C = US'には、鍵交換が可能な秘密鍵がないか、プロセスがアクセスできない可能性があります。秘密鍵の権利。詳細については、内部例外を参照してください。---> System.ArgumentException:証明書'CN = .mydomain.com、OU = Secure Link SSL Wildcard、OU = IT、O = mydomain、C=US'はそうではない可能性があります鍵交換が可能な秘密鍵を持っているか、プロセスに秘密鍵へのアクセス権がない可能性があります。詳細については、内部例外を参照してください。---> System.Security.Cryptography.CryptographicException:ハンドルが無効です。

ASP.Net 1.1、2、および4がすべて「Webサービス拡張機能」で「許可」に設定されていることを確認しました。また、証明書がiisに設定されていることを確認しました。これには、「この証明書に対応する秘密鍵があります」と表示されます。また、実行権限は「スクリプトと実行可能ファイル」に設定されています。

4

5 に答える 5

40

私はこの問題を抱えていましたが、サービスが実行されていたアカウントには、証明書の秘密鍵にアクセスする権限がないことが判明しました。

これを解決するために使用した手順は次のとおりです。

  • Cetificate マネージャーを開始します。これを行うには、MMC を実行し、[ファイル] - [スナップインの追加と削除...] をアクティブにしてから、[証明書] を追加し、次のウィザード ダイアログで [コンピューター アカウント] と [ローカル コンピューター] を選択します。
  • 証明書マネージャーで、該当する証明書を右クリックし、[すべてのタスク]-[秘密鍵の管理] を有効にします。
  • これにより、権限ウィンドウが表示されます。[追加] をクリックします
  • このサービスを実行するアカウント名またはグループを追加します。
于 2013-09-08T23:07:35.553 に答える
2

あなたの証明書は、鍵交換ではなく署名用に作成されたようです。これは、SSL証明書では正常であると思います。

makecert のドキュメントを見ると、 -skyスイッチを使用して、証明書を署名または鍵交換に使用するかどうかを指定できることがわかります。タイプ exchange で自己署名証明書を作成してみて、例外が引き続き発生するかどうかをテストできます。証明書が無効であるという例外を回避するために、自己署名証明書をマシンの信頼されたルート証明機関フォルダーに入れることを忘れないでください。

于 2012-11-01T20:11:01.300 に答える
0

また、証明書にアクセスする必要があるアカウント名またはグループが、証明書が存在するフォルダー階層にアクセスできることも確認してください。たとえば、証明書が 'C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys '、それにアクセスする必要があるアカウントが 'NETWORK SERVICE' である場合、'NETWORK SERVICE' はそのフル パスにアクセスする必要があります。ファイルに権利を割り当てるだけでは十分ではありません。

于 2018-03-26T02:44:29.457 に答える