繁体   English   中英

将带有密码短语的证书X509添加到Web服务请求

[英]Add Certificate X509 with passphrase key to Webservice request

将新的SSL证书添加到我的webService请求时遇到问题。

                var client = new RestClient(tokenUrl);
                string certif = String.Format("{0}/client.cer", CertifPath);
                string key = String.Format("{0}/client.key", CertifPath);

                if (File.Exists(certif) && File.Exists(key))
                {

                    X509Certificate2 cert = new X509Certificate2(certif, key); 
                    X509CertificateCollection collection1 = new X509CertificateCollection();
                    collection1.Add(cert);
                    client.ClientCertificates = collection1; 
                }

我得到答复:没有向nginx发送任何400必需的ssl证书!!!!。

另外:当我使用PostMan或SoapUI时,我必须添加第三个秘密密钥(密码)才能获得响应。 例如:通过邮递员添加证书

我的问题是如何在我的请求C#中添加第三个参数(秘密密钥)?

还有另一种对我的请求实施证书的方法?

您能使用那整洁的一小段代码让我们做到这一点吗:

byte[] certBuffer = Helpers.GetBytesFromPEM(publicCert, PemStringType.Certificate);
byte[] keyBuffer  = Helpers.GetBytesFromPEM(privateKey, PemStringType.RsaPrivateKey);

X509Certificate2 certificate = new X509Certificate2(certBuffer, password);

RSACryptoServiceProvider prov = Crypto.DecodeRsaPrivateKey(keyBuffer);
certificate.PrivateKey = prov;

解决方案:

我浪费了很多时间来搜索如何在一个Rest调用中包括三个信息(Certificat.cer,certif.key和密码)。 解决方案很简单:

  1. 证书对象非常灵活:我可以使用OpenSSL将这三个信息封装在一个称为(.pfx)的证书中。
  2. 您可以通过以下网址安装OpenSSL: http//slproweb.com/download/Win64OpenSSL_Light-1_1_0g.exe
  3. 执行此命令后: openssl pkcs12 -export -out certificate.pfx -inkey client.key -in client.cer。
  4. 生成一个新文件:certificate.pfx。
  5. 因此,现在我可以轻松地包含新证书了,而不会出现任何错误:)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM