-
Notifications
You must be signed in to change notification settings - Fork 580
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
New mechanism for CSR tickets #5562
Comments
The modulo division might be an issue if we're "close" to the end of the current validityGranularity period. Maybe we should just put the entire notAfter timestamp into the ticket. |
As discussed, this should be included going along with #5450 and 2.8. |
This also (optionally) depends on #5555 to get the ticket length down to a manageable value. |
Postponed due to feature freeze. |
Unfortunately is a blocker here, and we cannot raise the .NET package dependency. |
.NET 4.6.1 is now the new default, not a blocker anymore. #5555 was reverted, so those changes are needed. |
The whole concept reminds me of certificates themselves. Alternatively people could just issue and deploy certificates in favour of tickets, via |
The current certificate request mechanism has a number of issues:
This issue describes a new mechanism for CSR tickets which would alleviate some of these problems.
V2 tickets are constructed using the following algorithm:
The resulting ticket format is "icinga-ticket <ticketData> <comment>" where <comment> is an optional value that is not used by Icinga. In most cases this should be the commonName to enable debugging by the user.
Note that the ticketHash could in theory be omitted from the ticketData because it can be reconstructed from the ticketSignature when RSA signatures are used. However, this is not true for ECDSA which would mean that the client cannot locally verify tickets. It would however save 256 bits (+ overhead for base64).
Icinga can locally verify whether a ticket is valid by trying to construct the ticketHash value using the current timestamp and whatever common name it has been configured with. This would be a useful verification step for the "node wizard" to avoid sending known-invalid tickets to the parent instance.
Icinga agents can use the ticket to verify that they're connecting to the correct parent instance. They do this by enumerating the CA certificate(s) from their trust chain for cluster connections. Icinga then attempts to verify the ticketSignature against each of the CA certificates. If a match is found we know that we're connected to an Icinga instance that belongs to the same trust hierarchy. We then still have to verify that we're connecting to the right instance by checking the common name of the instance against the node name the user has specified for the Endpoint object.
The Icinga CA instance can validate tickets by constructing a new ticketHash for the current timestamp and the requestor's commonName. If these match the ticketHash that was provided by the requestor the ticket is both in the correct time range and for the correct commonName. The CA instance also must verify the ticketSignature to ensure that the ticketData has not been tampered with.
The text was updated successfully, but these errors were encountered: