This is an automated email from the ASF dual-hosted git repository.
markt-asf pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/main by this push:
new ba67ad1e87 Warn for insecure PEM file encryption
ba67ad1e87 is described below
commit ba67ad1e87231e57185776d54df911033b36d392
Author: Mark Thomas <[email protected]>
AuthorDate: Wed May 13 14:59:42 2026 +0100
Warn for insecure PEM file encryption
---
java/org/apache/tomcat/util/net/jsse/LocalStrings.properties | 2 ++
java/org/apache/tomcat/util/net/jsse/PEMFile.java | 7 +++
++++
webapps/docs/changelog.xml | 4 ++++
3 files changed, 13 insertions(+)
diff --git a/java/org/apache/tomcat/util/net/jsse/
LocalStrings.properties b/java/org/apache/tomcat/util/net/jsse/
LocalStrings.properties
index ef16a01b9e..10f6d8e301 100644
--- a/java/org/apache/tomcat/util/net/jsse/LocalStrings.properties
+++ b/java/org/apache/tomcat/util/net/jsse/LocalStrings.properties
@@ -20,6 +20,8 @@ jsseUtil.excludeProtocol=The SSL protocol [{0}]
which is supported in this JRE w
jsseUtil.noDefaultProtocols=Unable to determine a default for
sslEnabledProtocols. Set an explicit value to ensure the connector can
start.
jsseUtil.opensslconf.present=A connector is configured to use a JSSE
TLS implementation with OpenSSL specific OpenSSLConf configuration
elements. The OpenSSLConf configuration elements will be ignored.
+pemFile.encryption.broken=The PEM file [{0}] is using [{1}] which is
considered broken because a brute force attack is trivial with current
hardware
+pemFile.encryption.insecure=The PEM file [{0}] is using [{1}] which
is considered insecure as it is vulnerable to a brute-force attack
pemFile.noMultiPrimes=The PKCS#1 certificate is in multi-prime
format and Java does not provide an API for constructing an RSA
private key object from that format
pemFile.noPassword=A password is required to decrypt the private key
pemFile.notPbkdf2=The OID [{0}] is not the correct OID for PKBDF2
which is the only permitted KDF for PBES2
diff --git a/java/org/apache/tomcat/util/net/jsse/PEMFile.java b/java/
org/apache/tomcat/util/net/jsse/PEMFile.java
index fa52b75232..be8c690f42 100644
--- a/java/org/apache/tomcat/util/net/jsse/PEMFile.java
+++ b/java/org/apache/tomcat/util/net/jsse/PEMFile.java
@@ -51,6 +51,8 @@ import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;
+import org.apache.juli.logging.Log;
+import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.buf.Asn1Parser;
import org.apache.tomcat.util.buf.Asn1Writer;
import org.apache.tomcat.util.buf.HexUtils;
@@ -64,6 +66,7 @@ import org.ietf.jgss.Oid;
*/
public class PEMFile {
+ private static final Log log = LogFactory.getLog(PEMFile.class);
private static final StringManager sm =
StringManager.getManager(PEMFile.class);
private static final byte[] OID_EC_PUBLIC_KEY =
@@ -370,18 +373,21 @@ public class PEMFile {
secretKeyAlgorithm = "DES";
cipherTransformation = "DES/CBC/
PKCS5Padding";
keyLength = 8;
+
log.error(sm.getString("pemFile.encryption.broken", filename,
algorithm));
break;
}
case "DES-EDE3-CBC": {
secretKeyAlgorithm = "DESede";
cipherTransformation = "DESede/CBC/
PKCS5Padding";
keyLength = 24;
+
log.warn(sm.getString("pemFile.encryption.insecure", filename,
algorithm));
break;
}
case "AES-256-CBC": {
secretKeyAlgorithm = "AES";
cipherTransformation = "AES/CBC/
PKCS5Padding";
keyLength = 32;
+
log.warn(sm.getString("pemFile.encryption.insecure", filename,
algorithm));
break;
}
default:
@@ -501,6 +507,7 @@ public class PEMFile {
throw new NoSuchAlgorithmException(
sm.getString("pemFile.unknownEncryptionAlgorithm",
toDottedOidString(oidCipher)));
}
+
log.warn(sm.getString("pemFile.encryption.insecure", filename,
algorithm));
byte[] iv = p.parseOctetString();
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 9efb014883..2e590fed2d 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -258,6 +258,10 @@
Remove support for HTTP 0.9. (markt)
</update>
<!-- Entries for backport and removal before 12.0.0-M1 below
this line -->
+ <add>
+ Log a suitable warning if an encrypted PEM file is detected
using an
+ insecure form for encryption. (markt)
+ </add>
</changelog>
</subsection>
<subsection name="Jasper">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]