我尝试在具有自签名 CA 的 Websphere-Liberty 服务器上设置 SSL,但我不断收到 SSLHandshakeException。我不是 SSL 专家,所以可能我只是忘记了一些事情。
以下是有关我的设置的一些详细信息:
product = WebSphere Application Server 8.5.5.0 (wlp-1.0.3.20130510-0831)
java.version = 1.7.0_51
os = Windows 8 (6.2; amd64) (en_US)
我成功部署了worklight应用程序中心war,并且可以通过浏览器访问它。当我尝试通过 https 访问应用程序中心时,出现以下异常:
[9/1/14 19:07:11:799 EEST] 00000021 com.ibm.ws.channel.ssl.internal.SSLHandshakeErrorTracker E CWWKO0801E: Unable to initialize SSL connection. Unauthorized access was denied or security settings have expired. Exception is javax.net.ssl.SSLHandshakeException: no cipher suites in common
我的 server.xml 中有以下配置
<feature>ssl-1.0</feature>
<keyStore id="defaultKeyStore" password="trasys" />
添加 keystore 属性后,Websphere 会生成带有默认证书的 keystore 文件 (key.jks)。我使用 java keytool 实用程序删除了证书,并添加了我自己的自签名 CA 证书。该证书是使用以下 openssl 命令在 cygwin 中生成的(如以下 stackoverflow 票证所示: Is a signed SSL certificate required for Worklight development? ):
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt
要将证书添加到空 keystore ,我使用了以下命令:
keytool -import -trustcacerts -alias mydomain -file certificate.crt -keystore keystore.jks
这基本上就是我到目前为止所尝试的,有人知道我错过了什么吗?
最佳答案
您仅使用您的程序导入公共(public)证书,而不导入私钥。您的 keystore 中需要私钥。
您可以使用以下解决方案:
- 将您的 key 和证书转换为 pkcs12,然后按照此处所述导入 importing an existing x509 certificate and private key in Java keystore to use in ssl
- 使用 Liberty 工具
securityUtility createSSLCertificate
创建证书,如所述 securityUtility command - 如果您拥有完整的 WebSphere Application Server,则可以使用 IBM key 管理实用程序 (ikeyman) 创建和导入 key 和证书。
关于ssl - Liberty Websphere 上没有共同的密码套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25620180/