SLIDER-1261 CSR creation fails for long hostnames greater than 64 chars
diff --git a/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java b/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java
index 8fdf77f..d834c2e 100644
--- a/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java
+++ b/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java
@@ -2650,4 +2650,14 @@
}
return prefix;
}
+
+ public static String extractDomainNameFromFQDN(String fqdn) {
+ if (fqdn != null) {
+ fqdn = fqdn.trim();
+ if (fqdn.matches("[^\\.]+\\..+")) {
+ fqdn = fqdn.replaceFirst("[^\\.]+\\.", "");
+ }
+ }
+ return fqdn;
+ }
}
diff --git a/slider-core/src/main/java/org/apache/slider/server/services/security/CertificateManager.java b/slider-core/src/main/java/org/apache/slider/server/services/security/CertificateManager.java
index a642369..187b470 100644
--- a/slider-core/src/main/java/org/apache/slider/server/services/security/CertificateManager.java
+++ b/slider-core/src/main/java/org/apache/slider/server/services/security/CertificateManager.java
@@ -20,6 +20,7 @@
import com.google.inject.Singleton;
import org.apache.commons.io.FileUtils;
import org.apache.slider.common.SliderKeys;
+import org.apache.slider.common.tools.SliderUtils;
import org.apache.slider.core.conf.MapOperations;
import org.apache.slider.core.exceptions.SliderException;
import org.slf4j.Logger;
@@ -473,10 +474,8 @@
private String getSubjectDN(String hostname, String containerId,
String appName) {
return String.format("/CN=%s%s%s",
- hostname,
+ SliderUtils.extractDomainNameFromFQDN(hostname),
containerId != null ? "/OU=" + containerId : "",
appName != null ? "/OU=" + appName : "");
-
-
}
}
diff --git a/slider-core/src/test/java/org/apache/slider/common/tools/TestSliderUtils.java b/slider-core/src/test/java/org/apache/slider/common/tools/TestSliderUtils.java
index deca7a8..7bf1906 100644
--- a/slider-core/src/test/java/org/apache/slider/common/tools/TestSliderUtils.java
+++ b/slider-core/src/test/java/org/apache/slider/common/tools/TestSliderUtils.java
@@ -173,4 +173,25 @@
Assert.assertEquals("Should be null", msg,
SliderUtils.extractFirstLine(msg));
}
+
+ @Test
+ public void testExtractDomainNameFromFQDN() {
+ String fqdn = "azure-cluster-c0.k4kldeirxsoutbyybgqoiqdsgg.fx.cloudapp.net";
+ Assert.assertEquals("Returned domainname is incorrect",
+ "k4kldeirxsoutbyybgqoiqdsgg.fx.cloudapp.net",
+ SliderUtils.extractDomainNameFromFQDN(fqdn));
+ fqdn = "";
+ Assert.assertEquals("Returned domainname should be empty string", "",
+ SliderUtils.extractDomainNameFromFQDN(fqdn));
+ fqdn = null;
+ Assert.assertEquals("Returned domainname should be null", null,
+ SliderUtils.extractDomainNameFromFQDN(fqdn));
+ fqdn = "azure-cluster-c0";
+ Assert.assertEquals("Returned domainname should be same as fqdn",
+ "azure-cluster-c0", SliderUtils.extractDomainNameFromFQDN(fqdn));
+ // should handle whitespaces as well
+ fqdn = " www.example.com";
+ Assert.assertEquals("Returned domainname is incorrect", "example.com",
+ SliderUtils.extractDomainNameFromFQDN(fqdn));
+ }
}