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

markt-asf 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 e099303749 Improve error diagnostics
e099303749 is described below

commit e0993037491d75aa815eb109308ca58dafd0dece
Author: Mark Thomas <[email protected]>
AuthorDate: Thu Nov 5 14:02:39 2026 +0000

    Improve error diagnostics
---
 .../apache/tomcat/util/net/openssl/panama/OpenSSLContext.java    | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLContext.java 
b/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLContext.java
index b6b3ed6c49..f73a90be5f 100644
--- a/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLContext.java
+++ b/java/org/apache/tomcat/util/net/openssl/panama/OpenSSLContext.java
@@ -27,6 +27,7 @@ import java.lang.ref.Cleaner;
 import java.lang.ref.Cleaner.Cleanable;
 import java.nio.charset.StandardCharsets;
 import java.security.KeyManagementException;
+import java.security.PrivateKey;
 import java.security.SecureRandom;
 import java.security.cert.CertificateException;
 import java.security.cert.CertificateFactory;
@@ -1447,8 +1448,14 @@ public class OpenSSLContext implements 
org.apache.tomcat.util.net.SSLContext {
             X509KeyManager x509KeyManager = 
certificate.getCertificateKeyManager();
             String alias = getServedAlias(certificate);
             X509Certificate[] chain = 
x509KeyManager.getCertificateChain(alias);
+            PrivateKey javaKey = x509KeyManager.getPrivateKey(alias);
+            if (javaKey == null || javaKey.getEncoded() == null || chain == 
null || chain.length == 0) {
+                // No native error will have been raised so identify the alias 
that could not be loaded
+                log.error(sm.getString("openssl.errorLoadingCertificate", 
alias));
+                return false;
+            }
             String encodedKey = BEGIN_KEY + Base64.getMimeEncoder(64, new 
byte[] { '\n' })
-                    
.encodeToString(x509KeyManager.getPrivateKey(alias).getEncoded()) + END_KEY;
+                    .encodeToString(javaKey.getEncoded()) + END_KEY;
             var rawCertificate = 
localArena.allocateFrom(ValueLayout.JAVA_BYTE, chain[0].getEncoded());
             var rawCertificatePointer = 
localArena.allocateFrom(ValueLayout.ADDRESS, rawCertificate);
             var rawKey = localArena.allocateFrom(ValueLayout.JAVA_BYTE, 
encodedKey.getBytes(StandardCharsets.US_ASCII));


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to