5.3.6.1. 为 UberJAR 配置 HTTPS

下面的示例是 UberJAR 部署的情况下配置自签发认证的 HTTPS。

  1. 使用 JDK 自带的 Java Keytool 工具生成密钥和认证:

    keytool -keystore keystore.jks -alias jetty -genkey -keyalg RSA
  2. 在项目根目录配置带有 SSL 配置的 jetty.xml 文件:

    <Configure id="Server" class="org.eclipse.jetty.server.Server">
        <Call name="addConnector">
            <Arg>
                <New class="org.eclipse.jetty.server.ServerConnector">
                    <Arg name="server">
                        <Ref refid="Server"/>
                    </Arg>
                    <Set name="port">8090</Set>
                </New>
            </Arg>
        </Call>
        <Call name="addConnector">
            <Arg>
                <New class="org.eclipse.jetty.server.ServerConnector">
                    <Arg name="server">
                        <Ref refid="Server"/>
                    </Arg>
                    <Arg>
                        <New class="org.eclipse.jetty.util.ssl.SslContextFactory">
                            <Set name="keyStorePath">keystore.jks</Set>
                            <Set name="keyStorePassword">password</Set>
                            <Set name="keyManagerPassword">password</Set>
                            <Set name="trustStorePath">keystore.jks</Set>
                            <Set name="trustStorePassword">password</Set>
                        </New>
                    </Arg>
                    <Set name="port">8443</Set>
                </New>
            </Arg>
        </Call>
    </Configure>

    keyStorePasswordkeyManagerPasswordtrustStorePassword 需要按照 Keytool 的设置来配置。

  3. 在构建任务的配置中添加 jetty.xml

    task buildUberJar(type: CubaUberJarBuilding) {
        singleJar = true
        coreJettyEnvPath = 'modules/core/web/META-INF/jetty-env.xml'
        appProperties = ['cuba.automaticDatabaseUpdate' : true]
        webJettyConfPath = 'jetty.xml'
    }
  4. 按照部署 UberJAR 章节的介绍构建 Uber JAR。

  5. keystore.jks 跟项目的 JAR 放在一个目录下,然后启动 Uber JAR。

    通过浏览器访问 https://localhost:8443/app