Skip to content

Docs: External CA/PKI: clarify intermediate CA cross-signing options #10392

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

Al2Klimov
Copy link
Member

No description provided.

@Al2Klimov Al2Klimov added area/distributed Distributed monitoring (master, satellites, clients) area/documentation End-user or developer help labels Mar 26, 2025
@cla-bot cla-bot bot added the cla/signed label Mar 26, 2025
Comment on lines 3275 to 3294
##### Using external intermediate CA as Icinga root CA

For Icinga to trust only its own CA, if the latter shall be an intermediate one,
do either of the following, depending on how strict your company policy is:

###### Lax policy, Icinga itself issues leave certificates

1. Setup Icinga as usual, with its own CA issueing leave certificates
2. Cross-sign that CA with the desired parent CA, so that you get an intermediate CA
with the same subject and public key as the Icinga-own root CA
3. Add that new intermediate CA to your trusted root CAs whereever possible and needed
to have an uninterrupted chain from your company CA to Icinga leave certificates

###### Strict policy, Icinga doesn't issue leave certificates

1. Create your intermediate CA for Icinga
2. Cross-sign it with itself, so that you get two equal certificates,
except that one is self-signed
3. Use the latter as Icinga root CA and deploy leave certificates manually,
each with the intermediate CA as described in the parent section
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mkayontour had some questions on this section. While answering, I thought of an option to suggest, but then realized it's not documented yet.😅 So before I explained it in 🇩🇪, I thought let's just write it down in 🇬🇧 here:

Copy link
Member

@oxzi oxzi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for improving the docs, highly appreciated!

I made some suggestions regarding wording and spelling.

Comment on lines 3277 to 3278
For Icinga to trust only its own CA, if the latter shall be an intermediate one,
do either of the following, depending on how strict your company policy is:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What should this paragraph say? Sorry for the blunt words, but I am confused reading this.

For Icinga to trust only its own CA, if the latter shall be an intermediate one,

Doesn't Icinga always has to trust its own CA? And isn't this whole chapter about intermediate CAs?

If I get the general gist right, how about something like:

In order to use an intermediate CA with Icinga, you can do one of the following, depending on the policies you have in place.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you have Root -> Int1 -> Leaf, in a sane setup, you'd probably just use Root as Icinga Root CA. But then Icinga trusts Intn. Some people want Icinga to trust only Int1, e.g #7719 (comment). But, as already in our docs, OpenSSL doesn't support an intermediate CA as root one, so you have to cross-sign.

But you can do latter in two directions, this is what I'm clarifying here.

Comment on lines 3290 to 3294
1. Create your intermediate CA for Icinga
2. Cross-sign it with itself, so that you get two equal certificates,
except that one is self-signed
3. Use the latter as Icinga root CA and deploy leave certificates manually,
each with the intermediate CA as described in the parent section
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please end each sentence with a period and change leave to leaf, as I have suggested above.

Furthermore, this route needs a bit more details, imo. First, how should the intermediate CA be created? Then, unless I am mistaken, how can a CA cross-sign itself? Isn't this self-signing? When referring to "the latter" in your third statement, do you mean the signed one? Please name it.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll have a look.

First, how should the intermediate CA be created?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMHO, this still has very high "draw the rest of the owl" energy.

@mkayontour
Copy link
Member

ref/NC/842002

@Al2Klimov Al2Klimov requested a review from oxzi May 12, 2025 08:05
Copy link
Member

@oxzi oxzi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO, this whole section is still a very high-level description that is so abstract that I think it is questionable if it helps anyone. All the steps are descriptive and assume a lot of prior knowledge. Without further pointers, this may only confuse potential users who don't know how to do this, while the few with enough arcane OpenSSL knowledge won't need this information at all.

For Icinga to trust only its own intermediate CA,
do either of the following:

###### Icinga itself issues leaf certificates
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
###### Icinga itself issues leaf certificates
###### Leaf certificates are issued by Icinga

To match the passive tone of the other headline below.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feel free to press "Commit suggestion" and trigger GHA once everything else is ✅.

@Al2Klimov
Copy link
Member Author

All the steps are descriptive and assume a lot of prior knowledge.

few with enough arcane OpenSSL knowledge won't need this information at all.

This assumes Icinga "just does OpenSSL things" which is not entirely true. Examples:

We aren't as simple as e.g nginx. And even stuff like Postgres/OpenSMTPd have requirements beyond standard X.509:

  • certs must be owned by root

So yes, software in general should note somewhere in the manual what it can do and what you may do manually without accidentally setting it on fire.

this may only confuse

Well, at this point you're already in the very last advanced subsection beyond a disclaimer (added in #9825). 🤷‍♂️

potential users who don't know how to do this

... and they SHOULD not do this. :-) But if their employer forces them to do so, we clearly describe what Icinga does by itself and what's up to you. "up to you" as in "don't even contact sales".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/distributed Distributed monitoring (master, satellites, clients) area/documentation End-user or developer help cla/signed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants