私はsslを使用してwcfサービスを保護することを学ぼうとしています。私はこのウェブサイトを見つけました、そして私はステップに従っています。 http://robbincremers.me/2011/12/27/wcf-transport-security-and-client-certificate-authentication-with-self-signed-certificates/ 。しかし、証明書を作成する段階になると、問題が発生しました。以下を使用して証明書を作成します。
makecert –pe –n “CN=localhost” –sr localmachine –ss my –sky exchange
デフォルトでは、makecertユーティリティは、ルート機関が「ルート機関」である証明書を作成します。何らかの理由で、ルート機関の証明書が破損しました(無効なデジタル署名)。有効なルートエージェンシー証明書を復元するにはどうすればよいですか?
上記のステートメントを使用して証明書を作成し、それをダブルクリックすると、これが表示されるはずです。
しかし、私はこれを見ています:
したがって、信頼できるルート認証局にルートエージェンシーを追加しても、意味がありません。
私のガイドサイトの他のスクリーンショット:
そして、私が持っています
「この証明書には無効なデジタル署名があります」の問題を修正するにはどうすればよいですか?
これは、証明書キーの長さ制限が原因である可能性があります。
マイクロソフトは、2012年8月に1024ビットの最小キー長制限を適用しました。少なくとも1024ビットのキー長で自己署名証明書が作成されていることを確認してください。
詳細については、このブログ投稿をチェックしてください 「この証明書には無効なデジタル署名があります。」というメッセージは実際にはどういう意味ですか?
次のように-len
パラメータを使用して、証明書を作成するときにキーの長さを指定できます。
makecert -pe -ss MY -$ individual -n "CN=your name here" -len 2048 -r
コマンドプロンプトで(管理者権限で)次のコマンドを実行できます。
certutil -setreg chain\minRSAPubKeyBitLength 512
これにより、必要なキーの長さが戻されます(安全性が低下します!)
このウェブサイトからの引用:
その理由は、公開鍵の長さフィールドにあります。この証明書では、公開鍵は512バイトのみです。 2012年8月、Microsoftは、長さが1024ビット未満のRSAキーを持つ証明書をブロックするアップデートをリリースしました。これは、ブルートフォースメソッドを使用して秘密鍵を発見できず、秘密情報が公開されないようにするためです。更新後、CryptoAPIは証明書の信頼チェーンを構築し、時間の有効性、証明書の失効、および証明書ポリシー(目的など)を使用してそのチェーンを検証し、チェーン内の証明書にRSAがないことを確認する追加のチェックを実装します1024ビット未満のキー長。このような証明書は信頼されません。実際にはInternet Explorerで表示されるエラーです。 「このWebサイトによって提示されたセキュリティ証明書は安全ではありません」は、証明書のプロパティのメッセージよりも意味があります(「この証明書には無効なデジタル署名があります」)。それが実際に起こっていることだからです。証明書は、クライアントとサーバーの間で送信しているデータを保護するには不十分です。では、CryptoAPI拡張機能によると、デジタル署名が有効ではないのはなぜですか。公開鍵暗号では、秘密鍵は公開鍵から生成されます。公開鍵として選択された非常に大きな素数です。つまり、公開鍵が弱い場合、つまり512バイト未満の場合、結果の秘密鍵も同様になります。発行された証明書の署名に使用されるのは発行機関の秘密鍵であるため、署名自体も脆弱です。そのため、CryptoAPIは「この証明書には無効なデジタル署名があります」というメッセージを表示します。表示されるべきだったのは、「この証明書は弱い秘密鍵などで署名された」というものです。 1024ビット未満のキー長の証明書を使用したい場合は、Microsoftの更新によって課される制限を上書きできます。その方法は、更新に付属のKB記事に記載されています。これは、私が正しい軌道に乗っていることをテストするために実行したコマンドで、IEを使用して証明書を使用できるようにします。