将 Jetty 8.1.3 配置为以 HTTPS/SSL 方式运行

完成以下步骤,将 Jetty 配置为以 HTTPS/SSL 方式运行。

过程

  1. 生成密钥库。

    JRE_HOME/bin 目录,运行此命令:

    keytool -genkey -keystore "$JETTY_HOME/etc/rc.keystore" -alias angler -keyalg RSA

    此命令需要与证书和密码相关的信息来保护密钥库和密钥库内的密钥。您必须通过 Rational® Change server URL 提供 hostname。缺省情况下,将 Rational Change 5.2 及更高版本设置为使用生成的 URL 中 hostname 的机器 IP 地址。如果生成的链接使用 192.168.10.10,那么在“姓名”提示处输入该值。 这样做可以确保将密钥颁发给该 Web 站点的 URL,这会阻止浏览器显示密钥和站点名称不匹配的错误消息。

    例如:

    输入密钥库密码:请选择密码
    您的姓名是?
    [未知]:192.168.10.10
    您组织单位的名称是?
    [未知]:开发
    贵组织的名称是?
    [未知]:Rational
    您所在城市或地区的名称是?
    [未知]:
    您所在州/省的名称是?
    [未知]:
    该单位的两字母国家或地区代码是?
    [未知]:
    “CN=192.168.10.10;OU=开发;O=Rational;L=未知;
    ST=未知;C=未知”是否正确?
    [否(n)]:是(y)
    
    请输入密钥密码
    (如果与密钥库密码相同,请按回车键):选择密码
  2. JETTY_HOME/etc 目录中,打开 jetty.xmljetty-ssl.xml 文件。
  3. jetty.xml 文件中,注释掉或删除以下行。

    jetty.xml 文件中,您必须使用 SslSelectChannelConnector,而不是 SelectChannelConnector

    <Call name="addConnector">
    <Arg>
    <New class="org.eclipse.jetty.server.nio.SelectChannelConnector>
    <Set name="host"><Property name="jetty.host" /></Set>
    <Set name="port"><Property name="jetty.port" default="1111"/></Set>
    <Set name="maxIdleTime">300000</Set>
    <Set name="Acceptors"></Set>
    <Set name="statsOn">false</Set>
    <Set name="confidentialPort">8443</Set>
    <Set name="lowResourcesConnections">20000</Set>
    <Set name="lowResourcesMaxIdleTime">5000</Set>
    </New>
    </Arg>
    </Call>
  4. jetty-ssl.xml 文件中,找出与这些行类似的行,然后将其粘贴到 jetty.xml 文件中。
    <New id="sslContextFactory" class="org.eclipse.jetty.http.ssl.SslContextFactory">
    <Set name="KeyStore"><Property name="jetty.home" default="." />/etc/keystore</Set>
    <Set name="KeyStorePassword">OBF:1xxx1so1x6e1ppp1yu61x2g1z6u1op9</Set>
    <Set name="KeyManagerPassword">OBF:1x2u1nnl5z1c5s7g1ggl1u9t</Set>
    <Set name="TrustStore"><Property name="jetty.home" default="." />/etc/keystore</Set>
    <Set name="TrustStorePassword">OBF:3uus1elo8x3e1kle1gs34x8t1z4u1lp8</Set>
    </New>
    
    <Call name="addConnector">
    <Arg>
    <New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
    <Arg><Ref id="sslContextFactory" /></Arg>
    <Set name="Port">8443</Set>
    <Set name="maxIdleTime">30000</Set>
    <Set name="Acceptors">2</Set>
    <Set name="AcceptQueueSize">100</Set>
    </New>
    </Arg>
    </Call>
    注意:

    确保为 KeyStoreKeyStorePasswordKeyManagerPasswordTrustStoreTrustStorePasswordPort 属性提供正确的值。

    请勿使用属性 <Property name="jetty.home" default="." />. 您必须提供 JETTY_HOME 的绝对路径。

  5. 对于 Rational Change 5.3.1 或更高版本,要支持 SP800-131A 需求,请在 jetty.xml 文件中,添加 <Setname="protocol">TLSv1.2</Set> 标记。
    <New id="sslContextFactory" class="org.eclipse.jetty.http.ssl.SslContextFactory">
    <Set name="KeyStore"><Property name="jetty.home" default="." />/etc/keystore</Set>
    <Set name="KeyStorePassword">OBF:1xxx1so1x6e1ohp1yu61x5g2z6u1op8</Set>
    <Set name="KeyManagerPassword">OBF:1x4u1nnl6z1c5t7g1ffl1u9t</Set>
    <Set name="TrustStore"><Property name="jetty.home" default="." />/etc/keystore</Set>
    <Set name="TrustStorePassword">OBF:3uuk1wlo5x3e4kle1gs35x8t4z4r1lp8</Set>
    <Set name="protocol">TLSv1.2</Set>
    </New>
  6. JETTY_HOME/webapps/context/WEB-INF/ 目录中,打开 web.xml 文件。

    http 更改为 https,如果需要,请更改端口号。

    <context-param>
    <param-name>protocol</param-name>
    <param-value>http</param-value>
    </context-param>
    <context-param>
    <param-name>port</param-name>
    <param-value>8600</param-value>
    </context-param>
  7. 启动 Rational Change 管理会话,并转至系统管理 > 常规选项卡,以确保帮助服务器 URL字段中包含 https
  8. 如果您正在使用中央服务器到远程服务器配置,那么将系统配置为在以中央服务器方式运行的服务器之间使用 HTTPS
  9. 对于 Solaris,将以下行添加到 JETTY_HOME/bin/ 目录中 jetty.sh 文件的开头:

    JAVA_OPTIONS="-Djetty.home=$JETTY_HOME -Djetty.log=$JETTY_LOG -Djava.protocol.handler.pkgs=com.ibm.net.ssl.www2.protocol -Xms128m -Xmx512m -server $JAVA_OPTIONS"


反馈