如何仅基于RSA格式的公钥生成x509Certificate?

时间:2011-11-15 17:48:45

标签: c# rsa bouncycastle x509 pem

我有一个XML格式的RSA公钥。我需要使用此密钥并使用该公钥创建x.509证书。我无权访问私钥来完成密钥对。我发现的所有示例都涉及生成密钥对或访问公钥和私钥。

以下是我一直致力于完成此任务的测试例程的小片段。

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 :(得分:2)

只是为了澄清不可能仅使用公钥生成证书的问题。

AFAIK,证书必须签名。它必须使用私钥来完成 - 这就是为什么你需要一个用于生成证书的原因。如果证书是使用开放密钥的配对私钥签名的,那么您将签发证书,而不是自签名证书。否则,您需要一个所谓的证书颁发机构的私钥进行签名。