SHA-1 よりも強力な自己署名証明書を作成するにはどうすればよいですか?

SHA-1 よりも強力な自己署名証明書を作成するにはどうすればよいですか?

開発環境では、IIS7.5 で自己署名証明書を作成できます。ただし、その証明書は SHA-1 であり、最近ブラウザーがそれについて文句を言っています。FireBug を開くと、次の警告が表示されます。

「このサイトは SHA-1 証明書を使用しています。SHA-1 よりも強力なハッシュ関数を使用する署名アルゴリズムを備えた証明書を使用することをお勧めします。」

私の質問は次のとおりです:

1) SHA-1 よりも強力な自己署名証明書を作成する方法はありますか?

2) そうでない場合、ブラウザにこれらの警告を表示しないように指示する方法はありますか?

アップデート

結局、@vcsjones の回答を使用しましたが、それだけでは十分ではありませんでした。動作させる前に解決しなければならない問題がいくつかありました。

1) 何らかの理由で、パスワード付きの証明書をインポートできませんでした。そのため、パスワードなしの証明書を作成しました。

2) IIS経由で.pfx証明書をインポートしたとき、バインディングの編集で新しい証明書を適用しようとすると、「指定されたログオンセッションが存在しません」というメッセージが表示され続けました。そこで少し調べたところ、次のことがわかりました。だから答える役に立つと思われる回答、具体的には Mike L の回答。

もう一つ付け加えたいのは、証明書をインポートするときには、.pfx証明書を選択することを忘れないでください。インポートウィザードのデフォルトの選択は*.cerで、これをインポートできます(私が犯した間違いです)が、IISサーバー証明書で証明書を見ることができませんでした。よく見ると、アイコンに小さなキーがありませんでした。今、私はそれについて調査し、次のように修復することができました。KB-889651記事。.pfx をインポートすれば、修復せずに動作するはずです。

もう 1 つ注意点として、この証明書に信頼の問題がある場合は、「信頼されたルート証明機関」にもインポートしてください。

答え1

はい。makecertWindows SDK の一部であるユーティリティを使用すると、次の操作を実行できます。

makecert -len 2048 -r -a sha256 -sv private.pvk -n CN=localhost cert.cer

パラメータ-aはハッシュ アルゴリズムを設定します。これにより、PVK と DER .cer ファイルが出力されます。もちろん、共通名を任意の名前に変更することもできます。ここでは例として localhost を使用しました。これらを PFX (証明書をインポートするときに IIS が好んで使用するもの) に組み合わせるには、pvk2pfx(これも SDK の一部です) を使用します。

pvk2pfx -spc cert.cer -pvk private.pvk -pfx out.pfx

これは、生成された 2 つのファイルを取得しmakecert、それらを PKCS12 .pfx ファイルに結合するだけです。

生成された PFX ファイルを使用して、IIS を開き、サーバー証明書の下にインポートし、新しい証明書を使用するようにサイトのバインディングを変更します。

答え2

私は職場でロックダウンされたWindows 7 Enterpriseコンピューターを使用しているため、Windows SDKをインストールしてアクセスすることができませんmakecert。ここでは、sha256自己署名証明書を作成した方法を説明します(https://core.telegram.org/bots/self-signed):

  1. 証明書を保存するディレクトリを決定します
  2. template.txtそのディレクトリに次の内容のテキスト ファイルを作成します。

    [NewRequest]
    
    ; At least one value must be set in this section
    Subject = "CN={your.domain.com}"
    KeyLength = 2048
    KeyAlgorithm = RSA
    HashAlgorithm = sha256
    ;MachineKeySet = true
    RequestType = Cert
    UseExistingKeySet=false ;generates a new private key (for export)
    Exportable = true ;makes the private key exportable with the PFX
    
  3. {your.domain.com}サイトにアクセスするために使用するアドレスに置き換えます。例:"CN=localhost"

  4. コマンドプロンプトを開き、証明書ディレクトリに移動します
  5. 走るcertreq -new template.txt RequestFileOut
  6. シリアル番号を知る必要があるので、certutil -store -user myシリアル番号を含むダンプを取得するために実行してください。
  7. {SERIALNUMBER}ダンプ内のシリアル番号と{YOURDER}.crt出力ファイルの名前に置き換えます。certutil -user -store -split my {SERIALNUMBER} {YOURDER}.crt
  8. {YOURDER}.crt入力ファイルの名前と{YOURPEM}.cer出力ファイルの名前に置き換えます。certutil -encode {YOURDER}.crt {YOURPEM}.cer
  9. {your.domain.com}実際の(テスト)ドメイン名と{YOURPKCS}.pfx出力ファイルの名前に置き換えます。certutil -exportpfx -user {your.domain.com} {YOURPKCS}.pfx NoChain

その後、IIS マネージャーの [サイト] -> [{サイト名}] -> [バインド...] ([サイトの編集] の下) に移動しました。次に、既に設定されていた https/443 をクリックし、[編集...] をクリックして、リストから新しい証明書を選択しました。

Firefox が、私のサイトが自己署名証明書を使用していると警告したので、それを例外として追加したところ、なんと、うまくいきました!

答え3

はい、「指定されたログオン セッションが存在しません」というエラー/警告メッセージも表示されました。

もう一度「OK」をクリックすると、受け入れられました。

関連情報