testssl.sh/etc
Dirk 887f21609a Update Truststores (3.0)
Same as #2528, only for the 3.0 branch.

- Mozilla: 2024-7-02
- Debian 12, ca-certificates from 20230311
- JDK 21.04
- Apple via https://github.com/apple-oss-distributions/security_certificates (according to git log latest change Fri Dec 15 00:44:35 2023)
- Microsoft via CertUtil (date of this PR)

Modified Readme to reflect that the Apple CA certificates are better to retrieve from GH and clarified minor things.

This also fixes #2525 (for 3.0), where >=2 certificates were missing.
2024-07-23 12:20:09 +02:00
..
Apple.pem Update Truststores (3.0) 2024-07-23 12:20:09 +02:00
ca_hashes.txt Update Truststores (3.0) 2024-07-23 12:20:09 +02:00
cipher-mapping.txt Correct new openssl cipher name 2018-11-02 14:04:12 +01:00
client-simulation.txt correct ch_{ciphers,sni} 2022-05-31 20:08:37 +02:00
client-simulation.wiresharked.md Update client simulation for 3.0 2022-05-31 17:08:40 +02:00
client-simulation.wiresharked.txt correct ch_{ciphers,sni} 2022-05-31 20:08:37 +02:00
common-primes.txt Remove duplicate common primes 2018-07-23 13:48:18 -04:00
curves-mapping.txt correct ch_{ciphers,sni} 2022-05-31 20:08:37 +02:00
curves.txt - added values to curve448 + 25519 2016-06-09 13:18:55 +02:00
DST Root CA X3.txt Update CA root stores 2023-03-18 22:57:52 +01:00
Java.pem Update Truststores (3.0) 2024-07-23 12:20:09 +02:00
Linux.pem Update Truststores (3.0) 2024-07-23 12:20:09 +02:00
Microsoft.pem Update Truststores (3.0) 2024-07-23 12:20:09 +02:00
Mozilla.pem Update Truststores (3.0) 2024-07-23 12:20:09 +02:00
openssl.cnf Fix #1982: Newer openssl.cnf break openssl detection (3.0) 2021-09-15 11:25:10 +02:00
README.md Update Truststores (3.0) 2024-07-23 12:20:09 +02:00
tls_data.txt Backport #2157, #2160, #2162 2022-05-02 10:33:07 -04:00

Certificate stores

The certificate trust stores were retrieved from

  • Linux: Copied from an up-to-date Debian Linux machine
  • Mozilla: https://curl.haxx.se/docs/caextract.html (MPL 2.0)
  • Java: extracted (keytool -list -rfc -keystore lib/security/cacerts | grep -E -v '^$|^\*\*\*\*\*|^Entry |^Creation |^Alias') from a JDK LTS version from https://jdk.java.net/. Use dos2unix for the store which you generated.
  • Microsoft: Following command pulls all certificates from Windows Update services: CertUtil -syncWithWU -f -f . (see also https://aka.ms/RootCertDownload, https://technet.microsoft.com/en-us/library/dn265983(v=ws.11).aspx#BKMK_CertUtilOptions). They are in DER format. Convert them like for f in *.crt; do echo $f >/dev/stderr; openssl x509 -in $f -inform DER -outform PEM ;done >/tmp/Microsoft.pem.
  • Apple:
    1. System: from Apple OS X keychain app. Open Keychain Access utility, i.e. In the Finder window, under Favorites --> "Applications" --> "Utilities" (OR perform a Spotlight Search for "Keychain Access") --> "Keychain Access" (2 click). In that window --> "Keychains" --> "System Root" --> "Category" --> "All Items" Select all CA certificates except for "Developer ID Certification Authority", omit expired ones, "File" --> "Export Items"
    2. Internet: Clone https://github.com/apple-oss-distributions/security_certificates.git, cd to security_certificates/certificates/roots, for f in *.* do echo $f >/dev/stderr; openssl x509 -in $f -inform DER -outform PEM ;done >/tmp/Apple.pem

Google Chromium uses basically the trust stores above, see https://www.chromium.org/Home/chromium-security/root-ca-policy.

ATTENTION: From each store you need to remove the DST Root CA X3 which is for your reference in this directory, see file DST Root CA X3.txt. As of July 2024 this seemed to be needed only for the Microsoft CA store. Apple's file name in 2023 was IdenTrust_Root_X3.der. For the Microsoft CA store you can identify the file beforehand like for f in *.crt; do openssl x509 -in $f -inform DER -text -noout | grep -q 'DST' && echo $f ;done or use a line from DST Root CA X3.txt and grep for that in the resulting Microsoft.pem.

If you want to check trust against e.g. a company internal CA you need to use ./testssl.sh --add-ca companyCA1.pem,companyCA2.pem <further_cmds> or ADDTL_CA_FILES=companyCA1.pem,companyCA2.pem ./testssl.sh <further_cmds>.

IMPORTANT: After updating any of the CA root stores you have to invoke ./utils/create_ca_hashes.sh to update ~/etc/ca_hashes.txt.

License

Please note that the licenses of the certificate stores might not be GPLv2 in all the cases. In general the root and intermediate certificates are free for use -- otherwise the Internet wouldn't work. Besides the certificate vendors also browsers use them. Apple and Microsoft however didn't list licenses for those certificates. Microsoft is (as Mozilla and Google) a member of the Common CA Database though, see https://www.ccadb.org/ .

Further files

  • tls_data.txt contains lists of cipher suites and private keys for sockets-based tests

  • cipher-mapping.txt contains information about all of the cipher suites defined for SSL/TLS

  • curves-mapping.txt contains information about all of the elliptic curves defined by IANA

  • ca_hashes.txt is used for HPKP test in order to have a fast comparison with known CAs. You MUST use ./utils/create_ca_hashes.sh for every Root CA store update, see above.

  • common-primes.txt is used for LOGJAM and the PFS section

  • client-simulation.txt / client-simulation.wiresharked.txt are -- as the names indicate -- data for the client simulation. The first one is derived from ~/utils/update_client_sim_data.pl, and manually edited to sort and label those we don't want. The second file provides more client data retrieved from wireshark captures and some instructions how to do that yourself.