我正在尝试使用自签名证书通过SSL建立服务器客户端通信。在服务器端,我在创建证书时添加了CN =。我的客户端使用libCurl进行通信,CURLOPT_SSL_VERIFYPEER设置为1,CURLOPT_SSL_VERIFYHOST设置为2。
当客户端尝试使用URL中的服务器FQDN发送请求时,它可以正常工作。但如果客户端使用IP地址,我收到错误消息 'SSL:证书使用者名称''与目标主机名不匹配'''我知道问题是'在网址中使用的主机名应与证书中提供的主题名称相匹配。
但这个问题的解决方案是什么?客户端应该能够使用IP地址/短主机名/ FQDN进行连接。我尝试在证书中添加多个CN条目(用于FQDN和IP),但它不起作用。
答案 0 :(得分:5)
使用URL中的真实主机名进行libcurl,以便主机名验证有效。
如果您想指向另一个主机,而不是该名称通常会解析的主机,请使用CURLOPT_RESOLVE强制libcurl使用您的本地/临时IP。
请参阅resolve.c示例,了解如何完成。
如果要在证书中添加多个名称,请使用SubjectAltName而不是CN。