私は開発者向けに多くのサーバーとPCを使用しています。サーバーはwin2003、PC開発者はWindowsXPです。
preiis01という名前のサーバーWin2003の実稼働環境では、社内の他のユーザーが、サーバーpreiis01にログインするために他のユーザー(私にとっては不明なユーザー)を使用してクライアント証明書をインストールします。
ログインサーバーpreiis01にユーザー「domainCompany\myuser」を使用しています(ターミナルサーバー、Windows XPのリモートデスクトップを使用)。
preiis01では、
mmc->スナップイン->ローカルマシンの証明書を実行します。ノード->個人->証明書で、クライアント証明書を見ました:
ENTIDAD COMPANYINSURESAに発行-CIFA93-NOMBRESURNAME1 NAME1
FNMT Clase2CAによって発行されました
証明書のプロパティで、「93 bc a4 ad 58 c9 3c af 8b eb 0b 2f 86 c7 9d 81 70 a6c413」という指紋を見ました。
今、私はこのコマンドを実行します:
1.)FindPrivateKey My LocalMachine -n "CN = ENTIDAD COMPANY INSURE SA --CIF A93 --NOMBRE SURNAME1 NAME1" -a
そして私はこのエラーを受け取ります:
FindPrivateKeyは、次の理由で失敗しました。ストアにキー'CN = ENTIDAD COMPANY INSURE SA --CIF A93 --NOMBRESURNAME1NAME1'の証明書が見つかりませんでした。
2.)FindPrivateKey My LocalMachine -t "93 bc a4 ad 58 c9 3c af 8b eb 0b 2f 86 c7 9d 81 70 a6 c4 13" –c
そして私はこれを手に入れます:
* FindPrivateKeyは、ユーザーがX.509証明書の秘密鍵ファイルの場所を見つけるのに役立ちます。
使用法:FindPrivateKey [{{-n} | {-t}} [-f | -d | -a]]
<subjectName> subject name of the certificate
<thumbprint> thumbprint of the certificate (use certmgr.exe to get it)
-f output file name only
-d output directory only
-a output absolute file name
例:FindPrivateKey My CurrentUser -n "CN = John Doe"
例:FindPrivateKey My LocalMachine -t "03 33 98 63 d0 47 e7 48 71 33 62 64 76 5 c 4c 9d 42 1d 6b 52" -c *
3.)winhttpcertcfg.exe -l -c LOCAL_MACHINE \ My -s "ENTIDAD COMPANY INSURE SA --CIF A93 --NOMBRE SURNAME1 NAME1"
そして私はこのエラーを受け取ります:
Microsoft(R)WinHTTP証明書構成ツールCopyright(C)Microsoft Corporation 2001.一致する証明書:
CN = ENTIDAD COMPANY INSURE SA-CIF A93-NOMBRE SURNAME1 NAME1
OU = 700012436
OU=FNMTクラス2CA
O = FNMT
C = ES
エラー:
秘密鍵へのアクセスが正常に取得されませんでした。これは、証明書をインストールしたユーザーのみが実行できます。
秘密鍵へのアクセスが正常に取得されませんでした。
助言がありますか ??
更新:Marcel Roma(ソーシャルmsdnフォーラム)
ほとんどの場合、証明書は社内の他の人(管理者など)によってインストールされました。その人だけが証明書の秘密鍵にアクセスできます。FindPrivateKeyツールをダウンロードし、管理者に実行して秘密鍵ファイルが保存されているディレクトリを見つけてもらい、プロセスがファイルにアクセスできるように必要な権限を設定してもらいます。
エンコーディングの問題が原因で、WindowsXPがファイルから秘密鍵を抽出できなかったという報告もいくつかあります。
アップデート:
ドメイン「domainCompany\Pre_Certificado」のユーザーは、ストアローカルマシンに証明書をインストールします。
domainCompany \ Pre_Certificadoは、IIS_WPGグループの管理者であり、ローカルポリシーがあります:「サービスとしてログオン」</ p>
IIS6.0でAppPoolIdentityを次のように構成します:domainCompany \ Pre_Certificado
ASP.NETアプリケーションは、ID :: domainCompany\Pre_Certificadoを使用して実行されます
AppPoolをリサイクルしてアプリケーションを実行すると、System.Security.Cryptography.CryptographicExceptionが発生します:復号化用の証明書と秘密鍵が見つかりません
もう一度テストする場合は、domainCompany \ Pre_Certificadoユーザーを使用してサーバーIISにセッションにログインし、ASP.NETアプリケーションでページを呼び出します。すべて問題ありません。
(注:ターミナルサーバーを使用してサーバーIISにログインします)
ただし、サーバーIIS(ユーザー:domainCompany \ Pre_Certificado)でセッションをログオフすると、同じエラーが発生します。
System.Security.Cryptography.CryptographicException:復号化用の証明書と秘密鍵が見つかりません
助言がありますか ??