2011-11-15 59 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,证书必须签字。它必须用私钥完成 - 这就是为什么你需要一个用于生成证书的原因。如果使用打开密钥的配对私钥对证书进行签名,您将为其颁发证书,而不是自签名证书。否则,您需要所谓的证书颁发机构的私钥进行签名。