IBM WebSphere Liberty处理IHS服务器的证书问题

IBM WebSphere Liberty处理IHS服务器的证书问题,websphere,websphere-liberty,ibmhttpserver,ibm,Websphere,Websphere Liberty,Ibmhttpserver,Ibm,我有一个liberty服务器和一个IHS服务器(都在不同的主机上)。这是rhel7 我遵循了一些指南,发现它们在密钥库设置和证书共享过程中都会遇到问题。作为参考,我尝试了详细的方法 快速总结我在过去的尝试中所做的。。。在liberty服务器上,我在我的server.xml中添加了以下内容,以添加一个插件include(使内容更易于阅读): 我跳出apachectl并转到端口8443上应用程序的url,得到一个“500内部服务器错误” http_plugin.log插件日志显示: [04/Mar/

我有一个liberty服务器和一个IHS服务器(都在不同的主机上)。这是rhel7

我遵循了一些指南,发现它们在密钥库设置和证书共享过程中都会遇到问题。作为参考,我尝试了详细的方法

快速总结我在过去的尝试中所做的。。。在liberty服务器上,我在我的server.xml中添加了以下内容,以添加一个插件include(使内容更易于阅读):

我跳出apachectl并转到端口8443上应用程序的url,得到一个“500内部服务器错误”

http_plugin.log插件日志显示:

[04/Mar/2020:18:23:48.31652] 00002f26 3cff9700 - ERROR: lib_stream: openStream: Failed in r_gsk_secure_soc_init: GSK_ERROR_BAD_CERT(gsk rc = 414) PARTNER CERTIFICATE DN=CN=hostname,OU=app,O=ibm,C=us, Serial=xxxxxxxxxxx
[04/Mar/2020:18:23:48.31655] 00002f26 3cff9700 - ERROR: Ensure correct certificate is marked as default certificate in plugin-key.kdb.                           Consult documentation regarding Administering application security and Securing communications for more information.
[04/Mar/2020:18:23:48.31657] 00002f26 3cff9700 - ERROR: Last validation error [575010]: GSKVAL_ERROR_NO_CHAIN_BUILT
[04/Mar/2020:18:23:48.31658] 00002f26 3cff9700 - ERROR: Subject [[Class=]GSKVALMethod::PKIX[Issuer=]OU=memberRoot,O=xxxx-xxx-xxx-xxx-xxxxxxxx,DC=com.ibm.ws.collective[#=]082d6a83e5ec[Subject=]CN=hostname,OU=app,O=ibm,C=us] failed certificate validation
[04/Mar/2020:18:23:48.31659] 00002f26 3cff9700 - ERROR: X509 Certificate validation log: [[Class=]GSKVALMethod::PKIX[Time=]2020:3:4:18:23:48.316[buildChain=][Error=]GSKVAL_ERR_NO_CHAIN_BUILT[Info=]OU=memberRoot,O=xxx-xxx-xxx-xxx-xxx,DC=com.ibm.ws.collective[Cert=][Issuer=]OU=memberRoot,O=xxx-xxx-xxx-xxx-xxxx,DC=com.ibm.ws.collective[#=]082d6a83e5ec[Subject=]CN=hostname,OU=app,O=ibm,C=us[=Cert][=buildChain]^M
]
[04/Mar/2020:18:23:48.31664] 00002f26 3cff9700 - ERROR: ws_common: websphereGetStream: Could not open stream
[04/Mar/2020:18:23:48.31667] 00002f26 3cff9700 - ERROR: ws_common: websphereExecute: Failed to create the stream
[04/Mar/2020:18:23:48.31668] 00002f26 3cff9700 - ERROR: ws_common: websphereHandleRequest: Failed to execute the transaction to 'default_node_app' on host 'hostname:10447'; will try another one
[04/Mar/2020:18:23:48.31669] 00002f26 3cff9700 - ERROR: ws_common: websphereWriteRequestReadResponse: Failed to find an app server to handle this request
[04/Mar/2020:18:23:48.31670] 00002f26 3cff9700 - ERROR: ESI: getResponse: failed to get response: rc = 2
[04/Mar/2020:18:23:48.31671] 00002f26 3cff9700 - ERROR: [xxx.xx.xx.17://app/ui/] ws_common: websphereHandleRequest: Failed to handle request rc=2

谢谢大家!

你说的“导入”我想这意味着在ikeyman/gskcmd/gskcapicmd中的“添加”操作?这些工具中的两个动词有不同的含义

我怀疑您添加了颁发的证书(CN=hostname…),而不是颁发证书的CA(memberroot)。WAS插件消息中的调试信息意味着它无法将证书追踪到受信任的根目录下(与查找带有它所访问的根目录的X509错误相反)

但是,也可能是您导入了cn=memberroot的“错误”证书。WebSphere并不总是添加必要的主题密钥标识符/权限密钥标识符来确保这一点,因此请仔细检查。

您说的“导入”我想这意味着ikeyman/gskcmd/gskcapicmd中的“添加”操作?这些工具中的两个动词有不同的含义

我怀疑您添加了颁发的证书(CN=hostname…),而不是颁发证书的CA(memberroot)。WAS插件消息中的调试信息意味着它无法将证书追踪到受信任的根目录下(与查找带有它所访问的根目录的X509错误相反)


但是,也可能是您导入了cn=memberroot的“错误”证书。WebSphere并不总是添加必要的主题密钥标识符/权限密钥标识符来确保这一点,因此请仔细检查。

好的,我终于找到了工作。似乎使用DefaultKeyStore id的集体设置在某种程度上导致了与我的Liberty插件密钥库的冲突

我最终重新创建了所有东西(plugin-key.kdb密钥库和liberty插件密钥库,我将其命名为LibertyKeystore.jks)。我扔掉了所有的东西(现在无论如何都不需要),制作了一个包含,如上面所述,名为plugin-join-include.xml:

        <featureManager>
                <feature>ssl-1.0</feature>
        </featureManager>

        <keyStore id="libertyKey" password="xxxx"
              location="${server.config.dir}/resources/security/libkey.jks"/>

        <pluginConfiguration webserverPort="10500" webserverSecurePort="10447"
                pluginInstallRoot="/opt/IBM/wasadmin/Plugins"
                sslKeyRingLocation="/opt/IBM/wasadmin/Plugins/config/webserver1/plugin-key.kdb"
                sslStashFileLocation="/opt/IBM/wasadmin/Plugins/config/webserver1/plugin-key.sth"
                sslCertlabel="libertyKey"/>
<?xml version="1.0" encoding="UTF-8" ?>
<server description="IHS plugin join include file">

        <featureManager>
                <feature>ssl-1.0</feature>
        </featureManager>

        <keyStore id="defaultKeyStore" password="password"
                location="${server.config.dir}/resources/security/LibertyKeystore.jks" />

        <pluginConfiguration webserverPort="80" webserverSecurePort="8443"
                pluginInstallRoot="/opt/IBM/wasadmin/Plugins"
                sslKeyRingLocation="/opt/IBM/wasadmin/Plugins/config/webserver1/plugin-key.kdb"
                sslStashFileLocation="/opt/IBM/wasadmin/Plugins/config/webserver1/plugin-key.sth"
                sslCertlabel="LibertyKeystore"/>

</server>

访问日志显示了200个。这可能是一个非插件问题。

好的,我终于找到了工作。似乎使用DefaultKeyStore id的集体设置在某种程度上导致了与我的Liberty插件密钥库的冲突

我最终重新创建了所有东西(plugin-key.kdb密钥库和liberty插件密钥库,我将其命名为LibertyKeystore.jks)。我扔掉了所有的东西(现在无论如何都不需要),制作了一个包含,如上面所述,名为plugin-join-include.xml:

        <featureManager>
                <feature>ssl-1.0</feature>
        </featureManager>

        <keyStore id="libertyKey" password="xxxx"
              location="${server.config.dir}/resources/security/libkey.jks"/>

        <pluginConfiguration webserverPort="10500" webserverSecurePort="10447"
                pluginInstallRoot="/opt/IBM/wasadmin/Plugins"
                sslKeyRingLocation="/opt/IBM/wasadmin/Plugins/config/webserver1/plugin-key.kdb"
                sslStashFileLocation="/opt/IBM/wasadmin/Plugins/config/webserver1/plugin-key.sth"
                sslCertlabel="libertyKey"/>
<?xml version="1.0" encoding="UTF-8" ?>
<server description="IHS plugin join include file">

        <featureManager>
                <feature>ssl-1.0</feature>
        </featureManager>

        <keyStore id="defaultKeyStore" password="password"
                location="${server.config.dir}/resources/security/LibertyKeystore.jks" />

        <pluginConfiguration webserverPort="80" webserverSecurePort="8443"
                pluginInstallRoot="/opt/IBM/wasadmin/Plugins"
                sslKeyRingLocation="/opt/IBM/wasadmin/Plugins/config/webserver1/plugin-key.kdb"
                sslStashFileLocation="/opt/IBM/wasadmin/Plugins/config/webserver1/plugin-key.sth"
                sslCertlabel="LibertyKeystore"/>

</server>

访问日志显示了200个。这可能是一个非插件的“问题”。

很抱歉给您带来困惑。。。已经有点颠簸了。最后,我在liberty服务器的/opt/IBM/wlp/usr/servers/affms/resources/security中创建了一个名为libkey.jks的新密钥库。在这个密钥库中有一个名为“libertykey”的个人证书。我提取这个libertykey并将其发送到IHS服务器。然后,我在IHS服务器plugin-cfg.kdb上打开ikeyman,并将该证书添加为带有“libertykey”标签的签名者证书。我新创建了plugin-key.kdb密钥库,该密钥库中除了从liberty服务器新添加的libertykey之外没有其他内容。似乎在使用plugin-cfg.xml时,IHS服务器试图使用key.p12而不是我为插件设置的jks密钥库。。不使用DefaultKeyStore的密钥库id或其他东西是否有问题?插件中不可能使用JKS。这是一种仅限java的密钥库格式。插件使用插件中文件系统路径列出的内容--cfg.xml.Yes,很抱歉描述不好。我的意思是,我在opt/IBM/wlp/usr/servers/app/resources/security目录中的liberty服务器上创建了一个JKS密钥库,创建了一个个人证书,导出了证书,在IHS服务器上创建了一个plugin-key.kdb/sth,创建了一个个人证书,导出了它,交换了两个证书,并将它们添加到了相反的密钥库中。很抱歉造成混淆。。。已经有点颠簸了。最后,我在liberty服务器的/opt/IBM/wlp/usr/servers/affms/resources/security中创建了一个名为libkey.jks的新密钥库。在这个密钥库中有一个名为“libertykey”的个人证书。我提取这个libertykey并将其发送到IHS服务器。然后,我在IHS服务器plugin-cfg.kdb上打开ikeyman,并将该证书添加为带有“libertykey”标签的签名者证书。我新创建了plugin-key.kdb密钥库,该密钥库中除了从liberty服务器新添加的libertykey之外没有其他内容。似乎在使用plugin-cfg.xml时,IHS服务器试图使用key.p12而不是我为插件设置的jks密钥库。。不使用DefaultKeyStore的密钥库id或其他东西是否有问题?插件中不可能使用JKS。这是一种仅限java的密钥库格式。插件使用插件中文件系统路径列出的内容--cfg.xml.Yes,很抱歉描述不好。我的意思是我在liberty服务器上的opt/IBM/wlp/usr/servers/app/resources/security目录下创建了一个JKS密钥库,制作了一个个人证书,导出了证书,在IHS服务器上创建了一个plugin-key.kdb/sth,制作了一个个人证书,导出了证书,交换了2个证书并将它们添加到相反的密钥存储库中。您能否显示…/IHS/bin/gskcapicmd-cert-details-label libertykey-db/opt/IBM/wasadmin/Plugins/config/webserver1/plugin-key.kdb-stashed与当我在liberty服务器上运行curl时将curl-vk指向libertyhost:10447时显示的主题/颁发者:curl-vk libertyh
<?xml version="1.0" encoding="UTF-8" ?>
<server description="IHS plugin join include file">

        <featureManager>
                <feature>ssl-1.0</feature>
        </featureManager>

        <keyStore id="defaultKeyStore" password="password"
                location="${server.config.dir}/resources/security/LibertyKeystore.jks" />

        <pluginConfiguration webserverPort="80" webserverSecurePort="8443"
                pluginInstallRoot="/opt/IBM/wasadmin/Plugins"
                sslKeyRingLocation="/opt/IBM/wasadmin/Plugins/config/webserver1/plugin-key.kdb"
                sslStashFileLocation="/opt/IBM/wasadmin/Plugins/config/webserver1/plugin-key.sth"
                sslCertlabel="LibertyKeystore"/>

</server>
[Wed Mar 04 21:32:28 2020] [error] [client xxx.xx.xx.17:65261] [7ff5a0000910] [19831] SSL0279E: SSL Handshake Failed due to fatal alert from client. Client sent fatal alert [level 2 (fatal), description 46 (certificate_unknown)]  [xxx.xx.xx.17:65261 -> xxx.xx.xx.87:8443] [21:32:28.000934048] 0ms