From the Field: AD CS

๐Ÿ”Ž ๐—™๐—ฟ๐—ผ๐—บ ๐˜๐—ต๐—ฒ ๐—™๐—ถ๐—ฒ๐—น๐—ฑ โ€” Real-World Findings from Security Assessments

๐Ÿ’ฅ In ๐Ÿฐ๐Ÿฎ.๐Ÿต%ย of infrastructures Iโ€™ve assessed, ๐—”๐—ฐ๐˜๐—ถ๐˜ƒ๐—ฒ ๐——๐—ถ๐—ฟ๐—ฒ๐—ฐ๐˜๐—ผ๐—ฟ๐˜† ๐—–๐—ฒ๐—ฟ๐˜๐—ถ๐—ณ๐—ถ๐—ฐ๐—ฎ๐˜๐—ฒ ๐—ฆ๐—ฒ๐—ฟ๐˜ƒ๐—ถ๐—ฐ๐—ฒ๐˜€ (๐—”๐—— ๐—–๐—ฆ) ๐—ฎ๐—ฟ๐—ฒ ๐˜€๐˜๐—ถ๐—น๐—น ๐—ถ๐—บ๐—ฝ๐—น๐—ฒ๐—บ๐—ฒ๐—ป๐˜๐—ฒ๐—ฑ ๐˜‚๐˜€๐—ถ๐—ป๐—ด ๐—ฎ ๐˜€๐—ถ๐—ป๐—ด๐—น๐—ฒ-๐˜๐—ถ๐—ฒ๐—ฟ ๐—ต๐—ถ๐—ฒ๐—ฟ๐—ฎ๐—ฟ๐—ฐ๐—ต๐˜†

Let me borrow a line straight from ๐— ๐—ถ๐—ฐ๐—ฟ๐—ผ๐˜€๐—ผ๐—ณ๐˜ on this one:

โ€œ๐˜–๐˜ฏ๐˜ฆ-๐˜ต๐˜ช๐˜ฆ๐˜ณ ๐˜ฉ๐˜ช๐˜ฆ๐˜ณ๐˜ข๐˜ณ๐˜ค๐˜ฉ๐˜บ ๐˜ช๐˜ด ๐˜ฏ๐˜ฐ๐˜ต ๐˜ณ๐˜ฆ๐˜ค๐˜ฐ๐˜ฎ๐˜ฎ๐˜ฆ๐˜ฏ๐˜ฅ๐˜ฆ๐˜ฅ ๐˜ง๐˜ฐ๐˜ณ ๐˜ข๐˜ฏ๐˜บ ๐˜ฑ๐˜ณ๐˜ฐ๐˜ฅ๐˜ถ๐˜ค๐˜ต๐˜ช๐˜ฐ๐˜ฏ ๐˜ด๐˜ค๐˜ฆ๐˜ฏ๐˜ข๐˜ณ๐˜ช๐˜ฐ. ๐˜ˆ ๐˜ค๐˜ฐ๐˜ฎ๐˜ฑ๐˜ณ๐˜ฐ๐˜ฎ๐˜ช๐˜ด๐˜ฆ ๐˜ฐ๐˜ง ๐˜ต๐˜ฉ๐˜ช๐˜ด ๐˜ด๐˜ช๐˜ฏ๐˜จ๐˜ญ๐˜ฆ ๐˜Š๐˜ˆ ๐˜ฆ๐˜ฒ๐˜ถ๐˜ข๐˜ต๐˜ฆ๐˜ด ๐˜ต๐˜ฐ ๐˜ข ๐˜ค๐˜ฐ๐˜ฎ๐˜ฑ๐˜ณ๐˜ฐ๐˜ฎ๐˜ช๐˜ด๐˜ฆ ๐˜ฐ๐˜ง ๐˜ต๐˜ฉ๐˜ฆ ๐˜ฆ๐˜ฏ๐˜ต๐˜ช๐˜ณ๐˜ฆ ๐˜—๐˜’๐˜.โ€

And yet, I hear this all the time:

๐Ÿ‘‰ โ€œWe only need it for one internal cert. Nothing too crazy. Letโ€™s just keep it simple.โ€

Yeah, same ๐—ฒ๐—ป๐—ฒ๐—ฟ๐—ด๐˜† ๐˜„๐—ฒ ๐—ต๐—ฎ๐—ฑ ๐—ณ๐—ผ๐—ฟ ๐—”๐—ฐ๐˜๐—ถ๐˜ƒ๐—ฒ ๐——๐—ถ๐—ฟ๐—ฒ๐—ฐ๐˜๐—ผ๐—ฟ๐˜† back in the day โ€” and youโ€™ve seen how those decisions aged.

๐Ÿ› ๏ธ ๐—›๐—ฒ๐—ฟ๐—ฒโ€™๐˜€ ๐˜๐—ต๐—ฒ ๐˜๐—ต๐—ถ๐—ป๐—ด:

If youโ€™re already taking the time to implement a critical service like AD CS โ€” just ๐—ณ๐—ผ๐—น๐—น๐—ผ๐˜„ ๐˜๐—ต๐—ฒ ๐—ฏ๐—ฒ๐˜€๐˜ ๐—ฝ๐—ฟ๐—ฎ๐—ฐ๐˜๐—ถ๐—ฐ๐—ฒ๐˜€ from the start. Itโ€™s rarely much harder, and itโ€™ll save you a lot of pain later.

๐Ÿ” What to Do Instead: ๐—จ๐˜€๐—ฒ ๐—ฎ๐˜ ๐—น๐—ฒ๐—ฎ๐˜€๐˜ ๐—ง๐˜„๐—ผ-๐—ง๐—ถ๐—ฒ๐—ฟ ๐—›๐—ถ๐—ฒ๐—ฟ๐—ฎ๐—ฟ๐—ฐ๐—ต๐˜†

The two-tier design is the sweet spot for most organizations:

๐Ÿ”น An offline Root CA (only used to sign subordinate CAs)

๐Ÿ”น One or more online Issuing CAs that handle certificate requests

๐—ช๐—ต๐˜† ๐—ถ๐˜€ ๐˜๐—ต๐—ถ๐˜€ ๐—ฏ๐—ฒ๐˜๐˜๐—ฒ๐—ฟ?

๐Ÿ”น Stronger security: Root key is offline = harder to compromise

๐Ÿ”น Better scalability: Add issuing CAs for different purposes or regions

๐Ÿ”น Higher flexibility: Customize certificate policies per issuing CA

๐Ÿ”น Manageability improves โ€” and the additional cost is marginal (1 VM)

If one issuing CA is compromised, your root key is still safe โ€” and your ๐—ฒ๐—ป๐˜๐—ถ๐—ฟ๐—ฒ ๐—ฃ๐—ž๐—œ ๐—ฑ๐—ผ๐—ฒ๐˜€๐—ปโ€™๐˜ ๐—ด๐—ผ ๐—ฑ๐—ผ๐˜„๐—ป ๐—ถ๐—ป ๐—ณ๐—น๐—ฎ๐—บ๐—ฒ๐˜€.

๐—ฌ๐—ผ๐˜‚ ๐—ฐ๐—ฎ๐—ป ๐˜๐—ฎ๐—ธ๐—ฒ ๐˜๐—ต๐—ถ๐˜€ ๐—ณ๐˜‚๐—ฟ๐˜๐—ต๐—ฒ๐—ฟ:

๐Ÿ”น Apply path length constraints

๐Ÿ”น Limit Extended Key Usages (EKUs) for issuing CAs

๐——๐—ผ๐—ปโ€™๐˜ ๐—™๐—ผ๐—ฟ๐—ด๐—ฒ๐˜ ๐—ง๐—ต๐—ฒ๐˜€๐—ฒ ๐—”๐—— ๐—–๐—ฆ ๐—•๐—ฒ๐˜€๐˜ ๐—ฃ๐—ฟ๐—ฎ๐—ฐ๐˜๐—ถ๐—ฐ๐—ฒ๐˜€:

๐Ÿ“ƒ Properly configure certificate templates

โš™๏ธ Use Windows Server Core

๐Ÿ” Consider using a Hardware Security Module (HSM) for private keys

๐Ÿง‘โ€๐Ÿ’ผ Delegate specific roles for AD CS

Do you run a two-tier PKI, or are you stuck on a single-tier CA?