apache/hadoop · error · IOException
Property %s not specified
Error message
Property %s not specified
What it means
HttpServer2.Builder.loadSSLConfiguration() runs when the builder was given an SSL configuration (HTTPS enabled). It requires ssl.server.keystore.location to be present and non-blank (read with getTrimmed) and throws IOException naming the missing property. This is the first and most common check hit when enabling TLS on any Hadoop daemon's web UI.
Source
Thrown at hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/http/HttpServer2.java:472
if (passchars == null) {
return null;
}
return new String(passchars);
}
/**
* Load SSL properties from the SSL configuration.
*/
private void loadSSLConfiguration() throws IOException {
if (sslConf == null) {
return;
}
needsClientAuth = sslConf.getBoolean(
SSLFactory.SSL_SERVER_NEED_CLIENT_AUTH,
SSLFactory.SSL_SERVER_NEED_CLIENT_AUTH_DEFAULT);
keyStore = sslConf.getTrimmed(SSLFactory.SSL_SERVER_KEYSTORE_LOCATION);
if (keyStore == null || keyStore.isEmpty()) {
throw new IOException(String.format("Property %s not specified",
SSLFactory.SSL_SERVER_KEYSTORE_LOCATION));
}
keyStorePassword = getPasswordString(sslConf,
SSLFactory.SSL_SERVER_KEYSTORE_PASSWORD);
if (keyStorePassword == null) {
throw new IOException(String.format("Property %s not specified",
SSLFactory.SSL_SERVER_KEYSTORE_PASSWORD));
}
keyStoreType = sslConf.get(SSLFactory.SSL_SERVER_KEYSTORE_TYPE,
SSLFactory.SSL_SERVER_KEYSTORE_TYPE_DEFAULT);
keyPassword = getPasswordString(sslConf,
SSLFactory.SSL_SERVER_KEYSTORE_KEYPASSWORD);
trustStore = sslConf.get(SSLFactory.SSL_SERVER_TRUSTSTORE_LOCATION);
trustStorePassword = getPasswordString(sslConf,
SSLFactory.SSL_SERVER_TRUSTSTORE_PASSWORD);
trustStoreType = sslConf.get(SSLFactory.SSL_SERVER_TRUSTSTORE_TYPE,
SSLFactory.SSL_SERVER_TRUSTSTORE_TYPE_DEFAULT);
excludeCiphers = sslConf.get(SSLFactory.SSL_SERVER_EXCLUDE_CIPHER_LIST);View on GitHub (pinned to 2add963021)
Solutions
- Add <property><name>ssl.server.keystore.location</name><value>/etc/security/keystores/server.jks</value></property> to ssl-server.xml on the node (and typically all nodes)
- Confirm the ssl-server.xml is actually being loaded and the property name matches exactly (no trailing spaces)
- Verify the keystore file exists and is readable by the daemon user at that path
- If SSL was enabled unintentionally, fix the hadoop.ssl.enabled / service HTTP-vs-HTTPS setting instead
Example fix
<!-- ssl-server.xml before: missing keystore location -->
<configuration/>
<!-- after -->
<configuration>
<property>
<name>ssl.server.keystore.location</name>
<value>/etc/security/keystores/server.jks</value>
</property>
</configuration> Defensive patterns
Strategy: validation
Validate before calling
Configuration ssl = new Configuration(false);
ssl.addResource("ssl-server.xml");
String ks = ssl.getTrimmed("ssl.server.keystore.location");
if (ks == null || ks.isEmpty() || !new File(ks).canRead()) {
throw new ConfigValidationException("ssl.server.keystore.location missing or unreadable: " + ks);
}
new HttpServer2.Builder()...build(); Prevention
- Add a config lint step to cluster deployment that validates ssl-server.xml on every node
- Template ssl-server.xml with required keys so the keystore location can never be omitted
- Monitor daemon startup logs for 'Property ssl.server.' messages during TLS rollouts
When it happens
Trigger: Starting NameNode/DataNode/JournalNode/JobHistory/KMS/HttpFS with HTTP-level SSL enabled (hadoop.ssl.enabled / service HTTPS settings that load ssl-server.xml) where ssl-server.xml lacks ssl.server.keystore.location or the property value is empty/whitespace.
Common situations: Enabling TLS but forgetting to deploy ssl-server.xml to that node; a typo'd property name; an empty <value/> tag; pointing at a keystore path that is set on one host but not others in the cluster.
Related errors
- The property '{}' has not been set in the ssl configuration
- The SSL encryption is enabled for the component's ZooKeeper
- The SSL encryption is enabled for the component's ZooKeeper
- The keystore location parameter is empty for the ZooKeeper c
- Invalid hostname verifier: {}
AI-assisted analysis of apache/hadoop@2add963021 (2026-08-22).
Data as JSON: /api/errors/803651d6a7f92e13.
Report an issue: GitHub.