如何将外部供应商SSL证书配置到JBoss 7.1中

时间:2014-09-24 19:01:02

标签: java ssl jboss

我正在从Websphere 8.x转换为JBoss 7.1,但我无法将SSL证书转换为JBoss 7.1。我们通过SSL使用外部供应商Web服务。

在Websphere中我会这样做:
将供应商添加到本地WAS信任库:
使用管理控制台中的“从端口检索”选项来检索证书并解决问题。
完成以下步骤:

  1. 登录管理控制台。
  2. 展开安全性,然后单击SSL证书和密钥管理。 在配置设置下,单击管理端点安全配置。
  3. 选择适当的出站配置以进入(单元):E4GT82WNode03Cell :(节点):E4GT82WNode03管理范围。
  4. 在“相关项”下,单击“密钥库和证书”,然后单击“NodeDefaultTrustStore密钥库”。
  5. 在“其他属性”下,单击“签署者证书”和“从端口检索”。
  6. 在主机字段中,在主机名字段中输入services.vendor.com,在端口字段中输入443,在别名字段中输入services.vendor.com_cert。
  7. 单击“检索签名者信息”。
  8. 验证证书信息是否适用于您可以信任的证书。
  9. 单击“应用并保存”。
  10. 但是在JBoss中看起来并不像这种能力。我一直在使用openssl,keytool进行创建,将证书添加到密钥库并尝试更改standalone.xml文件。我已经尝试了很多不同的搜索结果,这些搜索结果已经尝试过并花了无数个小时试图解决这个问题。

    我收到此错误:

      

    13:08:50,801 ERROR [org.jboss.as.controller.management-operation]   操作("添加")失败 - 地址:([       ("子系统" =>" web"),       ("连接器" =>" https"),       (" ssl" =>"配置")]) - 失败描述:" JBAS014803:重复资源[       (\" subsystem \" => \" web \"),       (\" connector \" => \" https \"),       (\" ssl \" => \"配置\")]"

    引发错误:

        <subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
          <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
          <connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true">
            <ssl key-alias="jbosscerts" password="secret" certificate-key-file="D:\opt\jboss-as-7.1.1.Final\keystore\jbosscertstore.keystore" certificate-file="C:/jboss-as-7.1.1.Final\keystore\jbosscertstore.keystore" cipher-suite="ALL" protocol="TLSv1"/>
            <ssl key-alias="vendor1.com_cert" password="secret" certificate-key-file="C:\jboss-as-7.1.1.Final\keystore\jbosscertstore.keystore" certificate-file="C:\jboss-as-7.1.1.Final\keystore\jbosscertstore.keystore" cipher-suite="ALL" protocol="TLSv1"/>
            <ssl key-alias="vendor2.com_cert" password="secret" certificate-key-file="D:\opt\jboss-as-7.1.1.Final\keystore\jbosscertstore.keystore" certificate-file="C:\jboss-as-7.1.1.Final\keystore\jbosscertstore.keystore" cipher-suite="ALL" protocol="TLSv1"/>
          </connector>          
          <virtual-server name="default-host" enable-welcome-root="true">
            <alias name="localhost"/>
            <alias name="example.com"/>
          </virtual-server>
        </subsystem>
    

    不会抛出错误:

        <subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
          <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
          <connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true">
            <ssl key-alias="jbosscerts" password="secret" certificate-key-file="D:\opt\jboss-as-7.1.1.Final\keystore\jbosscertstore.keystore" certificate-file="C:/jboss-as-7.1.1.Final\keystore\jbosscertstore.keystore" cipher-suite="ALL" protocol="TLSv1"/>
          </connector>          
          <virtual-server name="default-host" enable-welcome-root="true">
            <alias name="localhost"/>
             <alias name="example.com"/>
          </virtual-server>
        </subsystem>
    

    我的问题是: 如何在JBoss中配置多个SSL证书,如Websphere?

1 个答案:

答案 0 :(得分:2)

您需要为此添加系统属性。所以基本上在standalone.xml标记之后的<extensions>....</extensions>添加以下代码:

<system-properties>
        <property name="javax.net.ssl.trustStore" value="<location of cert>"/>
</system-properties>

<location of cert>是Java密钥库文件的位置,其中包含此应用程序进程(信任库)信任的CA证书集合。请注意,在Windows上,指定的路径名​​必须使用正斜杠/代替\