C++ openssl:编辑密码套件
C++ openssl: editing ciphersuites
我有一个使用 openssl 库的非常基本的 C++ 应用程序。
应用程序向服务器发送请求并且密码套件列表必须是下一个:
4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53
(可以在这里找到密码套件的代码:https://docs.microsoft.com/en-us/dotnet/api/system.net.security.tlsciphersuite?view=net-5.0)
但是当我在应用程序中手动设置密码套件时,它看起来是这样的:
4865-4866-4867-49195-49199-52393-49196-49200-159-52393-52392-52394-49195-49199-158-49188-49192-107-49187-49191- 103-49162-49172-57-49161-49171-51-157-156-61-60-53-47-255
我正在尝试以这种方式设置密码套件:
SSL_set_ciphersuites(ssl, "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256");
所以问题是:如何从密码组列表中删除确切的密码组?
正在尝试使用!和 - 如此处所述 (https://www.openssl.org/docs/man1.1.1/man1/ciphers.html)
SSL_set_ciphersuites(ssl, "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:-TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256");
但运气不好。
更新:
在 SSL_set_ciphersuites 之前使用 SSL_set_cipher_list 帮助了我。但是现在我有另一个问题:
当我使用下一个列表时:TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256:TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:TLS_RSA_WITH_AES_128_GCM_SHA256:TLS_RSA_WITH_AES_256_GCM_SHA384:TLS_RSA_WITH_AES_128_CBC_SHA:TLS_RSA_WITH_AES_256_CBC_SHA
我得到 4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53-255
但是我无法理解 255 到底从哪里来?它不应该出现。
- 根据 man3 SSL_set_ciphersuites,您列表中的密码套装 TLS_ECDHE_* 对该函数无效。
Valid TLSv1.3 ciphersuite names are:
TLS_AES_128_GCM_SHA256
TLS_AES_256_GCM_SHA384
TLS_CHACHA20_POLY1305_SHA256
TLS_AES_128_CCM_SHA256
TLS_AES_128_CCM_8_SHA256
- 您确定要连接的服务器使用 TLSv1.3 而不是 TLSv1.2,并且您还应该使用 SSL_set_cipher_list() 和 SSL_set_ciphersuites()。
我有一个使用 openssl 库的非常基本的 C++ 应用程序。 应用程序向服务器发送请求并且密码套件列表必须是下一个:
4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53
(可以在这里找到密码套件的代码:https://docs.microsoft.com/en-us/dotnet/api/system.net.security.tlsciphersuite?view=net-5.0)
但是当我在应用程序中手动设置密码套件时,它看起来是这样的:
4865-4866-4867-49195-49199-52393-49196-49200-159-52393-52392-52394-49195-49199-158-49188-49192-107-49187-49191- 103-49162-49172-57-49161-49171-51-157-156-61-60-53-47-255
我正在尝试以这种方式设置密码套件:
SSL_set_ciphersuites(ssl, "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256");
所以问题是:如何从密码组列表中删除确切的密码组?
正在尝试使用!和 - 如此处所述 (https://www.openssl.org/docs/man1.1.1/man1/ciphers.html)
SSL_set_ciphersuites(ssl, "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:-TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256");
但运气不好。
更新:
在 SSL_set_ciphersuites 之前使用 SSL_set_cipher_list 帮助了我。但是现在我有另一个问题: 当我使用下一个列表时:TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256:TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:TLS_RSA_WITH_AES_128_GCM_SHA256:TLS_RSA_WITH_AES_256_GCM_SHA384:TLS_RSA_WITH_AES_128_CBC_SHA:TLS_RSA_WITH_AES_256_CBC_SHA
我得到 4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53-255 但是我无法理解 255 到底从哪里来?它不应该出现。
- 根据 man3 SSL_set_ciphersuites,您列表中的密码套装 TLS_ECDHE_* 对该函数无效。
Valid TLSv1.3 ciphersuite names are:
TLS_AES_128_GCM_SHA256 TLS_AES_256_GCM_SHA384 TLS_CHACHA20_POLY1305_SHA256 TLS_AES_128_CCM_SHA256 TLS_AES_128_CCM_8_SHA256
- 您确定要连接的服务器使用 TLSv1.3 而不是 TLSv1.2,并且您还应该使用 SSL_set_cipher_list() 和 SSL_set_ciphersuites()。