Worklight Development SSL问题(找不到证书链)

Worklight Development SSL问题(找不到证书链),ssl,ibm-mobilefirst,worklight-server,Ssl,Ibm Mobilefirst,Worklight Server,我一直在查看与我面临的问题相关的所有链接,但我无法理解我做错了什么: 说明: 我正在尝试配置我的本地WL开发服务器,以安全地连接到我们的后端 我们的PaaS团队给了我我们的WL Enterprise密钥库,其中包含连接到后端所需的所有证书。密钥库是.p12 在worklight.properties中: #SSL certificate keystore location. ssl.keystore.path=conf/ecommerce_bk_mobile.p12 #SSL certifica

我一直在查看与我面临的问题相关的所有链接,但我无法理解我做错了什么:

说明:

我正在尝试配置我的本地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>
(上面提到的配置与我们实际的企业服务器相匹配,但企业服务器能够连接,我没有通过本地服务器)

1.如何在WL development server上打开SSL日志记录

(我确实添加了
),但它不起作用

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
我也做了以下工作: 在my 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>
两个问题:

  • 您正在使用相互身份验证吗?
    启用相互身份验证时,worklight通过检查其证书来检查后端是否为正版,后端还通过检查其证书来检查客户端(在本例中为worklight适配器)是否为正版。 如果未使用相互身份验证,则不需要在适配器连接策略中设置sslCertificateAlias和SSLCertificateAssword
  • 如果您确实需要相互身份验证,您确定您的p12文件正确吗?我怀疑你的p12文件可能有问题
为了排除p12文件出错的可能性,您可以这样做

通过连接信任链中的所有CA证书来创建单个CA证书

为此,获取证书信任链中的所有CA证书。将每个文件复制到一个文件中,比如cacerts.pem。例如,如果信任链中有三个CA证书,则可以连接并创建一个包含所有证书的文件,例如,
cat ca1.crt ca2.crt ca3.crt>>cacerts.pem

因此,您现在拥有的是一个单独的文件,其中包含作为信任链一部分的所有ca证书。在继续之前,通过执行此命令,检查您拥有的是正确的,
openssl验证-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\u wl”-out-ecommerce\u bk\u mobile.p12

它将要求您输入私钥密码,后跟导出密码,确保无论您为导出密码提供什么,都将其用作worklight.properties中ssl.keystore.password的值

接下来,在定义您提到的属性banking.services.ssl.certificate.alias=bkdev1_wl和 banking.services.ssl.certificate.password应该是私钥的属性,而不是p12文件的属性


尝试连接并检查。如果仍然出现错误,请共享在worklight端看到的内容和在后端服务器端看到的内容

要在开发服务器上启用SSL跟踪,请使用“.您可能还希望在开发服务器的“jvm.options”文件中添加字符串“-Djavax.net.debug=all”。我收到了这些日志:抱歉,我认为我的日志文件不完整。看起来服务器正在查找其内部密钥(key.js)而不是worklight.properties中指定的路径。可能是证书路径不正确吗?@patbarron,感谢您为此花费时间。是的,我是IBM支持客户。我将尝试打开PMR以获得支持团队的帮助。
<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>
-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