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

标签 c++ ssl openssl

有一个使用 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/

相关文章:

c# - Azure 函数无法建立 SSL 连接

Facebook 更新: How to provide an SSL certificate

c - 如何在网络内核扩展中使用OpenSSL?

java - 安卓 KeyPairGenerator + php openssl_public_encrypt

c++ - 没有 SSLManager 的 Poco SecureServerSocket

c++ - 尝试为图像缓冲区分配内存时错误的 ptr 值

ssl - 如何查找特定版本的 nginx 的文档?

ssl - nginx 代理传递给 sslv3 上游

c++ - 如何在没有 list 的情况下启用视觉样式

c++ - 如何在不将所有相关代码带到 header 的情况下解决模板成员函数的 undefined reference ?