2011-11-15 61 views
0

我有一個XML格式的RSA公鑰。我需要使用該密鑰並使用該公鑰創建一個x.509證書。我無權訪問私鑰來完成密鑰對。我發現的所有示例都涉及生成密鑰對或者同時訪問公鑰和私鑰。如何僅基於RSA格式的公鑰生成x509Certificate?

下面是我一直在努力完成的測試例程的一小段代碼。

RSACryptoServiceProvider provider = new RSACryptoServiceProvider(); 
     provider.FromXmlString("<RSAKeyValue><Modulus>puEVvRbrLAz.......c1W5j/vqJSUrXo16k=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>"); 

     Org.BouncyCastle.Crypto.Parameters.RsaKeyParameters key = Org.BouncyCastle.Security.DotNetUtilities.GetRsaPublicKey(provider); 

//<!*** Do some code to take RsaKeyParameters and create an x.509 Certificate ***> 

     var fOut = new System.IO.StreamWriter(@"C:\certificate.pem", false); 
     var pw = new Org.BouncyCastle.OpenSsl.PemWriter(fOut); 
     pw.WriteObject(key); 
+1

這樣的證書不會給你什麼(並不是說你必須以某種方式簽署它)。你爲什麼需要這樣做? –

+0

只有公鑰才能創建有效的X.509證書。 –

回答

2

只是爲了澄清不可能使用公鑰生成證書的問題。

AFAIK,證書必須簽字。它必須用私鑰完成 - 這就是爲什麼你需要一個用於生成證書的原因。如果使用打開密鑰的配對私鑰對證書進行簽名,您將爲其頒發證書,而不是自簽名證書。否則,您需要所謂的證書頒發機構的私鑰進行簽名。