3

私はこの問題を約2週間抱えています。私は多くの研究を行い、さまざまな方法を試しましたが、喜びはありませんでした。コンピューター(Windows 7 Pro)にSQL Server 2008 r2を搭載し、IIS7.5を使用している開発Webサイトがあります。データベースとWebサーバーを実行している実際の開発サーバーがありますが、私の場所のためにメインの開発サイトを使用できません。自己署名の信頼されたルート証明書を発行しました:

makecert -r -pe -n "CN=ROOT AUTHORITY" -ss my -sr CurrentUser -a sha1 -sky signature -cy authority -sv ca.pvk ca.cer

次に、それをローカルコンピューターの信頼されたルートにインストールします。その後、IISで使用する証明書を作成しました。

makecert -pe -n "CN=example.website.name.com" -a sha1 -sky exchange -eku 1.3.6.1.5.5.7.3.1 -ic ca.cer -iv ca.pvk -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -sv server.pvk server.cer

次に、IIS用の.pfxファイルを作成します

pvk2pfx -pvk server.pvk -spc server.cer -pfx server.pfx

上記を行った後。証明書をIISにインポートしてから、WebサイトをSSL証明書(server.pfx)にバインドします

それがすべて終わった後、私はウェブサイトhttps://example.website.name.comにアクセスし、403.7が禁止されます。

誰かがこの問題で私を助けてくれますか?

4

1 に答える 1

2

これらの落とし穴のいくつかを見てください...

サーバーの問題#1-渡されたクライアント証明書に、サーバーに存在しない1つ以上の証明書パスがあります。認証を開き、認証パス(タブ)に移動し、各ルート認証局がSERVERSの信頼されたルート認証局に含まれていることを確認します。サーバーに証明書をインストールする必要はありません。証明書(ローカルコンピューター)\信頼されたルート証明機関の下にあるルート機関の公開鍵だけをインストールする必要があります。

サーバーの問題#2(前述の解決策)-IISでは、サイトで、SSL設定が[承認]または[必須]に設定されていることを確認します(無視しないでください)。Requireを使用する利点は、IISログに403 7エラーが表示されるのに対し、AcceptはIsPresent == falseを取得しますが、200httpコードを使用することです。

クライアントの問題#1-サーバーの問題#1と同じように、これらの機関を信頼するようになりました。

クライアントの問題#2-信頼できるルート権限がありますが、証明書自体の秘密鍵はありません。公開鍵(.cer)ではなく、必ずpfx(秘密鍵)を証明書ストアにインストールしてください。また、証明書ストアで証明書をダブルクリックすると、秘密鍵を持っているかどうかを確認できます。[全般]タブに、同じことを示すメッセージが表示されます。

クライアントの問題#3-証明書を間違った場所に置きました。おそらく、(現在のユーザー)ではなく、証明書(ローカルコンピューター)\個人\証明書に証明書を配置するのが最適です。これにより、コードを実行していて実際にアクセスする必要があるアカウントを処理するために証明書を使用できるようになります。

クライアントの問題#4-証明書を右クリックします(.cerファイルではなくストア内)->すべてのタスク->秘密鍵の管理...そして、コードを実行しているプロセスアカウントに「読み取り」権限があることを確認します。これの簡単なテスト(ただし、本番環境での使用はお勧めしません)は、「Everyone」を既読として追加して、これが問題であるかどうかを確認することです。

于 2014-04-13T02:22:50.897 に答える