我一直在审核与我面临的问题相关的所有链接,而我无法理解我的错误:
说明
我正在尝试配置我的本地WL开发服务器以安全地连接到我们的后端。
我们的PaaS团队向我提供了我们的WL Enterprise密钥库,其中包含连接到后端所需的所有证书。密钥库是.p12。
在worklight.properties中:
#SSL certificate keystore location.
ssl.keystore.path=conf/ecommerce_bk_mobile.p12
#SSL certificate keystore type (jks or PKCS12)
ssl.keystore.type=PKCS12
#SSL certificate keystore password.
ssl.keystore.password=*****
还设置了SSL别名和密码:
banking.services.ssl.certificate.alias=bkdev1_wl
banking.services.ssl.certificate.password=******
Adapter.xml:
<connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
<protocol>https</protocol>
<domain>mbcdev1mobile.com</domain>
<port>PORT-NUM</port>
<sslCertificateAlias>${banking.services.ssl.certificate.alias}</sslCertificateAlias>
<sslCertificatePassword>${banking.services.ssl.certificate.password}</sslCertificatePassword>
</connectionPolicy>
我已经验证了p12密钥具有我需要的证书:
但是,我得到的错误是:
Unable to find certificate chain with alias: 'bkdev1_wl'
(上面提到的配置与我们的实际企业服务器匹配,但企业服务器能够连接,而我不是通过本地服务器连接)
1.如何在WL开发服务器上打开SSL日志记录?
(我确实添加了<logging traceSpecification="*=fine: com.worklight.*=debug=enabled : com.ibm.ws.ssl.*=all=enabled"/>
)但它没有用。
2.我错过了什么?
3.有关于如何设置的明确步骤吗?
WL版本:6.2.0.01.20150214-1613
由于
修改
我一直在检查配置,我有以下要求:
在我打开SSL日志记录后,我发现WL正在追踪它的默认存储,即(key.js)位于此路径下:
/Users/sam/Documents/workspace/WorklightServerConfig/servers/worklight/resources/security/key.jks
意味着WL甚至没有在我设置密钥库位置时读取自己的属性:
ssl.keystore.path=conf/ecommerce_bk_mobile.p12
我也做了以下事情: 在我的runtime-web.xml里面,位于:
/Users/sam/Documents/workspace/WorklightServerConfig/IPAS
我强迫服务器拿起我的钥匙:
<env-entry>
<description>[OPTIONAL] SSL certificate keystore location. Default: conf/default.keystore.</description>
<env-entry-name>ssl.keystore.path</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>conf/ecommerce_bk_mobile.p12</env-entry-value>
</env-entry>
<env-entry>
<description>[OPTIONAL] SSL certificate keystore type. Valid keystore types: jks, PKCS12. Default: jks.</description>
<env-entry-name>ssl.keystore.type</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>PKCS12</env-entry-value>
</env-entry>
<env-entry>
<description>[OPTIONAL] SSL certificate keystore password.Default: worklight.</description>
<env-entry-name>ssl.keystore.password</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>********</env-entry-value>
</env-entry>
我不确定是否需要对我的jvm.options文件进行任何更改,以迫使WL追踪我在其属性中定义的密钥库路径:
JVM内容:
-Dfile.encoding=UTF-8
-Duser.language=en
-Duser.country=US
-Djava.awt.headless=true
-Dwas.debug.mode=true
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=10777
-Dcom.ibm.websphere.ras.inject.at.transform=true
-Dcom.ibm.ws.jmx.connector.client.rest.readTimeout=180000
-Dibm.worklight.admin.db.type=DERBY
-Xmx1024m
-DwlDevEnv.enableCreateTables=true
-Djmx.remote.x.client.connection.check.period=0
-DwlSyncStart=false
答案 0 :(得分:0)
两个问题:
为了排除p12文件出现问题的可能性,你可以这样做,
通过连接信任链中的所有CA证书来创建单个CA证书
要执行此操作,请获取属于证书信任链的所有CA证书。将每个文件复制到一个文件中,比如cacerts.pem。例如,如果您的信任链中有三个CA证书,则可以连接并创建一个包含所有这些证书的文件,例如cat ca1.crt ca2.crt ca3.crt >> cacerts.pem
所以你现在拥有的是一个单独的文件,其中包含所有ca证书,它们是信任链的一部分。在继续之前,通过执行此命令检查您拥有的是正确的,
openssl verify -verbose -CAfile cacerts.pem server.crt
(将server.crt替换为您的证书文件名)。你应该看到server.crt:好的。
使用之前创建的CA证书创建p12文件
现在通过导入服务器证书,其私钥和我们之前创建的ca证书文件来创建p12文件。
openssl pkcs12 -export -in server.crt -inkey serverprivate.key -chain -CAfile cacerts.pem -name "bkdev1_wl" -out ecommerce_bk_mobile.p12
。
它将要求您输入私钥密码,然后输入导出密码,确保您为导出密码提供的任何内容,将其用作worklight.properties中ssl.keystore.password的值。
接下来确保在定义您提到的属性时提供了我们在前面的命令中使用的别名,banking.services.ssl.certificate.alias = bkdev1_wl和值 banking.services.ssl.certificate.password应该是私钥的属性而不是p12文件
尝试连接并检查。如果您仍然收到错误,请分享您在工作区中看到的内容以及您在后端服务器端看到的内容。