This is an automated email from the ASF dual-hosted git repository.

remm pushed a commit to branch 10.1.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/10.1.x by this push:
     new d64e92c8df Port Fix BZ 67666 - Fix PEM files and 
TLSCertificateReloadListener
d64e92c8df is described below

commit d64e92c8df04e2c9fec9a9d53ffb685903d7268c
Author: remm <r...@apache.org>
AuthorDate: Wed Oct 25 00:17:58 2023 +0200

    Port Fix BZ 67666 - Fix PEM files and TLSCertificateReloadListener
---
 .../tomcat/util/net/openssl/panama/OpenSSLContext.java      |  7 ++++---
 .../apache/tomcat/util/net/openssl/panama/OpenSSLUtil.java  | 13 ++++++++++++-
 .../tomcat/util/net/openssl/panama/LocalStrings.properties  |  1 +
 3 files changed, 17 insertions(+), 4 deletions(-)

diff --git 
a/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLContext.java
 
b/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLContext.java
index da8c8e1046..65de58247e 100644
--- 
a/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLContext.java
+++ 
b/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLContext.java
@@ -575,9 +575,10 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
                 }
             }
 
-            if (certificate.getCertificateFile() == null) {
-                
certificate.setCertificateKeyManager(OpenSSLUtil.chooseKeyManager(kms));
-            }
+            // If there is no certificate file must be using a KeyStore so a 
KeyManager is required.
+            // If there is a certificate file a KeyManager is helpful but not 
strictly necessary.
+            certificate.setCertificateKeyManager(
+                    OpenSSLUtil.chooseKeyManager(kms, 
certificate.getCertificateFile() == null));
 
             success = addCertificate(certificate, localArena);
 
diff --git 
a/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLUtil.java
 
b/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLUtil.java
index 781dd4889a..8891ba839e 100644
--- 
a/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLUtil.java
+++ 
b/modules/openssl-foreign/src/main/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLUtil.java
@@ -74,7 +74,13 @@ public class OpenSSLUtil extends SSLUtilBase {
     }
 
 
+    @Deprecated
     public static X509KeyManager chooseKeyManager(KeyManager[] managers) 
throws Exception {
+        return chooseKeyManager(managers, true);
+    }
+
+
+    public static X509KeyManager chooseKeyManager(KeyManager[] managers, 
boolean throwOnMissing) throws Exception {
         if (managers == null) {
             return null;
         }
@@ -88,7 +94,12 @@ public class OpenSSLUtil extends SSLUtilBase {
                 return (X509KeyManager) manager;
             }
         }
-        throw new 
IllegalStateException(sm.getString("openssl.keyManagerMissing"));
+        if (throwOnMissing) {
+            throw new 
IllegalStateException(sm.getString("openssl.keyManagerMissing"));
+        }
+
+        log.warn(sm.getString("openssl.keyManagerMissing.warn"));
+        return null;
     }
 
 
diff --git 
a/modules/openssl-foreign/src/main/resources/org/apache/tomcat/util/net/openssl/panama/LocalStrings.properties
 
b/modules/openssl-foreign/src/main/resources/org/apache/tomcat/util/net/openssl/panama/LocalStrings.properties
index 720877ef78..3b6ab4c80d 100644
--- 
a/modules/openssl-foreign/src/main/resources/org/apache/tomcat/util/net/openssl/panama/LocalStrings.properties
+++ 
b/modules/openssl-foreign/src/main/resources/org/apache/tomcat/util/net/openssl/panama/LocalStrings.properties
@@ -57,6 +57,7 @@ openssl.errorLoadingCertificateRevocationList=Error loading 
certificate revocati
 openssl.errorPrivateKeyCheck=Private key does not match the certificate public 
key: [{0}] 
 openssl.errorSSLCtxInit=Error initializing SSL context
 openssl.keyManagerMissing=No key manager found
+openssl.keyManagerMissing.warn=No key manager found. TLS will work but the 
certificate will not be visible to Tomcat so management/monitoring features 
will not work for this certificate
 openssl.makeConf=Creating OpenSSLConf context
 openssl.noCACerts=No CA certificates were configured
 openssl.nonJsseCertificate=The certificate [{0}] or its private key [{1}] 
could not be processed using a JSSE key manager and will be given directly to 
OpenSSL


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to