MS 証明書サービスは OpenSSL で作成された CA の従属となることができますか?

MS 証明書サービスは OpenSSL で作成された CA の従属となることができますか?

自分のドメインにエンタープライズ証明機関を設定したいと考えています。そうすれば、さまざまな目的で証明書を発行できます。オフライン CA をルートとして持ち、エンタープライズ CA を従属として設定するというベスト プラクティスに従いたいと思います。しかし、このタスクのために Windows の完全なコピーのライセンスを取得するのはばかげているように思えます。

私が実現したいのは、ライブ ディストリビューションを USB フラッシュ ディスクにインストールし、次に openssl をインストールして、フラッシュ ドライブに CA を設定することです。ルート キー/証明書を作成する準備ができたら、コンピューターをネットワークから切断し、ネットワークに接続されたコンピューターでその USB ディスクを二度と使用しないようにします。

Windows エンタープライズ CA の使用可能な下位 CA 証明書を適切に署名して作成することはできますか。CA を構築し、下位 CA 証明書を適切に署名するには、OpenSSL でどのようなオプションを使用する必要がありますか。

私はウェブで検索してみましたが、これこの件に関して私が見つけることができた唯一の情報でした。しかし、それは 2008 年以前のものであり、その人物が本当に成功したのかどうかはよくわかりません。

答え1

はい、問題なく動作します。Windows 証明機関は、Windows 以外のルートの従属として実行することに何の抵抗もありません。

OpenSSL ルートとエンタープライズ モードで Windows 2008 R2 下位システムを使用してテストされました。


MS CA が OpenSSL 構成で期待するものとうまく連携するためのいくつかの事項:

  • 有効な AIA と CDP の場所は、自己署名ルートのセクションx509_extensionsのプロパティによって構成されたセクションのルート証明書に適用する必要があります。次のようになります。[req]

    authorityInfoAccess = caIssuers;URI:http://test-rootca.test.local/root.pem
    crlDistributionPoints = URI:http://test-rootca.test.local/root.crl
    
  • 特定の OpenSSL 構成では、おそらくデフォルトで従属 CA が許可されません。署名されたリクエストの場合はこれを変更します (もちろん、CA ではないリクエストの場合はこれが設定されていないことを確認してください)。これは、セクションx509_extensionsのプロパティによって構成されるセクションにあります[ca]

    basicConstraints=CA:TRUE
    certificatePolicies=2.5.29.32.0
    

そこで、CA を実行してテストします。

ルートを作成します:

openssl req -new -x509 -keyout /etc/ssl/private/root.key -out /etc/ssl/certs/root.pem -nodes -extensions v3_ca

設定をいじって、[ca]OpenSSL 設定のセクションに必要なファイルとディレクトリを作成します。

Microsoft 側の準備はすべて整いました。手動署名による Windows 従属 CA を作成します。

証明書要求を OpenSSL サーバーにアップロードします。そのついでに、ルート証明書をダウンロードします。それを、ユーザーではなくコンピューターの信頼されたルート ストアにインポートします。

下位証明書を発行します。

openssl ca -in test-subca.req
(you might need to specify a permissive policy manually with -policy, check your config)

それでも問題が解決しない場合は、CA の構成 (新しい証明書ディレクトリ、インデックス ファイル、シリアル ファイルなど) に問題がある可能性があります。エラー メッセージを確認してください。

うまくいけば、それで終わりです。まだ行っていない場合は、CRL を作成し、上で設定した CDP に配置します。私は Apache をインストールして、それを webroot に詰め込みました。

openssl ca -gencrl -out /var/www/root.crl

証明書がまだ AIA の場所に保存されていない場合は、証明書を AIA の場所に保存します。

cp /etc/ssl/certs/root.pem /var/www/root.pem

新しく発行された従属証明書をダウンロードし、証明機関 MMC スナップインを使用して CA にインストールします。信頼や検証に関する問題については文句を言うかもしれませんが、それを受け入れることに道徳的な異議はありません。

最終結果: エンタープライズ PKI スナップインからエラーが報告されず、OpenSSL Generated Certificate属性に特徴が示された、機能する Windows CA です。

ワーキングカリフォルニア

答え2

あなたの言いたいことはわかりますが、OpenSSLはそのような用途には適していないと思います。オープンソース認証局プロジェクトのような会員これらは OpenSSL よりもこの機能に重点を置いており、使用できる特定のドキュメントがあります。

あなたが行うのは従属 CA の証明書に署名することだけなので、この概念が機能しない理由はわかりません。パブリック CA に代行してこれを実行してもらうために料金を支払っている場合、その CA がどのような種類のサーバーを使用しているかを必ずしも知ったり気にしたりする必要はないでしょう。

気にする必要があるのは次の点だけです:

  • 部下が生成したCSRから証明書に署名することができます
  • 結果は従属物自体にインストールできる
  • 対象とするクライアントに信頼できるものとしてインストールできるルート署名証明書を持っていること
  • どこかに配信される失効リストを生成することができます

これを実行したとは言えませんが、Windows ボックスから CSR を生成するためのドキュメントに従い、次に CSR から .p7k 証明書を生成するための CA ドキュメントに従えば、問題はないはずです。

ちなみに、CA はブート ディスクではなく、Hyper-V や VMware などの一般的なハイパーバイザーの仮想マシンとして作成することをお勧めします。後継者が見つけられる場所に安全に保管し、定期的にオフラインで起動して確実に動作するか確認するか、新しいメディア/テクノロジに転送してください。ルート CA の寿命は 10 年から 20 年になる場合があります...

関連情報