diff --git a/certificate.cpp b/certificate.cpp
index 1ac5426..2490159 100644
--- a/certificate.cpp
+++ b/certificate.cpp
@@ -75,10 +75,12 @@
 {
     const X509_Ptr cert = loadCert(certPath);
     unsigned long subjectNameHash = X509_subject_name_hash(cert.get());
-    static constexpr auto CERT_ID_LENGTH = 9;
+    unsigned long issuerSerialHash = X509_issuer_and_serial_hash(cert.get());
+    static constexpr auto CERT_ID_LENGTH = 17;
     char idBuff[CERT_ID_LENGTH];
 
-    snprintf(idBuff, CERT_ID_LENGTH, "%08lx", subjectNameHash);
+    snprintf(idBuff, CERT_ID_LENGTH, "%08lx%08lx", subjectNameHash,
+             issuerSerialHash);
 
     return std::string(idBuff);
 }
@@ -110,16 +112,19 @@
     snprintf(hashBuf, CERT_HASH_LENGTH, "%08lx", hash);
 
     const std::string certHash(hashBuf);
-    const std::string certDstFileX509Path =
-        certDstDirPath + "/" + certHash + ".0";
-    if (fs::exists(certDstFileX509Path))
+    for (int i = 0; i < AUTHORITY_CERTIFICATES_LIMIT; ++i)
     {
-        log<level::ERR>("Authority certificate x509 file path already used",
-                        entry("CERT=%s", certDstFileX509Path.c_str()));
-        elog<InternalFailure>();
+        const std::string certDstFileX509Path =
+            certDstDirPath + "/" + certHash + "." + std::to_string(i);
+        if (!fs::exists(certDstFileX509Path))
+        {
+            return certDstFileX509Path;
+        }
     }
 
-    return certDstFileX509Path;
+    log<level::ERR>("Authority certificate x509 file path already used",
+                    entry("DIR=%s", certDstDirPath.c_str()));
+    elog<InternalFailure>();
 }
 
 std::string
diff --git a/test/certs_manager_test.cpp b/test/certs_manager_test.cpp
index 30f0dd1..b971bed 100644
--- a/test/certs_manager_test.cpp
+++ b/test/certs_manager_test.cpp
@@ -314,7 +314,7 @@
     EXPECT_TRUE(fs::exists(verifyPath));
 }
 
-/** @brief Check if in authority mode user cannot install a certificate with
+/** @brief Check if in authority mode user can install a certificate with
  * certain subject hash twice.
  */
 TEST_F(TestCertificates, InvokeInstallSameSubjectTwice)
@@ -350,24 +350,19 @@
     // Prepare second certificate with the same subject
     createNewCertificate();
 
-    using NotAllowed =
-        sdbusplus::xyz::openbmc_project::Common::Error::NotAllowed;
-    EXPECT_THROW(
-        {
-            try
-            {
-                // Install second certificate
-                mainApp.install(certificateFile);
-            }
-            catch (const NotAllowed& e)
-            {
-                throw;
-            }
-        },
-        NotAllowed);
+    // Install second certificate
+    mainApp.install(certificateFile);
 
     // Expect there are exactly two certificates in the collection
-    EXPECT_EQ(certs.size(), 1);
+    EXPECT_EQ(certs.size(), 2);
+
+    // Check that certificate has been created at installation directory
+    std::string verifyPath1 =
+        verifyDir + "/" + getCertSubjectNameHash(certificateFile) + ".1";
+    EXPECT_TRUE(fs::exists(verifyPath1));
+
+    // Check that installed cert is identical to input one
+    EXPECT_TRUE(compareFiles(certificateFile, verifyPath1));
 
     // Check that the original/first certificate has been not removed
     EXPECT_FALSE(fs::is_empty(verifyDir));
