ssl TLS 1.2 -提供给函数的令牌无效

vfhzx4xs  于 5个月前  发布在  其他
关注(0)|答案(2)|浏览(84)

我有一个奇怪的问题,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

字符串
只有当客户端需要Tls 12时才会发生:

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


代码适用于Ssl 3、Tls 11和Tls。
服务器证书是自签名的,并且是“旧”的。它使用md5 RSA签名和1024位,最初我认为这就是问题所在,因为重新生成证书会使异常消失(我厌倦了SHA1和SHA 512-都可以)。
然而,令我惊讶的是,FileZilla客户端能够使用这个 * 旧的'md5 RSA签名的证书和使用TLS 1.2**连接到这个服务器:
x1c 0d1x的数据
这是证书:

-----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客户端能够连接?
1.使用TLS 1.2时是否有任何.NET/Windows 10/CryptoAPI证书限制?
1.如果有限制,为什么FileZilla没有强制执行?
1.为什么如此神秘的错误消息:“提供给函数的令牌无效”?

hsgswve4

hsgswve41#

我终于弄明白了这一点。“提供给函数的令牌是无效的”在这种情况下意味着“链上的证书是用不受支持或禁用的算法签名的”。
实际上,这几乎总是意味着禁用。启用的算法列表可以在HKEY_LOCAL_MACHINESYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010003Functions中找到。这是一个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,您的密钥将开始工作,但它不能被强调不够,这是一个 * 坏 * 的想法,并将打开您的系统接受伪造的证书,因为MD5已被打破。
Filezilla正在工作,因为Mozilla不信任主机密码套件。

t0ybt7op

t0ybt7op2#

把curl升级到最新版本8.4.0解决了我的问题。下面是how
作为一个侧记,你可能也想尽快升级curl到8.4.0,因为这一点(在上面的链接中提到):
2023年10月3日,curl团队预先宣布了一个高严重性漏洞的未决修复程序,该漏洞会影响libcurl和curl。

相关问题