【发布时间】:2021-12-09 06:44:15
【问题描述】:
我正在使用 .Net Core 3.1 编写一个小的 c#“worker-service”。我需要访问提供 SSL 证书但操作系统不信任的 HP 打印机(专业绘图仪)上的 API。所以我总是收到错误
The SSL connection could not be established, see inner exception.
内部异常在哪里:
Authentication failed, see inner exception.
最后一个内部异常是:
The token passed to the function is invalid.
到目前为止,我的代码如下所示:
try
{
using (var httpClientHandler = new HttpClientHandler())
{
httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, sslPolicyErrors) => true;
using (var httpClient = new HttpClient(httpClientHandler))
{
var httpResponse = httpClient.GetAsync("http://" + protocolRelativeUrl).Result;
}
}
} catch (Exception e)
{
logger.LogError(e.Message);
}
我已经偶然发现了这些帖子:
但是没有任何运气.. 我认为问题可能是证书似乎有效,但我的操作系统不信任:
另一件事是,当我调试我的代码时 - 我从不进入回调 ServerCertificateCustomValidationCallback..当然它不工作 :-/ 但我怎样才能让它工作以再次实际获取数据并绕过这个证书检查?
更新
base64的证书内容是这样的:
-----BEGIN CERTIFICATE-----
MIICTDCCAbWgAwIBAgIE4yPFYjANBgkqhkiG9w0BAQQFADBZMR4wHAYDVQQDDBVI
UCBEZXNpZ25qZXQgRDQ5RUUyNkIxDzANBgNVBAoMBkhQIENvLjEVMBMGA1UECwwM
OENEQ0Q0OUVFMjZCMQ8wDQYDVQQLDAZGMkw0NkEwHhcNMjEwNzE5MDAwMDAwWhcN
MjYwNzE5MDAwMDAwWjBZMR4wHAYDVQQDDBVIUCBEZXNpZ25qZXQgRDQ5RUUyNkIx
DzANBgNVBAoMBkhQIENvLjEVMBMGA1UECwwMOENEQ0Q0OUVFMjZCMQ8wDQYDVQQL
DAZGMkw0NkEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALGW0b2wl9PDiMx2
6iQ2+iqUmqbCCoJczEjf7asjmGunIZpcddMkffYUhxTyVp0Hiap3zhsvTu1yBxW0
0y1gojE6Cw5/UTAdJVQ9f7DfcCEfKEeGKX/v8k8L/vM8cXLbnAAt177erGMUHl4n
2Zsvu0vB3RuAkkDj99RkRPSBHcexAgMBAAGjITAfMB0GA1UdJQQWMBQGCCsGAQUF
BwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQQFAAOBgQCl5cBAkpW2YK1uN7Xg5MEi
wHtusKsmmCM4I46timFwti4rcKQzJC/lqM7w1z0k4sB7VIgn73Q4uymAEgyqokC5
ID2Yqw5T/O4Tt/PSxn9mnEdV/NTNH2c19XRv1I+YWhiKRgcEOF7gHNiYQdoHSaM5
ZKOUR8nYhLZCg2y+BJuzaw==
-----END CERTIFICATE-----
【问题讨论】:
-
This answer 建议可能是因为 “链上的证书是使用不受支持或禁用的算法签名的。” - 证书上的算法是什么?更好的是,也许您可以单击“详细信息”选项卡上的“复制到文件”,将其导出为 base64 文件,然后将其包含在您的问题中?
-
@Llama 我已将证书更新为 base 64 的问题????
-
@Llama uhm,我怎样才能正确检测到此证书使用的算法..?
-
老实说,我不确定这是否是问题所在。我尝试使用
X509Certificate类直接读取您的证书,这本身就可以,但我不确定如何在 HTTP 请求的上下文中读取证书。我有点希望有证书的其他人有答案。