5.3.6.1. 为 UberJAR 配置 HTTPS

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

  • 使用 JDK 自带的 Java Keytool 工具生成密钥和认证:
  1. keytool -keystore keystore.jks -alias jetty -genkey -keyalg RSA
  • 在项目根目录配置带有 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 的设置来配置。

  • 在构建任务的配置中添加 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. }
  • 按照部署 UberJAR 章节的介绍构建 Uber JAR。

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

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