从 Ubuntu 中的其他 C# 服务访问自签名 HTTPS C# 服务
Access a Self signed HTTPS C# service from other C# service in Ubuntu
我 运行 我本地 testing.I 的自签名 (HTTPS) C# Web 服务器无法从 运行 进入的其他 c# 应用程序访问此 C# application-1同一台电脑。其他应用程序显示错误
System.Net.Http.HttpRequestException:
System.Net.Http.CurlException: Peer certificate cannot be authenticated with given CA certificates
我的证书不是由 CA 签名的。但是我 运行 我的应用程序只在我的系统中。我还使用以下命令将我的证书添加到受信任的 CA 根存储
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n "localhost" -i localhost.crt
但仍然从第二个 c# application.My 系统得到同样的错误 OS is ubuntu 16.04
你需要 3 个 cert/private_key
1_root
2_intermediate
3_application
你的APP的3_application(不要忘记为主机和IP生成正确的cname/alias)
以及 public root 和 intermediate(CA) 的部分 add/installed 在 运行 第二个 APP
的系统上
这个脚本应该有帮助
https://github.com/nicholasjackson/mtls-go-example/blob/master/generate.sh
HttpHandler 有一个 ServerCertificateCustomValidationCallback,您可以覆盖它以执行自定义证书验证。
private HttpClient CustomHttpClient()
{
return new HttpClient(
new HttpClientHandler
{
ServerCertificateCustomValidationCallback = cert_validation,
});
}
private bool cert_validation(HttpRequestMessage reqMsg, X509Certificate2 cert, X509Chain certChain, SslPolicyErrors policyErrors)
{
//custom validation
return true;
}
我 运行 我本地 testing.I 的自签名 (HTTPS) C# Web 服务器无法从 运行 进入的其他 c# 应用程序访问此 C# application-1同一台电脑。其他应用程序显示错误
System.Net.Http.HttpRequestException:
System.Net.Http.CurlException: Peer certificate cannot be authenticated with given CA certificates
我的证书不是由 CA 签名的。但是我 运行 我的应用程序只在我的系统中。我还使用以下命令将我的证书添加到受信任的 CA 根存储
certutil -d sql:$HOME/.pki/nssdb -A -t "P,," -n "localhost" -i localhost.crt
但仍然从第二个 c# application.My 系统得到同样的错误 OS is ubuntu 16.04
你需要 3 个 cert/private_key 1_root 2_intermediate 3_application
你的APP的3_application(不要忘记为主机和IP生成正确的cname/alias)
以及 public root 和 intermediate(CA) 的部分 add/installed 在 运行 第二个 APP
的系统上这个脚本应该有帮助 https://github.com/nicholasjackson/mtls-go-example/blob/master/generate.sh
HttpHandler 有一个 ServerCertificateCustomValidationCallback,您可以覆盖它以执行自定义证书验证。
private HttpClient CustomHttpClient()
{
return new HttpClient(
new HttpClientHandler
{
ServerCertificateCustomValidationCallback = cert_validation,
});
}
private bool cert_validation(HttpRequestMessage reqMsg, X509Certificate2 cert, X509Chain certChain, SslPolicyErrors policyErrors)
{
//custom validation
return true;
}