![Powershell 无法创建 ssl/tls 安全通道,未使用操作系统支持的密码](https://linux22.com/image/782956/Powershell%20%E6%97%A0%E6%B3%95%E5%88%9B%E5%BB%BA%20ssl%2Ftls%20%E5%AE%89%E5%85%A8%E9%80%9A%E9%81%93%EF%BC%8C%E6%9C%AA%E4%BD%BF%E7%94%A8%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E6%94%AF%E6%8C%81%E7%9A%84%E5%AF%86%E7%A0%81.png)
我正在尝试使用 powershell 从 Windows server 2012 R2 服务器连接到 dns 服务 desec.io,但连接失败,错误为请求被中止,无法创建 ssl/tls 安全通道。我使用 wireshark 检查 hello 数据包,以确保正在使用 TLS 1.2 连接,并查看发送的密码列表。我的服务器在尝试连接时发送此密码列表:
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)
Cipher Suite: TLS_RSA_WITH_AES_256_GCM_SHA384 (0x009d)
Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c)
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256 (0x003d)
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c)
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)
我使用 ssllabs 检查了该网站并确定了它要使用的密码。这是该网站将接受的密码列表:
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x9e) DH 2048 bits FS 128
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f) ECDH secp521r1 (eq. 15360 bits RSA) FS 128
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (0x9f) DH 2048 bits FS 256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030) ECDH secp521r1 (eq. 15360 bits RSA) FS 256
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca8) ECDH secp521r1 (eq. 15360 bits RSA) FS 256
查看上述密码列表,很明显连接失败的原因是因为客户端/服务器之间没有匹配的密码。我的问题是,根据此 Microsoft 页面:https://learn.microsoft.com/en-us/windows/win32/secauthn/tls-cipher-suites-in-windows-8-1 Windows Server 2012 R2 支持 TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 和 TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 密码,默认情况下应启用。我甚至使用 IISCrypto 工具来验证这些密码是否已列出并设置为启用。那么为什么 powershell 不会发送这些密码?仅供参考:我认为 powershell 本身与此无关,因为如果我尝试从 Internet Explorer 访问此网站,我会收到类似的错误和连接失败。