gpt4 book ai didi

c++ - openssl api禁用身份验证

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:28 24 4
gpt4 key购买 nike

有一个使用 openssl 的简单服务器和客户端。应用程序是用C++编写的,使用我自己构建的openssl-1.1.0g源代码。我提供客户端和服务器证书以及私钥的简单情况运行良好。握手很好,数据传输也很好。现在我还有两个要求:

  1. 需要在服务器上禁用客户端身份验证。客户端将拥有 CA 证书但没有私钥。客户端将进行服务器身份验证。

    不知道如何告诉 openssl api 不要要求客户端证书

    [更新] 这是固定的。在 conf 文件中,在客户端部分下尝试使用关键字 VerifyCAFile 作为 CA 证书并删除了私钥。在没有任何代码更改的情况下握手成功。

  2. 禁用客户端和服务器身份验证。双方都没有证书或私钥。

    尝试使用 conf 文件中未指定证书或 key 的匿名部分。还要在 conf 文件的这一部分中将密码字符串设置为 aNULL。 aNULL 是根据此处页面的所有匿名密码的列表:

    https://www.openssl.org/docs/man1.1.0/apps/ciphers.html

    但这行不通。

这是设置-

服务器:

SSL_CTX_new(TLS_server_method())       - create server ctx
CONF_modules_load_file - load conf file
SSL_CTX_config - get section for server
BIO_new_socket((int)socket, BIO_CLOSE) - create socket BIO
SSL_new(ctx) - create ssl
SSL_set_bio - set bio in ssl
SSL_set_accept_state(_ssl); - set accept for server
SSL_do_handshake - do handshake

客户:

SSL_CTX_new(TLS_client_method())       - create server ctx
CONF_modules_load_file - load conf file
SSL_CTX_config - get section for client
BIO_new_socket((int)socket, BIO_CLOSE) - create socket BIO
SSL_new(ctx) - create ssl
SSL_set_bio - set bio in ssl
SSL_set_connect_state(ssl) - set connect for client
SSL_do_handshake - do handshake

配置文件:

testApp = test_sect

[test_sect]
# list of configuration modules

ssl_conf = ssl_sect

[ssl_sect]

server = server_section
client = client_section
anon = anon_section

[server_section]
CipherString = DEFAULT
Certificate = <path to server.cer>
PrivateKey = <path to server.key>

[client_section]
CipherString = DEFAULT
Certificate = <path to client.cer>
PrivateKey = <path to client.key>

[anon_section]
CipherString = aNULL

最佳答案

在服务器上,你想要这样的东西:

SSL_set_verify(ssl, SSL_VERIFY_NONE, NULL);

不过,我认为这是默认设置。

关于c++ - openssl api禁用身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49307757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com