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]