web-dev-qa-db-ja.com

開発SSLにmakecertを使用する

私の状況は次のとおりです。

私はすべての開発者のマシンにインストールされるSSL証明書と、2つの内部サーバー(すべてが非実稼働)を作成しようとしています。

これらすべての場所にインストールできる証明書を作成するには、何をする必要がありますか?

今、Microsoft Visual Studio 8\SDK\v2.0\Binのmakecertアプリケーションを使用して、これらの行に沿って何かを持っています:

makecert -r -pe -n "CN=MySite.com Dev" -b 01/01/2000 -e 01/01/2033 -eku 1.3.6.1.5.5.7.3.1 -ss Root -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 mycert.cer

ただし、この.cerファイルを他のコンピューターに配置する方法がわかりません。ローカルマシンIISにインストールすると、https:を介してページにアクセスするたびに、セキュリティプロンプトが表示されます( '証明書をインストールしました)。誰もこれをやったことがありますか?

55
John

これを行うためのスクリプトは次のとおりです。

認証局を作成する

自己署名証明書(-r)を作成し、エクスポート用の秘密キー(-pe)を使用して、SHA1(-r)を使用して署名(-sky署名)します。秘密鍵はファイルに書き込まれます(-sv)。

makecert -r -pe -n "CN=My Root Authority" -ss CA -sr CurrentUser ^
         -a sha1 -sky signature -cy authority -sv CA.pvk CA.cer

(^ =バッチコマンドラインで行を折り返すことができます)

サーバー証明書を作成

鍵交換(-sky交換)にSHA1(-a)を使用して、エクスポート可能な秘密鍵(-pe)でサーバー証明書を作成します。 SSLサーバー証明書として使用できます(-eku 1.3.6.1.5.5.7.3.1)。発行証明書はキー(-iv)と同様にファイル(-ic)にあります。特定の暗号プロバイダー(-sp、-sy)を使用します。

makecert -pe -n "CN=fqdn.of.server" -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

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

次に、サーバーアプリで.PFXファイルを使用します(またはIISにインストールします)。デフォルトでは、pvk2pfxは出力PFXファイルにパスワードを適用しないことに注意してください。そのためには-poスイッチを使用する必要があります。

すべてのクライアントマシンが信頼できるようにするには、証明書ストア(信頼されたルート機関ストア)にCA.cerをインストールします。ドメインを使用している場合は、Windowsグループポリシーを使用してこれをグローバルに実行できます。そうでない場合は、certmgr.mscMMC snapin、またはcertutilコマンドラインユーティリティ:

certutil -user -addstore Root CA.cer

プログラムでIIS 6.0に証明書をインストールする場合は、 このMicrosoft KB記事 をご覧ください。IIS 7.0、わからない。

139
Roger Lipscombe

証明機関を作成するときは、-cy authorityをスイッチに追加する必要があります。そうしないと、一部の証明書ストアでは適切なCAとして認識されません。

12
masty