Short Summary
As part of a wider test we checked all of our CA certificates by Zlint ver.3.0.0 (?) and we could identify a potential issue with different types of technically constrained CA certificates.
Some of the certificates with this potential issue
The summarized result of the zlint test
Each certificate has the following summarized test result.
| LEVEL |
# OCCURRENCES |
DETAILS |
| info |
0 |
- |
| warn |
0 |
- |
| error |
1 |
e_key_usage_and_extended_key_usage_inconsistent |
| fatal |
0 |
- |
The scope of lint "e_key_usage_and_extended_key_usage_inconsistent"
When we tried to find details about this lint we realized that this lint has already been removed from Zlint, at least temporarily.
Some corresponding issues are:
#497
#528
#553
#556
#557
As I see there is no common agreement on this requirement so let me summarize our findings.
Our interpretation
- Originally, RFC5280 introduced the EKU to further specify the use of the public key included in the certificate.
- The EKU is intended to be used primarily for end-entity certificates, but it may also be used for Subordinate CA certificates.
- The KU and EKU settings shall be consistent.
- There are no different requirements for Subordinate CA and end-entity certificates.
- Currently EKU is widely used in CA certificates to technically constrain the CA to issue only enduser certificates of a particular type (EKU chaining), based on CABF BR and other requirements.
Current cases
Our Subordinate CA certificate contains the CodeSigning EKU but does not contain the digitalSignature KU.
This way it can not be used to sign codes due to a key usage conflict according to RFC 5280.
In our interpretation it is not an error, because we definitely do not want to sign codes with this Subordinate CA certificate. The purpose of having this EKU in the CA certificate is to technically constrain its use only to issue code signing end-entity certificates (EKU chaining).
Our proposal
If you agree with our interpretation we suggest to make difference between the Subordinate CA certificates and end-entity certificates.
The KU - EKU consistency should be checked for both types, but the finding should have different weight.
- In case of end-entity certificate the "ERROR" is OK.
- In case of Subordinate CA certificates it would be probably better to have only a WARNING or even an INFORMATION.
Short Summary
As part of a wider test we checked all of our CA certificates by Zlint ver.3.0.0 (?) and we could identify a potential issue with different types of technically constrained CA certificates.
Some of the certificates with this potential issue
The summarized result of the zlint test
Each certificate has the following summarized test result.
The scope of lint "e_key_usage_and_extended_key_usage_inconsistent"
When we tried to find details about this lint we realized that this lint has already been removed from Zlint, at least temporarily.
Some corresponding issues are:
#497
#528
#553
#556
#557
As I see there is no common agreement on this requirement so let me summarize our findings.
Our interpretation
Current cases
Our Subordinate CA certificate contains the CodeSigning EKU but does not contain the digitalSignature KU.
This way it can not be used to sign codes due to a key usage conflict according to RFC 5280.
In our interpretation it is not an error, because we definitely do not want to sign codes with this Subordinate CA certificate. The purpose of having this EKU in the CA certificate is to technically constrain its use only to issue code signing end-entity certificates (EKU chaining).
Our proposal
If you agree with our interpretation we suggest to make difference between the Subordinate CA certificates and end-entity certificates.
The KU - EKU consistency should be checked for both types, but the finding should have different weight.