RFR: 8303465: KeyStore of type KeychainStore, provider Apple does not show all trusted certificates [v2]
Christoph Langer
clanger at openjdk.org
Tue May 16 09:19:55 UTC 2023
> With this PR we try to be better in loading certificates from the MacOS Keychain into a JDK Trust store.
>
> The current implementation after JDK-8278449 would only load/trust certificates from an identity (with private key available) and certificates that have explicit trust set in the user domain (as shown by security dump-trust-settings). This, however is not sufficient and does not match the MacOS system behavior, e.g. if you compare with tools like curl or Safari.
>
> This change does the following:
> 1. The native method that reads trust settings will call the API SecTrustSettingsCopyTrustSettings on a certificate for both, User and Admin domain.
> 2. No trust settings will be reported as "inputTrust" being null. If the certificate is trusted with no specific records, "inputTrust" will be an empty list.
> 3. The Java Method to add a certificate now checks for "self signed" certificate not only by checking whether it was signed with its own key but it must also not be a root certificate that can be used to sign other certificates. This is done by inspecting the key usage extension.
> 4. We now trust certificates that are either "real" self-signed certificates or certificates that have an explicit trust entry with no sub-records that would deny the certificate for any purpose.
> 5. The check for double aliases has been augmented by comparing whether the certificate to be added is the same as the one that is already present. This can happen if a certificate is contained in both, the user and the system keychain, for instance.
>
> I have added a test that verifies whether certificates that should be trusted from "security dump-trust-settings" are contained in the keystore and those that should be disallowed are absent.
Christoph Langer has updated the pull request incrementally with one additional commit since the last revision:
Add some more initializations to avoid crashes
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/13945/files
- new: https://git.openjdk.org/jdk/pull/13945/files/3c4424b6..22303e1c
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=13945&range=01
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=13945&range=00-01
Stats: 3 lines in 1 file changed: 2 ins; 0 del; 1 mod
Patch: https://git.openjdk.org/jdk/pull/13945.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/13945/head:pull/13945
PR: https://git.openjdk.org/jdk/pull/13945
More information about the security-dev
mailing list