Commit Graph

140 Commits

Author SHA1 Message Date
Julius Pfrommer 3bec159cb9 Merge remote-tracking branch 'origin/1.4' into merge_14_master_25 2025-01-25 19:06:56 +01:00
Christian von Arnim 403f4628c4 fix(plugin): Convert PEM to DER for rsa policies 2025-01-20 16:02:26 +01:00
Noel Graf 373986fbf1 fix(plugin): Reset only the specified part of the trust list when setting it 2025-01-15 14:15:29 +01:00
Noel Graf f29a7f3f30 fix(plugin): Extend CertificateUtils to support CRL for the thumbprint and subject name functions 2025-01-15 14:15:29 +01:00
Julius Pfrommer 41f7dc4f87 refactor(plugins): Improve the logging of mismatching ApplicationURI in openssl/certificategroup.c 2024-12-10 08:28:30 +01:00
Julius Pfrommer 9f6b89b4cb feat(plugins): Use the application's logger in UA_CertificateUtils_verifyApplicationURI 2024-12-10 08:28:30 +01:00
Julius Pfrommer 9e17e1b4f9 fix(plugins): Don't use the server log category for generic certificategroup functionality 2024-12-10 08:28:30 +01:00
Julius Pfrommer a5344503dd fix(plugins): Certificate verification must not depend on an absolute memory location of the CertificateGroup 2024-11-29 21:50:05 +01:00
Julius Pfrommer 3785ed5c4d Merge remote-tracking branch 'origin/1.4' into merge_14_master_24 2024-11-29 21:50:04 +01:00
Julius Pfrommer 9e59f1abe2 refactor(plugins): Remove comparison of authorityKeyIdentifier / subjectKeyIdentifier not supported by CTT
The CTT example Security User X509/001.js expects that an issuer is
selected where the authorityKeyIdentifier / subjectKeyIdentifier do not
match. No longer use X509_check_issued, but rather manually check if the
issuer name and subject name match -- with no other checks beyond that.
2024-11-25 18:48:59 +01:00
Julius Pfrommer b6961b23ae Merge remote-tracking branch 'origin/1.3' into merge_13_14_21 2024-11-24 23:45:19 +01:00
Julius Pfrommer 68142484a3 feat(plugins): Disable revocation lists checks in ua_pki_openssl.c if zero crl are loaded
Avoid breakage for users of the 1.3 release family but still log a warning.
2024-11-23 21:57:36 +01:00
Julius Pfrommer 80bbdd4170 fix(plugins): Return detailed status codes for revocation checks in ua_pki_openssl.c 2024-11-23 21:57:36 +01:00
Julius Pfrommer 486a65ee10 fix(plugins): Also consider the trustlist to find issuers in ua_pki_openssl.c 2024-11-23 21:57:36 +01:00
Julius Pfrommer 2b445aecf6 Merge remote-tracking branch 'origin/1.4' into merge_14_master_23 2024-11-05 17:19:45 +01:00
Julius Pfrommer 805c1ab17a fix(plugins): Reenable writing rejected certificates to a reject folder 2024-11-05 00:38:08 +01:00
Thomas Zeschg ffb74325c2 refactor(plugin): improvement of memory management in ECC policy
* Place UA_ByteString on the stack instead of heap
* Use UA_calloc to automatically initialize memory with zero
* Additional minor improvements based on PR feedback
2024-11-04 12:44:46 +01:00
Thomas Zeschg 308d8e2759 feat(plugin): add OpenSSL plugin for ECC P-256
Add http://opcfoundation.org/UA/SecurityPolicy#ECC_nistP256
policy support in OpenSSL plugin.
2024-11-04 12:44:46 +01:00
Thomas Zeschg d92c4221c2 refactor(plugin): reuse bio in decoding of DER/PEM 2024-10-31 16:39:49 +01:00
Thomas Zeschg 380c58f109 refactor(plugin): avoid magic numbers in detection of DER encoding
Replace the detection of DER encoding using magic numbers by
OpenSSL functions trying to decode the input as DER first and if
not successful as PEM afterwards. This approach is less error
prone and more flexible, as it supports Elliptic Curve keys and
certificates as well.
2024-10-31 16:39:49 +01:00
Noel Graf 4a7168817a feat(plugins): Add CertificateUtils function to validate if a certificate is a CA certificate 2024-10-29 01:17:05 +01:00
Noel Graf 584f40bfa4 refactor(plugins): Simplify CertificateGroup utilities functions 2024-10-29 01:17:05 +01:00
Noel Graf 5f1a600c46 fix(plugins): Fix typo in the name of a certificate utility function 2024-10-29 01:17:05 +01:00
Julius Pfrommer a75fed6389 Merge remote-tracking branch 'origin/1.3' into merge_13_14_20 2024-10-22 23:53:01 +02:00
Julius Pfrommer db91b23259 fix(plugins): Manually classify certificates as CA for OpenSSL
Replace the builtin method with manual classification. We now require
the KU_CRL_SIGN flag to detect a CA. Before we rejected the leaf
certificates generated by some vendors.
2024-10-22 23:50:15 +02:00
Noel Graf fc744936d3 feat(plugin): Add CertificateGroup function to retrieve all CRLs associated with a certificate. 2024-10-16 08:15:47 +02:00
Noel Graf b75eac4454 feat(plugin): Add helper functions for loading certificates and CRLs 2024-10-16 08:15:47 +02:00
Julius Pfrommer ff24a547d4 Merge remote-tracking branch 'origin/1.4' into merge_14_master_22 2024-10-07 22:23:25 +02:00
Julius Pfrommer 712cce9bb7 Merge remote-tracking branch 'origin/1.3' into merge_13_14_19 2024-10-05 22:11:22 +02:00
Julius Pfrommer 0a48591990 fix(plugins): Disable the Basic128Rsa15 and Basic256 SecurityPolicy 2024-10-03 13:47:11 +02:00
Julius Pfrommer 43e2b04a26 Merge remote-tracking branch 'origin/1.4' into merge_14_master_22 2024-10-03 10:33:56 +02:00
Julius Pfrommer f9d4c16310 fix(plugins): More thorough validation that the issuer is a valid CA 2024-10-02 18:01:34 +02:00
Julius Pfrommer ba22a98523 fix(plugins): More thorough validation that the issuer is a valid CA 2024-10-02 13:56:09 +02:00
Noel Graf dccdfe629c feat(plugin): Check which privateKey should be used if no key is specified 2024-10-01 23:47:35 +02:00
Noel Graf 94dfc4f8c6 feat(plugin): Add CertificateUtils function to verify key pair 2024-10-01 23:47:35 +02:00
Noel Graf 1b7629ca4e feat(plugin): Add CertificateUtils function to compare public keys for equality 2024-10-01 23:47:35 +02:00
Julius Pfrommer 2008fc2676 Merge remote-tracking branch 'origin/1.3' into merge_13_14_17 2024-09-27 22:35:01 +02:00
Julius Pfrommer c63520c407 refactor(plugins): Use the same certificate verification logic for mbedTLS and OpenSSL
Walk the tree to find a complete chain of unrevoked and current
certificates.  The chain must end in a self-signed certificate.
Then, on the "way down", check that at least one certificate
in the chain is trusted.
2024-09-27 21:18:38 +02:00
Julius Pfrommer 19ecf3e562 refactor(plugin): Manual OpenSSL certificate verification steps
The previous certificate verification relied on many OpenSSL internals
and a forest of feature-flags.  The new code is about the same size and
makes the certificate verification steps explicit.

The only downside is that we no longer auto-retrieve revocation lists if
a distribution point is defined in a CA certificate. But revocation is
handled by a GDS in OPC UA. And we don't want our certificate
verification to do synchronous HTTP calls in the background.
2024-09-22 23:49:24 +02:00
Julius Pfrommer af1abb2e83 refactor(plugins): Better cleanup of the OpenSSL CertificateVerification plugin 2024-09-22 23:49:24 +02:00
Sören Krecker 7acfe56053 fix(sec): avoid memmory read access errors
Check for null pointer befor passing then into a openssl function.
2024-09-22 11:03:18 +02:00
Christian von Arnim f4af493b57 fix(core): LibreSSL 3.5
(cherry picked from commit 35939a5b68)
2024-09-16 17:27:51 +02:00
estr Eckerstorfer Andreas 166d03c351 refactor(core): Substitute tabs by spaces in source code 2024-09-14 02:33:22 +02:00
Julius Pfrommer 2368ec2cbe Merge remote-tracking branch 'origin/1.4' into merge_14_master_21 2024-09-11 15:33:39 +02:00
Julius Pfrommer 48afbff739 Merge remote-tracking branch 'origin/1.3' into merge_13_14_15 2024-09-11 12:41:16 +02:00
Romain Gauci 9b6848a7e8 fix(plugin): Proper error handling when checking all CRLs
If a chain of Certificate Authorities (CAs) longer than one is present,
all CRL checks on the additional CAs were bypassed. This resulted in the
potential acceptance of certificates that have been revoked or have
expired CRLs.
2024-09-11 10:25:57 +02:00
soekkle 317819b7d3 fix(plugin): Avoid memmory read access errors (#6688)
Check for null pointer befor passing then into a openssl function.
2024-09-10 09:07:58 +02:00
Julius Pfrommer d4534a9704 refactor(plugin): Consistently name the OpenSSL plugin files 2024-07-20 11:42:05 +02:00
Julius Pfrommer c63b43dd2b refactor(plugin): Fold the ua_openssl_version_abstraction.h into _common.h 2024-07-20 11:42:05 +02:00
Julius Pfrommer 33327a85a9 Merge remote-tracking branch 'origin/1.4' into merge_14_master_17 2024-07-08 10:56:48 +02:00