我的问题的背景:
我正在使用servicemix中的apache camel,我正在开发一个包。在此捆绑包中,以下端点在路径中定义:
<to uri="https4://URL_I_WANT_TO_CONNECT_TO?proxyAuthHost=MY_PROXY_HOST_NAME&proxyAuthPort=MY_PROXY_PORT&sslContextParameters=mySslContextParameters" />
正如您在“uri”属性的值中所看到的,我使用的是HTTP代理。
我的目标是对“URL_I_WANT_TO_CONNECT_TO”执行HTTP POST请求。我已经获得3个证书(3“.cer”文件,根据这些文件的名称,我猜有一个用于服务器,一个用于CA,一个用于CA中间)。让我们将这3个证书命名为“cert_server.cer”,“cert_ca.cer”和“cert_ca_intermediate.cer”。
我使用“keytool”工具创建了一个名为“keystore.jks”的文件。通过按以下顺序执行以下三个命令来完成此创建:
keytool -import -keystore keystore.jks -file cert_server.cer -alias "server"
keytool -import -keystore keystore.jks -file cert_ca.cer -alias "ca"
keytool -import -keystore keystore.jks -file cert_ca_intermediate.cer -alias "ca_intermediate"
注意:我对所有证书使用了相同的密码
然后我在与我的bundle对应的java项目中添加了文件“keystore.jks”和3个证书,并定义了以下sslContextParameters(在先前定义的端点的“uri”属性的值中引用)在我的包的蓝图文件中:
<sslContextParameters id="mySslContextParameters"
xmlns="http://camel.apache.org/schema/blueprint">
<keyManagers keyPassword="abcde">
<keyStore resource="/key/keystore.jks" password="abcde" />
</keyManagers>
</sslContextParameters>
问题是它不起作用(我无法连接到“URL_I_WANT_TO_CONNECT_TO”),我唯一的信息是以下日志消息:“错误:握手期间远程主机关闭连接”。我不知道如何解决这个问题。
HTTP代理可能是问题的根源吗?
感谢您的帮助。
祝你好运
答案 0 :(得分:-1)
如果您的证书用于联系SSL服务器(而不是用于身份验证),请查看TrustManagersParameters(而不是KeyStoreParameters)。