在soapUI 5.1.3中,我在首选项>中将密钥库设置为C:\ ccc_acp.keystore。 ssl设置,然后我可以连接到我的目标https服务器。
然后我在C:\ Program Files \ Java \ jdk1.6.0_38 \ jre \ lib \ security>
中运行以下命令keytool -importkeystore -srckeystore C:\ccc_acp.keystore -destkeystore .\cacerts
没有任何错误和keytool返回
导入命令已完成:已成功导入2个条目,0个条目失败或 取消
然后在soapUI 5.1.3中,我将密钥库设置为C:\ Program Files \ Java \ jdk1.6.0_38 \ jre \ lib \ security \ cacerts,但是当我连接到同一个https服务器时,它返回SSLHandshakeException:收到致命警报:handshake_failure。
为什么会发生这种情况?
事实上,我觉得有些人在这个名词上丢失了,当上述证书时,它是否意味着公钥?还是私钥?或两者兼而有之?
我可以在cacerts中导入私钥吗?
运行keytoool命令时
keytool -list -v -keystore .\cacerts
我看到一个带
的条目条目类型:PrivateKeyEntry
这表明它是私钥?
和
的条目条目类型:trustedCertEntry
这表明它是公钥? TrustedCert仅表示公钥?
抱歉,我是SSL新手。答案 0 :(得分:0)
请等一下。这是一个KeyStore,即包含私钥,还是只包含一个信任库,即只包含可信证书?或者换一种方式,服务器是否使用自签名证书?在soapUI 5.1.3中,我在首选项>中将密钥库设置为C:\ ccc_acp.keystore。 ssl设置,然后我可以连接到我的目标https服务器。
然后我在C:\ Program Files \ Java \ jdk1.6.0_38 \ jre \ lib \ security>
中运行以下命令
keytool -importkeystore -srckeystore C:\ccc_acp.keystore -destkeystore .\cacerts
没有任何错误和keytool返回
Import command completed: 2 entries successfully imported, 0 entries failed or cancelled
好奇的事情,除非它是信任库而不是KeyStore,并且服务器使用的是自签名证书。你必须告诉我们哪个。
然后在soapUI 5.1.3中,我将密钥库设置为C:\ Program Files \ Java \ jdk1.6.0_38 \ jre \ lib \ security \ cacerts,但是当我连接到同一个https服务器时,它返回SSLHandshakeException:收到致命警报:handshake_failure。
您必须提供更多信息。整个堆栈跟踪,首先是设置-Djavax.net.debug=SSL,handshake
为什么会发生这种情况?
没有上述额外信息就无法说出来。
事实上,我觉得有些人在这个名词上丢失了,当上述证书时,它是否意味着公钥?还是私钥?或两者兼而有之?
都不是。证书是公钥的标识包装,可以是自签名的,也可以是其他人签名的。
我可以在cacerts中导入私钥吗?
你不想。 cacerts文件是信任,而不是KeyStore。见上文。
运行keytoool命令时
keytool -list -v -keystore .\cacerts
我看到一个带
的条目
Entry type: PrivateKeyEntry
这表明它是私钥?
当然可以。它还表明您开始使用KeyStore,而不是信任库,如上所述。
所以你到目前为止所做的一切都是完全无效的。
您需要将您开始使用的原始文件命名为KeyStore,将信任库保留为默认值,即JRE提供的cacerts文件,不会被您篡改,并再次尝试,不使用任何关键工具。
和
的条目
Entry type: trustedCertEntry
这表明它是公钥?
不,它表示它是受信任的证书。
TrustedCert仅表示公钥?
不,见上文。
抱歉,我是SSL新手。
很新。我不知道你在读什么,或者你有什么废话,但这完全是错的。我建议你忘记这一切,然后再仔细阅读JSSE参考指南。