18981 Commits

Author SHA1 Message Date
Tobias Brunner
ebf5afcefa fuzz: Add fuzzing targets for OCSP requests/responses 2023-11-24 17:41:18 +01:00
Tobias Brunner
f3af1704d9 x509: Make length of nonces in OCSP requests configurable
Some servers might not support a length of 32 and return a malformed
request error. Lowering the value to the previous default of 16 could
help in that case.
2023-11-24 17:41:18 +01:00
Tobias Brunner
945be4ece5 pki: Generate internal error OCSP response if no signer certificate is found
That can happen if a request is sent to the wrong OCSP server.
2023-11-24 17:41:18 +01:00
Tobias Brunner
05a1f5b9c5 certificate-printer: Add some output for empty OCSP responses 2023-11-24 17:41:18 +01:00
Tobias Brunner
6d345b3dde revocation: Reject OCSP error responses
Otherwise, there is lengthy code that tries to validate such responses,
even though they don't contain any signatures.
2023-11-24 17:41:18 +01:00
Tobias Brunner
b3e66aca5c x509: Add getter for status of OCSP responses 2023-11-24 17:41:18 +01:00
Tobias Brunner
e7a58f46f9 x509: Correctly parse responderId as ASN.1 CHOICE in OCSP response
The two OPTs that were used previously allowed to omit it completely (hence
the fallback to ID_ANY), but that's invalid, so it's better to fail
parsing.
2023-11-24 17:41:18 +01:00
Tobias Brunner
585c40095a x509: Correctly handle missing responder ID when parsing OCSP response errors
The has_issuer() and issued_by() methods relied on it to be defined, so
if the OCSP response wasn't successful (i.e. OCSP status indicates an
error and no OCSP response is parsed), a null-pointer dereference was
caused if the caller checked if the OCSP response was issued by a
specific certificate.

That's a side-effect of the referenced commit.  Previously, error codes
caused the OCSP response to not get parsed successfully, which technically
wasn't correct as it's well formed and successfully parsed, it's just
indicating an error state.

Fixes: 00ab8d62c089 ("x509: Support generation of OCSP responses")
2023-11-24 17:41:18 +01:00
Andreas Steffen
da45cf9f38 cert-enroll: Set the environment variables needed by cert-install-ssl 2023-11-23 19:05:22 +01:00
Andreas Steffen
11dbc8e7f2 Version bumpt to 5.9.12 5.9.12 2023-11-20 12:10:34 +01:00
Tobias Brunner
46aa264430 NEWS: Add info about CVE-2023-41913 2023-11-17 17:24:35 +01:00
Tobias Brunner
96d7937189 charon-tkm: Validate DH public key to fix potential buffer overflow
Seems this was forgotten in the referenced commit and actually could lead
to a buffer overflow.  Since charon-tkm is untrusted this isn't that
much of an issue but could at least be easily exploited for a DoS attack
as DH public values are set when handling IKE_SA_INIT requests.

Fixes: 0356089d0f94 ("diffie-hellman: Verify public DH values in backends")
Fixes: CVE-2023-41913
2023-11-17 17:24:34 +01:00
Tobias Brunner
74ae71d2b8 x509: Ensure extensions are encoded even if others are missing
As with the previous commit, this is probably never an issue in practice
as most certificates contain at least one SAN.
2023-11-15 17:08:46 +01:00
Tobias Brunner
ba08e01b86 x509: Also encode extendedKeyUsage in cert requests if there are no SANs or certificate type
Probably never was an issue in practice as most certificates contain at
least one SAN.
2023-11-15 17:01:02 +01:00
Tobias Brunner
14cc5b845e pki: Mention --index in description 2023-11-15 15:16:51 +01:00
Tobias Brunner
0dbb6867d8 NEWS: Add news for 5.9.12 2023-11-15 14:14:49 +01:00
Tobias Brunner
724e64cac4 Move ocsp_responder_t interface as it's not a certificate 2023-11-14 10:35:47 +01:00
Tobias Brunner
14bd0bc743 Fixed some typos, courtesy of codespell 2023-11-14 10:11:16 +01:00
Andreas Steffen
02a4c8cfa9 Version bump to 5.9.12rc1 5.9.12rc1 2023-11-14 08:12:00 +01:00
Andreas Steffen
6941dcb17a x509: Fix regression introduced by commit a22147a
Instead of the CA certificate's subjectKeyIdentifier erroneously
the CA's authorityKeyIdentifier was used as the authorityKeyIdentfier
of the certificate to be issued. This might work with a root CA
where the authorityKeyIdentifier equals its subjectKeyIdentfier
but introduces a severe regression when an intermediate CA is used.
2023-11-14 08:00:27 +01:00
Tobias Brunner
a1224b6c80 Merge branch 'ocsp-responder-index'
Adds support for multiple OCSP responders in `pki --ocsp` and one that
is based on OpenSSL-style index.txt files.  The parser for these files
also accepts simplified files that only specify the status, serial number
and optional revocation date/reason.  The OCSP test scenarios are also
updated to use this OCSP responder including one that shows the multi-CA
capabilities of the --ocsp command and the --index option.
2023-11-13 12:55:49 +01:00
Tobias Brunner
801c6c32e5 testing: Use a single OCSP responder for ikev2-multi-ca/ocsp-signers scenario
This demonstrates the multi-CA capabilities of the pki --ocsp command.
2023-11-13 12:50:47 +01:00
Tobias Brunner
c10a13589e testing: Use pki --ocsp as OCSP responder
The only exception is the ikev2/ocsp-no-signer-cert scenario as the
pki command won't sign an OCSP response with a certificate that isn't
the CA certificate or marked as an OCSP signer.
2023-11-13 12:50:47 +01:00
Tobias Brunner
5764e1e506 pki: Pre-process common arguments
This way the position of --debug doesn't matter for it to apply to the
parsing of all command-specific arguments.
2023-11-13 12:50:47 +01:00
Tobias Brunner
95c7d49954 pki: Add option to load certificate status information from index.txt
Each index.txt is associated with the most recently loaded CA
certificate.
2023-11-13 12:50:47 +01:00
Tobias Brunner
f26ca67d8c pki: Add index.txt-based OCSP responder 2023-11-13 12:50:47 +01:00
Tobias Brunner
1e8a72e7a0 chunk: Add helper to hash chunks via pointer 2023-11-13 12:50:47 +01:00
Tobias Brunner
3e42b2f5cb pki: Drop legacy registration for OCSP responders 2023-11-13 12:50:45 +01:00
Tobias Brunner
efac611566 openxpki: Register as OCSP responder 2023-11-13 12:50:24 +01:00
Tobias Brunner
515cecfe3e pki: Use OCSP responder manager for --ocsp --respond 2023-11-13 12:50:22 +01:00
Tobias Brunner
dab7c893a6 library: Add manager for OCSP responders
Registered OCSP responders should return VALIDATION_SKIPPED for issuer
certificates they are not responsible for. However, VALIDATION_FAILED is
currently treated the same way, so that's fine as well.
2023-11-13 12:45:54 +01:00
Tobias Brunner
3197523bd5 Merge branch 'ocsp-responder'
Implements a new --ocsp command for the pki tool that can produce OCSP
responses based on information provided by a plugin.  A first plugin
that accesses the OpenXPKI database is also added.

Closes strongswan/strongswan#1958
2023-11-13 12:42:00 +01:00
Andreas Steffen
821d7784a3 man: Extended pki man page and added pki --ocsp man page 2023-11-13 12:40:58 +01:00
Andreas Steffen
a0c9f9b842 pki: Added ocsp command
The pki --ocsp command implements an OCSP responder.
2023-11-13 12:40:58 +01:00
Andreas Steffen
ec325b4c09 pki: Added ocsp-req and ocsp-rsp types to pki --print 2023-11-13 12:40:58 +01:00
Andreas Steffen
a0f672d3d1 unit-tests: Update test_serial_gen suite 2023-11-13 12:40:55 +01:00
Andreas Steffen
00ab8d62c0 x509: Support generation of OCSP responses 2023-11-13 12:40:55 +01:00
Andreas Steffen
aa0fe149d6 certificates: Added ocsp_single_response object 2023-11-13 12:40:55 +01:00
Andreas Steffen
199c7083e1 openxpki: OCSP responder plugin accessing OpenXPKI
The openxpki plugin directly access the certificates table in
the OpenXPKI's MariaDB in order to retrieve the status of an
issued X.509 certificate based on its serial number.
2023-11-13 12:40:55 +01:00
Andreas Steffen
24d45de633 crl-reason: Fixed typo 2023-11-13 12:40:52 +01:00
Andreas Steffen
d72d0c0dfa utils: Added chunk_to_dec() function 2023-11-13 12:39:10 +01:00
Andreas Steffen
9381559754 x509: Support parsing of OCSP requests 2023-11-13 12:39:10 +01:00
Andreas Steffen
09e2a9ff50 pki --pkcs7: Set default to res = 1 2023-11-13 12:39:10 +01:00
Tobias Brunner
3cb8434367 kernel-netlink: Don't add replay state twice when updating SAs
The kernel includes the XFRMA_REPLAY_ESN_VAL attribute when dumping
SAs since it was added with 2.6.39.  So we basically added this attribute
twice to the message sent to the kernel, potentially exceeding the
message buffer if the window size is large.

The XFRMA_REPLAY_VAL attribute is only dumped since 3.19, so that might
still be relevant (Google seems to maintain a 3.18 kernel) and since we
have to query the current lifetime stats anyway, we can just avoid adding
this attribute twice.

Closes strongswan/strongswan#1967
2023-11-13 12:36:57 +01:00
Tobias Brunner
b345eb3051 Merge branch 'uri-san'
Adds support to encode SANs of type uniformResourceIdentifier in
certificates.  They currently don't have any use in strongSwan, but
might be required for other applications.

Closes strongswan/strongswan#1983
2023-11-13 12:34:32 +01:00
Tobias Brunner
9c2ca27b62 identification: Support explicit uri: prefix for SANs of type uniformResourceIdentifier 2023-11-13 12:33:39 +01:00
Tobias Brunner
500cacf6d8 x509: Add support to encode SANs of type uniformResourceIdentifier 2023-11-13 12:33:39 +01:00
Tobias Brunner
a22147a1b2 x509: Use issuer certificate's subjectKeyIdentifier if available
Instead of just generating an authorityKeyIdentifier based on the
issuer's public key, this allows CA certificates to be issued by a
different tool that doesn't use a SHA-1 hash of the subjectPublicKey
for the subjectKeyIdentifier.

Closes strongswan/strongswan#1992
References strongswan/strongswan#1975
2023-11-13 12:32:32 +01:00
Tobias Brunner
1a1dcf93a5 Merge branch 'pkcs12-no-pw'
This adds support for password-less PKCS#12 containers and PKCS#8 files.

A new option for charon-cmd also allows loading private keys of any
type (previously only RSA keys were supported).

References strongswan/strongswan#1955
2023-11-13 12:27:31 +01:00
Tobias Brunner
8581a19dd7 charon-cmd: Add support for key types other than RSA 2023-11-13 12:26:07 +01:00