在C#中使用SSL证书使用Rest服务

时间:2017-06-07 03:59:08

标签: c# rest ssl certificate httprequest

我正在尝试使用休息服务来读取C#中的Active MQ消息。该服务具有SSL证书,没有密码。当我在浏览器中使用服务URL(chrome,restlet客户端)时,我可以成功获得响应,但不能在postman中使用。我在访问网址之前已将证书添加到Chrome。

这是一项HTTPS服务。

我必须使用SSL证书和我的http请求来调用该服务。我试过没有运气的WebRequestHandler,HttpWebRequest,HttpClient。

当我这样做时,我收到以下错误。

  

基础连接已关闭:无法建立信任   SSL / TLS安全通道的关系。

string url =  System.Configuration.ConfigurationManager.AppSettings["ActiveMQDev"].ToString();
string certFileName = System.Configuration.ConfigurationManager.AppSettings["SSLCertPath"].ToString();

// create HTTP web request with proper content type
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.ContentType = "application/json;charset=UTF8";
X509Certificate2 cert = new X509Certificate2(certFileName);
request.ClientCertificates.Add(cert);
request.PreAuthenticate = true;
WebResponse response;


using (new ServerCertificateValidationScope(request, delegate { return true; }))
{
    // call the web service and get response
    response = request.GetResponse();   
}

if (response != null)
{
    //handle the response
}

这会抑制异常,但我得到了

  

RemoteCertificateNameMismatch

回调中的

错误(发件人,证书,链,错误)。

当我没有调用来抑制SSL错误时,我得到了一个

  

来自服务器的401未经授权的响应。

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

所以我们回到给我们证书的团队,这是错误的!我们现在有一个带密码的证书和一个pfx文件。我们正在直接访问队列,现在在请求中附加证书。这似乎解决了进入队列并访问其中的消息的问题。我们现在唯一的问题是消息没有出列,但我猜这是AMQ团队的头疼。如果有人要求代码使用NMS api直接访问AMQ,请给我发消息。我可以寄样品。感谢你的帮助。真的很感激。