Dear all,

We are using C# with bouncy castle .net library to implement a feature. Let us 
say we work as a website_A to generate CSR for end customer, then end customer 
will take the CSR we generate to our business partner website_B to acquire a 
certificate.

Previously it worked perfectly fine. Note keyPair.Public and keyPair.Private 
are from the same RSA key pair. The generated CSR can be validated without any 
issue here https://certlogik.com/decoder.

Pkcs10CertificationRequest request = new Pkcs10CertificationRequest(
            "SHA256withRSA",
            new X509Name(subject),
            keyPair.Public,
            null,
            keyPair.Private);

However, our business partner website_B wants to validate that any CSR 
submitted/uploaded by end customer is not only valid but indeed generated by us 
(website_A). So we create a new pair of RSA keys and pass the new public key to 
website_B and use the new private key to sign any new CSR. So our code is 
updated as below. Please note that keyPair.Public and newKeyPair.Privae are 
from different pairs of RSA keys. The code can still generate CSR, but fail on 
validation such as https://certlogik.com/decoder. Weird enough though our 
business partner website_B can still parse/decode the new format of CSR with 
newKeyPair.Public we pass to them, if CSR validation step is skipped.

Pkcs10CertificationRequest request = new Pkcs10CertificationRequest(
            "SHA256withRSA",
            new X509Name(subject),
            keyPair.Public,
            null,
            newKeyPair.Private);


So my questions are:
1) Is our business partner website_B requirement of digital signature of CSR 
(so that they can be sure the CSR is generated by us) sound?
2) If yes how we can attach the digital signature of CSR with the original CSR. 
Please note Pkcs10CertificationRequest can only take one private key. Do we 
have to create a CSR and separately create a signature so that both of them can 
be uploaded to website_B?
3) Is there another way to digitally sign CSR with different pair of private 
key?

Thanks,
Roger

Reply via email to