diff --git a/app/common/directives/certificate.html b/app/common/directives/certificate.html
index 8579f7a..cb7281b 100644
--- a/app/common/directives/certificate.html
+++ b/app/common/directives/certificate.html
@@ -1,6 +1,6 @@
 <div class="table__row-value row column">
   <div class="certificate__type-cell bold">
-    {{cert.Description}}
+    {{getCertificateName(cert.Description)}}
   </div>
   <div class="certificate__title-inline">
     Issued by:
diff --git a/app/common/directives/certificate.js b/app/common/directives/certificate.js
index 63dc594..45b8c99 100644
--- a/app/common/directives/certificate.js
+++ b/app/common/directives/certificate.js
@@ -9,9 +9,32 @@
         'template': require('./certificate.html'),
         'scope': {'cert': '=', 'reload': '&'},
         'controller': [
-          '$scope', 'APIUtils', 'toastService',
-          function($scope, APIUtils, toastService) {
+          '$scope', 'APIUtils', 'toastService', 'Constants',
+          function($scope, APIUtils, toastService, Constants) {
             var certificateType = 'PEM';
+            var availableCertificateTypes = Constants.CERTIFICATE_TYPES;
+
+            /**
+             * This function is needed to map the backend Description to what
+             * should appear in the GUI. This is needed specifically for CA
+             * certificate types. The backend description for the certificate
+             * type is 'TrustStore Certificate', this function will make sure we
+             * display 'CA Certificate' on the frontend
+             * @param {string} : certificate Description property
+             * @returns {string} : certificate name that should appear on GUI
+             */
+            $scope.getCertificateName = function(certificateDescription) {
+              var matched =
+                  availableCertificateTypes.find(function(certificate) {
+                    return certificate.Description === certificateDescription;
+                  });
+              if (matched === undefined) {
+                return '';
+              } else {
+                return matched.name;
+              }
+            };
+
             $scope.replaceCertificate = function(certificate) {
               $scope.loading = true;
               if (certificate.file.name.split('.').pop() !==
@@ -35,14 +58,16 @@
                     function(data) {
                       $scope.loading = false;
                       toastService.success(
-                          certificate.Description + ' was replaced.');
+                          $scope.getCertificateName(certificate.Description) +
+                          ' was replaced.');
                       $scope.reload();
                     },
                     function(error) {
                       console.log(error);
                       $scope.loading = false;
                       toastService.error(
-                          'Unable to replace ' + certificate.Description);
+                          'Unable to replace ' +
+                          $scope.getCertificateName(certificate.Description));
                     });
               };
               reader.readAsBinaryString(file);
