diff --git a/warden_ra/warden_ra.py b/warden_ra/warden_ra.py
index 99fa15e58735c8e8596f5d0d85ef945437e58d7a..f8fecbe10b2884e2045487f58258fc043803fac6 100755
--- a/warden_ra/warden_ra.py
+++ b/warden_ra/warden_ra.py
@@ -368,7 +368,7 @@ class CertHandler(ObjectBase):
         if not password:
             raise self.req.error(message="Missing password and certificate validation failed", error=403, name=name, password=password)
         try:
-            newcert = self.registry.new_cert(client, csr_data, password[0])
+            newcert = self.registry.new_cert(client, csr_data.decode('latin1'), password[0])
         except Exception as e:
             raise self.req.error(message="Processing error", error=403, exc=sys.exc_info())
         self.log.info("Generated.")
@@ -512,7 +512,7 @@ def request(registry, key, csr, verbose=False):
         "prompt=no\n"
         "\n"
         "[req_distinguished_name]\n"
-        "commonName=dummy"
+        "commonName=dummy".encode("ascii")
     )
     openssl.stdin.close()
     openssl.wait()
@@ -532,7 +532,7 @@ def gen_cert(registry, name, csr, cert, password, verbose=False):
         print(newcert.as_pem())
     with open(cert, "w") as f:
         f.write(newcert.as_text())
-        f.write(newcert.as_pem())
+        f.write(newcert.as_pem().decode("ascii"))
 
 
 def get_args():