diff --git a/redfish-core/lib/certificate_service.hpp b/redfish-core/lib/certificate_service.hpp
index 68b7ff5..1f69123 100644
--- a/redfish-core/lib/certificate_service.hpp
+++ b/redfish-core/lib/certificate_service.hpp
@@ -465,6 +465,26 @@
                        "/Links/Certificates@odata.count"_json_pointer);
 }
 
+inline void handleError(const std::string_view dbusErrorName,
+                        const std::string& id, const std::string& certificate,
+                        const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
+{
+    if (dbusErrorName == "org.freedesktop.DBus.Error.UnknownObject")
+    {
+        messages::resourceNotFound(asyncResp->res, "Certificate", id);
+    }
+    else if (dbusErrorName ==
+             "xyz.openbmc_project.Certs.Error.InvalidCertificate")
+    {
+        messages::propertyValueIncorrect(asyncResp->res, "Certificate",
+                                         certificate);
+    }
+    else
+    {
+        messages::internalError(asyncResp->res);
+    }
+}
+
 inline void handleReplaceCertificateAction(
     App& app, const crow::Request& req,
     const std::shared_ptr<bmcweb::AsyncResp>& asyncResp)
@@ -549,19 +569,21 @@
     std::shared_ptr<CertificateFile> certFile =
         std::make_shared<CertificateFile>(certificate);
     crow::connections::systemBus->async_method_call(
-        [asyncResp, certFile, objectPath, service, url{*parsedUrl}, id,
-         name](const boost::system::error_code& ec) {
+        [asyncResp, certFile, objectPath, service, url{*parsedUrl}, id, name,
+         certificate](const boost::system::error_code& ec,
+                      sdbusplus::message::message& m) {
             if (ec)
             {
                 BMCWEB_LOG_ERROR("DBUS response error: {}", ec);
-                if (ec.value() ==
-                    boost::system::linux_error::bad_request_descriptor)
+                const sd_bus_error* dbusError = m.get_error();
+                if ((dbusError != nullptr) && (dbusError->name != nullptr))
                 {
-                    messages::resourceNotFound(asyncResp->res, "Certificate",
-                                               id);
-                    return;
+                    handleError(dbusError->name, id, certificate, asyncResp);
                 }
-                messages::internalError(asyncResp->res);
+                else
+                {
+                    messages::internalError(asyncResp->res);
+                }
                 return;
             }
             getCertificateProperties(asyncResp, objectPath, service, id, url,
