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

问题描述 投票:1回答:1

我有这个奇怪的问题,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位,innitially我认为这是问题,因为重新生成证书,使异常消失(我累了都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. 是否有任何.NET / Windows的10 / CryptoAPI证书限制使用TLS 1.2什么时候?
  3. 如果有限制,为什么FileZilla是不执行呢?
  4. 为什么这么神秘的错误信息:“提供给函数的令牌无效”?
.net ssl cryptography tls1.2 cryptoapi
1个回答
1
投票

我终于想通了这一点。 “提供给函数的令牌无效”在此上下文中是指“在链证书与不支持的或禁用的算法进行签名”。

事实证明,在实践中,这几乎总是意味着禁用。启用算法列表中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但是它不能强调不够,这是一个坏主意,并会打开你的系统是接受伪造的证书,因为MD5已被打破您的密钥将开始工作。

FileZilla是工作,因为Mozilla的不信任主机的加密套件。

© www.soinside.com 2019 - 2024. All rights reserved.