1
我需要在rest API客户端中使用Https相互认证,因为我们只能获取URI,因此我们无法像WCF那样添加客户端证书。 在我的网页所以我增加了按键的.config如下:web.config中剩余的API客户端配置C#
<appSettings>
<add key="URI" value="https://localhost:8080/RestfulAPI/RestfulService.svc/restfulData" />
<add key="CertificateValue" value="certficatename"/>
<add key="CertificateLocation" value="LocalMachine"/>
<add key="CertificateStoreName" value="My"/>
<add key="CertificateFindType" value="FindBySubjectName"/>
</appSettings>
,我在我的客户端代码如下使用它:
X509Store store = new X509Store(ConfigurationManager.AppSettings["CertificateStoreName"], ConfigurationManager.AppSettings["CertificateLocation"]);
store.Open(OpenFlags.ReadOnly);
X509CertificateCollection certificates = store.Certificates.Find(ConfigurationManager.AppSettings["CertificateFindType"], ConfigurationManager.AppSettings["CertificateValue"], true);
X509Certificate certificate = certificates[0];
HttpWebRequest request = WebRequest.Create(requestUrl) as HttpWebRequest;
request.ClientCertificates.Add(certificate);
HttpWebResponse response = request.GetResponse() as HttpWebResponse
这是为了实现相互认证的正确方法REST API客户端?
或者如果没有人可以请帮助我正确的做法?
嘿,谢谢@AlinG我还需要使证书的详细信息可配置,除了上面提到的那篇文章之外,还有其他的方式吗? – Techie
app.config和查询cert store是一种方式,因为这是一个客户端应用程序,您可能还想添加对从文件加载证书的支持;为此,您可以使用[X509Certificate2 Ctor](https://msdn.microsoft.com/en-us/library/ms148420(v = vs.110).aspx),并可以选择允许它们提供密码以访问证书(这种方式用户不需要安装证书)。 – AlinG