diff --git a/smp-angular/src/app/user/user-details-dialog/user-details-dialog.component.ts b/smp-angular/src/app/user/user-details-dialog/user-details-dialog.component.ts
index ed852adbda5ada84b5ca0d832e2b852271f561d7..d06637b6a183eff7b7d61dd48505168b0d05b99d 100644
--- a/smp-angular/src/app/user/user-details-dialog/user-details-dialog.component.ts
+++ b/smp-angular/src/app/user/user-details-dialog/user-details-dialog.component.ts
@@ -210,10 +210,7 @@ export class UserDetailsDialogComponent {
 
   uploadCertificate(event) {
     const file = event.target.files[0];
-
-    const reader = new FileReader();
-    reader.onload = (e) => {
-      this.certificateService.uploadCertificate$(reader.result).subscribe((res: CertificateRo) => {
+      this.certificateService.uploadCertificate$(file).subscribe((res: CertificateRo) => {
             if (res && res.certificateId){
               this.userForm.patchValue({
                 'subject': res.subject,
@@ -231,12 +228,7 @@ export class UserDetailsDialogComponent {
             this.alertService.exception('Error uploading certificate file ' + file.name, err);
           }
         );
-    };
-    reader.onerror = (err) => {
-      this.alertService.exception('Error reading certificate file ' + file.name, err);
-    };
 
-    reader.readAsBinaryString(file);
   }
 
   onCertificateToggleChanged({checked}: MatSlideToggleChange) {
diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIUserService.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIUserService.java
index 3814f8b2bd3a93e35dfcb5cdbd030aa71cec9434..2124f5108477e4bcd62d5d32a96224350fe19c26 100644
--- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIUserService.java
+++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/services/ui/UIUserService.java
@@ -1,6 +1,5 @@
 package eu.europa.ec.edelivery.smp.services.ui;
 
-import eu.europa.ec.edelivery.smp.utils.BCryptPasswordHash;
 import eu.europa.ec.edelivery.smp.data.dao.BaseDao;
 import eu.europa.ec.edelivery.smp.data.dao.UserDao;
 import eu.europa.ec.edelivery.smp.data.model.DBCertificate;
@@ -15,6 +14,7 @@ import eu.europa.ec.edelivery.smp.exceptions.ErrorCode;
 import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException;
 import eu.europa.ec.edelivery.smp.logging.SMPLogger;
 import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory;
+import eu.europa.ec.edelivery.smp.utils.BCryptPasswordHash;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.convert.ConversionService;
@@ -36,9 +36,9 @@ public class UIUserService extends UIServiceBase<DBUser, UserRO> {
 
     private static final SMPLogger LOG = SMPLoggerFactory.getLogger(UIUserService.class);
 
-    private static final byte[] S_PEM_START_TAG = "-----BEGIN CERTIFICATE-----\n".getBytes();
+    private static final byte[] S_PEM_START_TAG = "-----BEGIN CERTIFICATE-----".getBytes();
 
-    private static final byte[] S_PEM_END_TAG = "\n-----END CERTIFICATE-----".getBytes();
+    private static final byte[] S_PEM_END_TAG = "-----END CERTIFICATE-----".getBytes();
 
     private static final String S_BLUECOAT_DATEFORMAT ="MMM dd HH:mm:ss yyyy";
 
@@ -160,7 +160,9 @@ public class UIUserService extends UIServiceBase<DBUser, UserRO> {
             // try to encode
             ByteArrayOutputStream bos = new ByteArrayOutputStream();
             bos.write(S_PEM_START_TAG);
+            bos.write('\n');
             bos.write(Base64.getMimeEncoder().encode(certData));
+            bos.write('\n');
             bos.write(S_PEM_END_TAG);
             is = new ByteArrayInputStream(bos.toByteArray());
         }
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/X509CertificateToCertificateROConverterTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/X509CertificateToCertificateROConverterTest.java
index 53156baae5bb41ff185739e843703317966f76cf..4e9e84e62d755bc94382a5d945b75036162fb2bb 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/X509CertificateToCertificateROConverterTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/conversion/X509CertificateToCertificateROConverterTest.java
@@ -38,7 +38,9 @@ public class X509CertificateToCertificateROConverterTest {
                 {"cert-escaped-chars.pem", "C=BE,O=DIGIT,OU=CEF,CN=Escape characters \\,\\\\#\\+\\<\\>\\\"\\=", "C=BE,O=DIGIT,OU=CEF,CN=Escape characters \\,\\\\#\\+\\<\\>\\\"\\=","5c1bb275","sno=5c1bb275&subject=C%3DBE%2CO%3DDIGIT%2COU%3DCEF%2CCN%3DEscape+characters+%5C%2C%5C%5C%23%5C%2B%5C%3C%5C%3E%5C%22%5C%3D&validfrom=Dec+20+16%3A17%3A09+2018+GMT&validto=Dec+17+16%3A17%3A09+2028+GMT&issuer=C%3DBE%2CO%3DDIGIT%2COU%3DCEF%2CCN%3DEscape+characters+%5C%2C%5C%5C%23%5C%2B%5C%3C%5C%3E%5C%22%5C%3D","CN=Escape characters \\,\\\\\\#\\+\\<\\>\\\"\\=,O=DIGIT,C=BE:000000005c1bb275"},
                 {"cert-nonAscii.pem", "C=BE,O=DIGIT,OU=CEF,CN=NonAscii chars:  àøýßĉæãäħ", "C=BE,O=DIGIT,OU=CEF,CN=NonAscii chars:  àøýßĉæãäħ","5c1bb38d","sno=5c1bb38d&subject=C%3DBE%2CO%3DDIGIT%2COU%3DCEF%2CCN%3DNonAscii+chars%3A++%C3%A0%C3%B8%C3%BD%C3%9F%C4%89%C3%A6%C3%A3%C3%A4%C4%A7&validfrom=Dec+20+16%3A21%3A49+2018+GMT&validto=Dec+17+16%3A21%3A49+2028+GMT&issuer=C%3DBE%2CO%3DDIGIT%2COU%3DCEF%2CCN%3DNonAscii+chars%3A++%C3%A0%C3%B8%C3%BD%C3%9F%C4%89%C3%A6%C3%A3%C3%A4%C4%A7","CN=NonAscii chars:  àøýßĉæãäħ,O=DIGIT,C=BE:000000005c1bb38d"},
                 {"cert-with-email.pem", "C=BE,O=DIGIT,OU=CEF,CN=Cert with email", "C=BE,O=DIGIT,OU=CEF,CN=Cert with email","5c1bb358","sno=5c1bb358&subject=C%3DBE%2CO%3DDIGIT%2COU%3DCEF%2CCN%3DCert+with+email&validfrom=Dec+20+16%3A20%3A56+2018+GMT&validto=Dec+17+16%3A20%3A56+2028+GMT&issuer=C%3DBE%2CO%3DDIGIT%2COU%3DCEF%2CCN%3DCert+with+email","CN=Cert with email,O=DIGIT,C=BE:000000005c1bb358"},
-                };
+                {"cert-smime.pem", "CN=edelivery_sml,OU=PEPPOL TEST SMP,O=European Commission,C=BE", "C=BE,O=OpenPEPPOL AISBL,OU=FOR TEST ONLY,CN=PEPPOL SERVICE METADATA PUBLISHER TEST CA - G2","3cfe6b37e4702512c01e71f9b9175464","sno=3cfe6b37e4702512c01e71f9b9175464&subject=CN%3Dedelivery_sml%2COU%3DPEPPOL+TEST+SMP%2CO%3DEuropean+Commission%2CC%3DBE&validfrom=Sep+21+02%3A00%3A00+2018+GMT&validto=Sep+11+01%3A59%3A59+2020+GMT&issuer=C%3DBE%2CO%3DOpenPEPPOL+AISBL%2COU%3DFOR+TEST+ONLY%2CCN%3DPEPPOL+SERVICE+METADATA+PUBLISHER+TEST+CA+-+G2","CN=edelivery_sml,O=European Commission,C=BE:3cfe6b37e4702512c01e71f9b9175464"},
+
+        };
     }
 
 
diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIUserServiceIntegrationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIUserServiceIntegrationTest.java
index dc1f5575bff1fed5d4fd3fd37fdd0077089df783..a6b39a2c496f5a34cd6e7dd05b97ea977b5d635a 100644
--- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIUserServiceIntegrationTest.java
+++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/services/ui/UIUserServiceIntegrationTest.java
@@ -337,6 +337,24 @@ public class UIUserServiceIntegrationTest extends AbstractServiceIntegrationTest
         assertTrue(cer.getValidFrom().before(cer.getValidTo()));
     }
 
+    @Test
+    public void testGetCertificateDataSMime() throws IOException, CertificateException {
+        // given
+        byte[] buff = IOUtils.toByteArray(UIUserServiceIntegrationTest.class.getResourceAsStream("/certificates/cert-smime.pem"));
+
+        // when
+        CertificateRO cer = testInstance.getCertificateData(buff);
+
+        //then
+        assertEquals("CN=edelivery_sml,O=European Commission,C=BE:3cfe6b37e4702512c01e71f9b9175464", cer.getCertificateId());
+        assertEquals("C=BE,O=OpenPEPPOL AISBL,OU=FOR TEST ONLY,CN=PEPPOL SERVICE METADATA PUBLISHER TEST CA - G2", cer.getIssuer());
+        assertEquals("CN=edelivery_sml,OU=PEPPOL TEST SMP,O=European Commission,C=BE", cer.getSubject());
+        assertEquals("3cfe6b37e4702512c01e71f9b9175464", cer.getSerialNumber());
+        assertNotNull(cer.getValidFrom());
+        assertNotNull(cer.getValidTo());
+        assertTrue(cer.getValidFrom().before(cer.getValidTo()));
+    }
+
     @Test
     public void testGetCertificateDataDER() throws IOException, CertificateException {
         // given