web-dev-qa-db-ja.com

IIS 7.0-SSL証明書-更新または新規ですか?

私のSSL証明書(単純なドメイン検証のみ)の1つがWindows 2003で期限切れになりますIIS 7.0サーバー。

私は別のベンダーからより良いオファーを得て、最初に私の証明書を発行した人たちはより安い価格で交渉したくありません。

とにかく-IISの証明書ウィザードを使用して、「更新」または「アンインストール」してから新しい証明書をインストールするオプションがあります。

したがって、「更新」オプションを使用して証明書要求を作成し、これを新しいベンダーに渡すことはできますか、それとも「新しい」要求から始める必要がありますか?以前の証明書が別の署名者によって発行されたことは、新しいベンダーにとって重要ですか?

問題は、古い証明書を削除して新しいCSRを作成するためにサーバー(少なくとも保護された部分)を停止し、新しい証明書がインストールされるのを待ちたくないということです。

または、古い証明書を削除せずに新しいCSRを準備するオプションはありますか?

13
Sunny

IIS 6.0。IIS 7.0では、一度に複数の保留中のリクエストを作成できます。

IIS 7.0には実際にはバグがあり、更新機能により非常に大きなキー(必要以上に大きい)のCSRが生成されます。このため、更新オプションを選択する代わりに、保留中のリクエストを新しく作成することをお勧めします。インストールしたら、WebサイトでSSLバインディングを切り替えるだけで、ダウンタイムは発生しません。これにより、更新するたびに新しいキーを生成してセキュリティを強化することもできます。

証明書プロバイダー(CA)は、新しいオプションを使用するか更新オプションを使用するかを気にしません。同じCAを使用するか、新しいCAから注文するかに関係なく、どちらのオプションも使用できます。

7
Robert

証明書を更新すると、証明書の有効期限を更新しながら、同じ公開鍵と秘密鍵を保持できます。これの利点は、サムプリントをルーターなどに保存する必要がある場合です。リクエストの更新には同じ発行CAが必要なので、手動で新しいリクエストを生成する方が簡単かもしれません。

ブローすることなく新しいリクエストを生成するにはIIS up

証明書リクエストを手動で作成して送信できます。新しい証明書を取得したら、IIS7が探している証明書を切り替えるだけです。 WebサーバーのSSL証明書を手動で作成する方法

プロセスの簡単な要点は、必要な情報を含むinfファイルを作成し、certreq -new file.inf file.reqを実行することです。リクエストファイルを取得したら、証明書を発行するCAに送信できます。次に、certreq -accept file-from-ca.reqコマンドで送信された公開鍵を受け入れます。

Request.infの例

[Version]
Signature="$Windows NT$"

[NewRequest]
Subject = "CN=fully.qualified.domain.name, OU=Organizational Unit, O=Company, L=City, S=State, C=Country"
KeySpec = 1
KeyLength = 2048
HashAlgorithm = SHA256
Exportable = FALSE
MachineKeySet = TRUE
SMIME = FALSE
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
RequestType = PKCS10
KeyUsage = 0xa0
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
FriendlyName = ""

[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1 ; Server Authentication

[RequestAttributes]
CertificateTemplate = WebServer

[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=&"
_continue_ = "DNS="

上記の例のinfは、自分のCAで内部的に使用するものですが、ほとんどの環境で機能するように調整できます。キーをアーカイブできるようにする場合は、ExportableをTRUEに設定できます。 FriendlyNameは完全にオプションであり、Extensionsセクションは代替DNS名(サブジェクト代替名)を使用するためのものです。

SANエントリの例は次のようになります。

[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=example.com&"
_continue_ = "DNS=www.example.com&"
_continue_ = "DNS=secure.example.com"

これにより、上記の3つのサイトで同じ証明書を使用できるようになります。名前の不一致があるというメッセージは表示されません(最新のブラウザーでは-IE6が理解していないと思います)。 SAN設定している場合は、完全修飾ドメイン名(件名のCN)を含めることが重要です。拡張領域がない場合は、完全に削除することもできます。複数のドメイン名が必要です(また、一部のCAはそれをサポートしていない場合があります)。

プロセス

上記の情報を保存したら(多くのことを知っています)。次の手順を実行します:

  1. コマンドプロンプトを開き、上記のinfを保存したディレクトリにcdします。
  2. certreq -new above.inf request.reqを実行します
  3. Request.reqファイルをCAに送信します。彼らはそれを処理し、承認/却下します。
  4. 彼らがそれを承認するとき、彼らはあなたの公開鍵を.cerファイルで送り返すべきです。
  5. certreq -accept file-from-ca.cerを実行して、キーの設定を完了します。

幸運を!

編集する

Certreqおよびinfファイルの完全な構文は 付録3:Certreq.exe構文(Windows Server 2003 SP1) にあります。 FriendlyNameおよびHashAlgorithmはServer 2008(およびR2)のみです。コマンドcertutil -csplistを実行して出力を確認することにより、サポートされている暗号化プロバイダーのリストを表示できます。現在のWindows 2003 SP2ボックスには、「Microsoft RSA SChannel Cryptographic Provider」が利用可能なプロバイダーとしてリストされているため、ファイルの引用符が適切に設定されており、そのエントリが1行のみ(折り返しまたは複数行ではない)であることを確認してください。

また、ProviderNameをProviderTypeに変更し、certreq -csplistの出力で提供される番号を使用することもできます。

この場合、次の出力が得られます。

Provider Name: Microsoft RSA SChannel Cryptographic Provider
Provider Type: 12

だから私はどちらかを使うことができます

ProvderName = "Microsoft RSA SChannel Cryptographic Provider"

または

ProviderType = 12
7
Joshua

OK、私自身の質問に部分的に答えるために-既存の証明書を削除せずに(つまり、サーバーを停止せずに)新しい証明書を作成/使用する部分、適切な説明を見つけました Comodo Webサイト -基本的に必要サーバー上に「一時的な」Webサイトを作成し、それを使用して新しいCSRを作成し、署名用に送信し、証明書を受信して​​インポートします。

次に、メイン(実際の)サイトで、現在の証明書を置き換えて、一時証明書を削除する必要があります。

1
Sunny