5.3.6.1. 为 UberJAR 配置 HTTPS

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

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

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

    1. <Configure id="Server" class="org.eclipse.jetty.server.Server">
    2. <Call name="addConnector">
    3. <Arg>
    4. <New class="org.eclipse.jetty.server.ServerConnector">
    5. <Arg name="server">
    6. <Ref refid="Server"/>
    7. </Arg>
    8. <Set name="port">8090</Set>
    9. </New>
    10. </Arg>
    11. </Call>
    12. <Call name="addConnector">
    13. <Arg>
    14. <New class="org.eclipse.jetty.server.ServerConnector">
    15. <Arg name="server">
    16. <Ref refid="Server"/>
    17. </Arg>
    18. <Arg>
    19. <New class="org.eclipse.jetty.util.ssl.SslContextFactory">
    20. <Set name="keyStorePath">keystore.jks</Set>
    21. <Set name="keyStorePassword">password</Set>
    22. <Set name="keyManagerPassword">password</Set>
    23. <Set name="trustStorePath">keystore.jks</Set>
    24. <Set name="trustStorePassword">password</Set>
    25. </New>
    26. </Arg>
    27. <Set name="port">8443</Set>
    28. </New>
    29. </Arg>
    30. </Call>
    31. </Configure>

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

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

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

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

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