OpenSSL IP地址和不区分大小写的主机名验证

时间:2017-01-20 01:26:25

标签: c++ ssl openssl ssl-certificate activemq

我试图在ActiveMQ和C ++客户端之间进行SSL通信。我已使用以下命令成功生成了服务器证书:

keytool -genkeypair -alias ActiveMQ -keyalg RSA -keysize 2048 -sigalg SHA256withRSA
    -validity 4383 -keystore ActiveMQ.ks -storepass <PASSWORD> -keypass <PASSWORD>
    -dname "CN=ActiveMQ,O=My Company,OU=My OU,L=My City,ST=My State,C=US"
    -ext SAN=DNS:localhost,IP:127.0.0.1

然后将其导出为PEM格式:

keytool -exportcert -alias ActiveMQ -keystore ActiveMQ.ks -storepass <PASSWORD>
    -rfc -file ActiveMQ.pem

最后,在调用activemq::library::ActiveMQCPP::initializeLibrary()后立即包含以下行:

decaf::lang::System::setProperty("decaf.net.ssl.trustStore", "ActiveMQ.pem");

当我尝试连接到主机ssl://localhost:61617时,一切都按预期工作。但是,当我尝试连接到ssl://LOCALHOST:61617ssl://127.0.0.1:61617时,我收到错误消息:

  

服务器证书名称与URI主机名值不匹配。

有谁知道如何修改OpenSSL证书验证器的行为?检查DNS条目时应该与案例无关,我也希望它检查IP地址。我希望两个失败的连接字符串(见上文)都能正常工作。

如果重要,我的环境设置如下:

OS          : Windows 7 Enterprise SP1 x64
Compiler    : Visual Studio 2008 Professional
ActiveMQ    : 5.13.1
ActiveMQ-CPP: 3.8.4
OpenSSL     : 1.0.2j
APR         : 1.5.2/1.5.4/1.2.1
JRE         : 8u112

感谢。

0 个答案:

没有答案