web-dev-qa-db-ja.com

1つのADCSインスタンスが複数のPKI名前空間を「保持」できますか?

OSライセンスを節約し、CRLの更新を簡素化し、特定のサーバーに複数の証明書インスタンスを配置したいと考えています。

私にとって、これはセキュリティの観点から理にかなっています。

  • ルートとして機能し、ポリシーサーバのCRLを公開および更新する必要がある1つのCA(次の箇条書き)

  • 名前の制約またはEKUの使用によって制約される多くのポリシーサーバー(第2層)があります。同様に、これらも多くのCRLとAIAレコードを公開する必要があります。

  • 現在、10,000〜50,000のポリシーサーバーの必要性を見積もっています。各ポリシーサーバーには、Azure BLOBストレージに格納されたCRLがあり、IOスケーラビリティーのためにサーバーごとに専用のコンテナーがあります。

Certutil -pingの出力(つまり、configパラメーター)に基づくと、ADCSインスタンスごとに複数の構成を持つことができるようです。

さらに、Certutil(および対応するAPI)の他のいくつかのパラメーターを使用すると、接続する「インスタンス」を指定できます。

/// --- NOTE: The ability to specify an individual config seems to indicate multiple PKIs are possible per box:
PS C:\Windows\system32\CertSrv\en-US> certutil -ping -config "a.Issue01.bitclear.us\Secure Issuer 01a-001"
Connecting to a.Issue01.bitclear.us\Secure Issuer 01a-001 ...
Server "Secure Issuer 01a-001" ICertRequest2 interface is alive (0ms)
CertUtil: -ping command completed successfully.

 /// --- NOTE "Entry 0" implies that more entries are possible
PS C:\Windows\system32\CertSrv\en-US> certutil -v
Entry 0: (Local)
  Name:                         `Secure Issuer 01a-001'
  Organizational Unit:          `Email Privacy'
  Organization:                 `Bitclear LLC'
  Locality:                     `'
  State:                        `'
  Country/region:               `us'
  Config:                       `a.Issue01.bitclear.us\Secure Issuer 01a-001'
  Exchange Certificate:         `'
  Signature Certificate:        `a.Issue01.bitclear.us_Secure Issuer 01a-001.crt'
  Description:                  `'
  Server:                       `a.Issue01.bitclear.us'
  Authority:                    `Secure Issuer 01a-001'
  Sanitized Name:               `Secure Issuer 01a-001'
  Short Name:                   `Secure Issuer 01a-001'
  Sanitized Short Name:         `Secure Issuer 01a-001'
  Flags:                        `13'
  Web Enrollment Servers:
1
4
0
https://a.issue01.bitclear.us/Secure%20Issuer%2001a-001_CES_UsernamePassword/service.svc/CES
0
CertUtil: -dump command completed successfully.

ADCSホストごとに複数のPKIをホストすることは可能ですか?これはどのように行われますか?

余談ですが、これは過去に可能かもしれないという議論があったことを覚えていますが、それが実装されたかどうかはわかりません。

Todo:

この理論をカスタムCertFileと新しい名前でテストします コマンドを実行します:

certutil -installcert [-f] [-gmt] [-seconds] [-v] [-config CAMachineName\CAName] [CACertFile]

これは、このコマンドに接続できる "PolicyServers"および "EnrollmentServers" にも何らかの形で関連している可能性があります。これらをコアADCSインスタンスから分離する機能は非常に興味深いものであり、実際に文書化されていることに注意してください。

2

私の理解では、ADフォレストにはホストごとに1つのADCSインスタンスと最大3つのCAしか持てません。 「\ CA名」はPKIツリーの名前に関するものであり、MSSQL構成で見られる\ INST1タイプのインスタンスと混同しないでください。これはあなたが考えていると思います。

すべてが1つのホスト上にある場合、ホストが危険にさらされた場合、ホスト上のすべてのCAが危険にさらされるため、CAを分離しておくことをお勧めします。

フォレストに複数のPKIツリーがある場合、certutilからの複数のエントリが表示されます。

Webポリシー登録サーバーを使用して登録ポリシーサーバーを分離する機能があります。これは、外部で証明書を発行する必要があるDMZ環境)に役立ちます。

1
Ben Short

1つのサーバーに複数のPKI階層を設定することは技術的に不可能であり、前述のようにセキュリティの観点からは悪い考えです(単一障害点)。 ADCSの役割は、AD内のサーバーのIDに関連付けられているため、階層のDNを変更する唯一の方法は、役割を吹き飛ばして最初からやり直すことです。

ライセンスに関する限り、オフラインルートCAは特別なものである必要はないと思います。 CRLとAIAエンドポイントが一致している限り、Linuxホスト上で主要な資料を技術的に生成し、CAを発行する企業からADに公開することができます。

0
bobmagoo