SAP Hana 服务层:无法为 SSL/TLS 安全通道建立信任关系
SAP Hana Service Layer : Could not establish trust relationship for the SSL/TLS secure channel
我正在尝试通过我的代码调用 SAP Hana 服务层,但我遇到了以下错误:所以任何人都可以帮助我解决这个问题。
错误 1:AuthenticationException:根据验证程序,远程证书无效。
错误 2: WebException:底层连接已关闭:无法为 SSL/TLS 安全通道建立信任关系。
错误 3:HttpRequestException:发送请求时发生错误。
有关应用程序的更多详细信息 - 我已经在 .net 中创建了控制台应用程序并在服务器上执行 [Hana Server 是本地访问的,因为两个服务器都在LAN] Linux & Windows 服务器。
还有一件事 - 我的客户不打算为 SAP Hana 服务层购买域名和 SSL 证书,因为它会被我的应用程序内部使用。
问题是,当我通过 Postman 测试登录服务时,它工作正常,我也得到了会话详细信息,但同样的 url 无法通过我的代码工作,所以我还需要什么吗访问服务要做什么?
URL - 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;
}
}
您需要将此代码放在 postAsync
之前
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
这避免了证书的验证。
如果未来的 google 员工在将请求发送到登录端点后收到 500 错误响应,请禁用 ExpectContinue。
client.DefaultRequestHeaders.ExpectContinue = false;
如果您使用的是自签名证书,则必须先接受它们。这可以通过浏览器将其添加到 windows 证书中来完成!
如果要进行跨域调用,则需要更改 b1s.config
vim /usr/sap/SAPBusinessOne/ServiceLayer/conf/b1s.conf
(...)
"CorsEnable": true,
"CorsAllowedOrigins": "*"}
请注意在生产模式中使用 * <-<<<--
我正在尝试通过我的代码调用 SAP Hana 服务层,但我遇到了以下错误:所以任何人都可以帮助我解决这个问题。
错误 1:AuthenticationException:根据验证程序,远程证书无效。
错误 2: WebException:底层连接已关闭:无法为 SSL/TLS 安全通道建立信任关系。
错误 3:HttpRequestException:发送请求时发生错误。
有关应用程序的更多详细信息 - 我已经在 .net 中创建了控制台应用程序并在服务器上执行 [Hana Server 是本地访问的,因为两个服务器都在LAN] Linux & Windows 服务器。
还有一件事 - 我的客户不打算为 SAP Hana 服务层购买域名和 SSL 证书,因为它会被我的应用程序内部使用。
问题是,当我通过 Postman 测试登录服务时,它工作正常,我也得到了会话详细信息,但同样的 url 无法通过我的代码工作,所以我还需要什么吗访问服务要做什么?
URL - 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;
}
}
您需要将此代码放在 postAsync
之前 ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
这避免了证书的验证。
如果未来的 google 员工在将请求发送到登录端点后收到 500 错误响应,请禁用 ExpectContinue。
client.DefaultRequestHeaders.ExpectContinue = false;
如果您使用的是自签名证书,则必须先接受它们。这可以通过浏览器将其添加到 windows 证书中来完成! 如果要进行跨域调用,则需要更改 b1s.config
vim /usr/sap/SAPBusinessOne/ServiceLayer/conf/b1s.conf
(...)
"CorsEnable": true,
"CorsAllowedOrigins": "*"}
请注意在生产模式中使用 * <-<<<--