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

C# 在C中使用SSL证书使用Rest服务#,c#,rest,ssl,certificate,httprequest,C#,Rest,Ssl,Certificate,Httprequest,我试图使用rest服务来读取C#中的活动MQ消息。该服务具有不带密码的SSL证书。当我在浏览器(chrome、restlet客户端)中使用服务url时,我可以成功地得到响应,但在postman中则没有。在访问url之前,我已将证书添加到Chrome 这是一个HTTPS服务 我必须使用SSL证书和http请求调用服务。我尝试过WebRequestHandler、HttpWebRequest和HttpClient,但没有成功 当我这样做时,我收到了以下错误 基础连接已关闭:无法建立信任 SSL/TL

我试图使用rest服务来读取C#中的活动MQ消息。该服务具有不带密码的SSL证书。当我在浏览器(chrome、restlet客户端)中使用服务url时,我可以成功地得到响应,但在postman中则没有。在访问url之前,我已将证书添加到Chrome

这是一个HTTPS服务

我必须使用SSL证书和http请求调用服务。我尝试过WebRequestHandler、HttpWebRequest和HttpClient,但没有成功

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

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

这会抑制异常,但我得到

远程证书匹配

回调错误(发件人、证书、链、错误)

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

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


非常感谢您的帮助。谢谢大家!

所以我们回到给我们证书的团队,证书有问题!我们得到了一个带有密码的证书,它现在是一个pfx文件。我们现在直接访问队列,在请求中附加证书。这似乎解决了进入队列并访问其中消息的问题。我们现在唯一的问题是消息没有排队,但我想这是AMQ团队最头疼的问题。如果任何人需要代码来直接使用NMS api访问AMQ,请向我发送消息。我可以寄样品。谢谢大家的帮助。真的很感激

所以我们回到给我们证书的团队,证书有问题!我们得到了一个带有密码的证书,它现在是一个pfx文件。我们现在直接访问队列,在请求中附加证书。这似乎解决了进入队列并访问其中消息的问题。我们现在唯一的问题是消息没有排队,但我想这是AMQ团队最头疼的问题。如果任何人需要代码来直接使用NMS api访问AMQ,请向我发送消息。我可以寄样品。谢谢大家的帮助。真的很感激

证书是否具有正确的公钥?。你能通过你使用的证书的指纹验证你的目标吗?是的,我在代码中使用的证书和我在chrome上安装的证书是相同的。指纹匹配。您是否为rest服务使用本地开发证书证书证书是由公开rest服务的人员提供给我们的。不确定丢失了什么。如果这是一个自签名证书,不要麻烦验证。在证书验证回调中设置true证书是否具有正确的公钥?。你能通过你使用的证书的指纹验证你的目标吗?是的,我在代码中使用的证书和我在chrome上安装的证书是相同的。指纹匹配。您是否为rest服务使用本地开发证书证书证书是由公开rest服务的人员提供给我们的。不确定丢失了什么。如果这是一个自签名证书,不要麻烦验证。在证书验证回调函数中设置true,表示您已解决了证书问题。您可以在此处共享代码片段,也可以通过git gists或GitHub存储库共享代码片段。很高兴您解决了证书问题。您可以在此处共享代码片段,也可以通过git gists或GitHub存储库共享代码片段。
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
}