gpt4 book ai didi

.net - TLS 1.2 - 提供给函数的 token 无效

转载 作者:太空宇宙 更新时间:2023-11-03 13:11:43 25 4
gpt4 key购买 nike

我有这个奇怪的问题,SslStream.AuthenticateAsClient() 抛出以下异常:

System.Security.Authentication.AuthenticationException : A call to SSPI failed, see inner exception.
----> System.ComponentModel.Win32Exception : The token supplied to the function is invalid

它仅在客户端需要 Tls12 时发生:

SslStream.AuthenticateAsClient(..., ..., SslProtocols.Tls12);

代码适用于 Ssl3、Tls11 和 Tls。

服务器证书是自签名的“旧”证书。它使用 md5RSA 签名和 1024 位,最初我认为这是问题所在,因为重新生成证书会使异常消失(我厌倦了 SHA1 和 SHA512 - 都可以)。

然而,令我惊讶的是,FileZilla 客户端能够使用这个“旧”md5RSA 签名 证书并使用 TLS 1.2 连接到此服务器:

TLS 1.2 with old cert

这是证书:

-----BEGIN CERTIFICATE-----
MIICejCCAeOgAwIBAgIQzbvZdHHAV49D7R8OE2mEaDANBgkqhkiG9w0BAQQFADBA
MSswKQYJKoZIhvcNAQkBFhxlbWFpbEBpbi10aGUtY2VydGlmaWNhdGUuY29tMREw
DwYDVQQDEwhKb2huIERvZTAeFw0xMTAxMjAyMDAzNDFaFw0zOTEyMzEyMzU5NTla
MEAxKzApBgkqhkiG9w0BCQEWHGVtYWlsQGluLXRoZS1jZXJ0aWZpY2F0ZS5jb20x
ETAPBgNVBAMTCEpvaG4gRG9lMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC0
s5RAKYdw2AYk3t0oH5jDo6RQRRfabkOLfKvR8kOiYbqjtgblx7JhSZJHX/r6KLoc
hGgYkQPOSKnl8TdgEkzPxWHECV/iMdOxTsTv2P//ZM2INjb4H8JjDS16PYFwHP3w
/9RU6PjppK+mPdWP1pezBzebSM0QQwpmXlSmfe2ULQIDAQABo3UwczBxBgNVHQEE
ajBogBA4WNgTvhkmRD8DhHeRvAJcoUIwQDErMCkGCSqGSIb3DQEJARYcZW1haWxA
aW4tdGhlLWNlcnRpZmljYXRlLmNvbTERMA8GA1UEAxMISm9obiBEb2WCEM272XRx
wFePQ+0fDhNphGgwDQYJKoZIhvcNAQEEBQADgYEAFX6MM/E97hC6t1TAFBmM3tWr
fQ2cB0LFCe6J0I8phKQecpSYCkMdvaHdsT+sdzXNW4bgL064r731r8l/47VgfgIR
oRmsQYnwJ55nqZpEW2zL3vioedWiCVto8X9/dVC8jqPpcmMP5NWBHh88o7nkPBxe
C8iucrQvHnjYwaz1o/M=
-----END CERTIFICATE-----

我的问题是:

  1. 为什么 SslStream.AuthenticateAsClient 抛出异常,而 Filezilla 客户端能够连接?

  2. 使用 TLS 1.2 时是否有任何 .NET/Windows 10/CryptoAPI 证书限制?

  3. 如果有限制,为什么 FileZilla 不强制执行?

  4. 为什么如此神秘的错误消息:“提供给函数的 token 无效”?

最佳答案

我终于明白了。 “提供给函数的 token 无效”在这种情况下意味着“链上的证书使用不受支持或禁用的算法签名。”

事实证明,这几乎总是意味着禁用。已启用的算法列表可在 HKEY_LOCAL_MACHINE SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010003 Functions 中找到。这是一个 REG_MULTI_SZ,每个受支持的算法都有一个字符串。

我在我的 Windows 10 机器上找到了这些值:

RSA/SHA256
RSA/SHA384
RSA/SHA1
ECDSA/SHA256
ECDSA/SHA384
ECDSA/SHA1
DSA/SHA1

我加了

RSA/SHA512
ECDSA/SHA512

如果您添加了 RSA/MD5,您的 key 将开始工作,但是怎么强调都不为过,这是一个的想法,并且会打开您的系统以接受伪造的证书,因为MD5 已被破解。

Filezilla 正在运行,因为 Mozilla 不信任主机密码套件。

关于.net - TLS 1.2 - 提供给函数的 token 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40939031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com