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));
+  }
 }