Take the 2-minute tour ×
Information Security Stack Exchange is a question and answer site for Information security professionals. It's 100% free, no registration required.

Lets say I have a self-signed root certificate called root-ca.pem created by openssl. It allows me to sign certificates. Is it possible sign new.csr certificate with root-ca.pem such that the issuer from signed new.csr would be different from the issuer who signed root-ca.pem?

share|improve this question
add comment

migrated from crypto.stackexchange.com Jan 8 at 14:07

This question came from our site for software developers, mathematicians and others interested in cryptography.

2 Answers

up vote 3 down vote accepted

It would be possible to do this, but the simple question is: why?

Let us assume that when signing the TBS Certificate you change the issuer DName to something else. If the specified signer of the certificate is different from the real signer then the process of validating the certificate path would fail.

Check out RFC 5280 Section 6 to view the certificate path validation algorithm. One of the key checks is that the subject of certificate x is the issuer of certificate x+1, which in your question is not the case. Thus, the produced certificate would always fail certificate validation.

In all commercial situations you would not be able to do this, because the issuer part of the certificate is not included in the certificate request (check out the PKCS#10 format) and is set by the CA just prior to the actual signing of the certificate.

But if you were doing the actual programming of the certificate signing (using, say, bouncycastle APIs in Java or C#), then you could change the issuer name. However, in doing so your certificate would fail validation by all systems other than a custom validation system that you would have to build yourself.

share|improve this answer
add comment

No, but considering that even commercial certificates might be cross-signed, it might be important to pay close attention to the details.

For instance, you might end up in a situation where your certificate $A$ can be verified by either a self signed certificate $B$, or an intermediate CA certificate $C$ issued by a root $D$. Still, in such situations the following equalities should be true:

  • $A.issuer = B.subject = C.subject$
  • $B.subject = B.issuer$
  • $B.PublicKey = C.PublicKey$
  • $Verify_{B.PublicKey}(A) = Verify_{C.PublicKey}(A) = OK$

Note that the first and second equalities imply that $A.issuer = B.issuer$ as you ask. However, since $C.subject \ne C.issuer$, you will have $A.issuer \ne C.issuer$, even though $C$ can be used to verify $A$.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.