OpenSSL1.1.1 TLS1.3 PSK使用TLS_AES_256_GCM_SHA384报无合适签名算法错误
问题根因
- OpenSSL 1.1.1l版本的TLS 1.3握手逻辑中,即使使用
-nocert的纯PSK模式,也会校验密码套件对应的哈希算法是否存在于允许的签名算法列表中。 - TLS_AES_128_GCM_SHA256对应的SHA256算法默认在签名算法允许列表中,因此可以正常建立连接。
- TLS_AES_256_GCM_SHA384对应的SHA384算法不在默认签名算法允许列表中,因此服务端握手时会抛出
no suitable signature algorithm错误。
解决方案
在服务端和客户端的命令中都显式添加-sigalgs参数,指定允许使用SHA384的签名算法即可。
测试用修改后命令
服务端
openssl s_server -nocert -psk 63ef2024b1de6417f856fab7005d38f6df70b6c5e97c220060e2ea122c4fdd054555827ab229457c366b2dd4817ff38b -tls1_3 -ciphersuites TLS_AES_256_GCM_SHA384 -sigalgs "rsa_pss_rsae_sha384:ecdsa_secp384r1_sha384:rsa_pkcs1_sha384"
客户端
openssl s_client -psk 63ef2024b1de6417f856fab7005d38f6df70b6c5e97c220060e2ea122c4fdd054555827ab229457c366b2dd4817ff38b -tls1_3 -ciphersuites TLS_AES_256_GCM_SHA384 -sigalgs "rsa_pss_rsae_sha384:ecdsa_secp384r1_sha384:rsa_pkcs1_sha384"
如果仅做本地测试,也可以直接使用-sigalgs ALL参数简化配置,该配置不建议用于生产环境。
内容的提问来源于stack exchange,提问作者anotherdeveloper
相关产品推荐
相关产品推荐

