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.

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
Copy link
Member

Choose a reason for hiding this comment

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

Why is this policy lax and the other strict? This has some implications, potentially leading people to irrational decisions. I would suggest dropping the rating.

Suggested change
###### Lax policy, Icinga itself issues leave certificates
###### Leaf certificates issued by Icinga


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

1. Setup Icinga as usual, with its own CA issueing leave 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
1. Setup Icinga as usual, with its own CA issueing leave certificates
1. Setup Icinga as usual, with its own CA issuing leaf certificates.

Comment on lines 3283 to 3284
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
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
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
2. Cross-sign this CA with the desired parent CA to create an intermediate CA.

Comment on lines 3285 to 3286
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
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
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
3. Add that new intermediate CA to your trusted root CAs where needed
to have an uninterrupted chain from your main CA to Icinga leaf certificates.

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
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
###### Strict policy, Icinga doesn't issue leave certificates
###### Leaf certificates issued externally

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

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