2

I have a heroku project, and I am successfully using https in my production environment. I am not sure how to configure webapp.runner (embedded tomcat) to accept connections on both http and https in my dev environment. Is there a configuration for this? Or should I grab the source files and edit the code? Right now I am toggling all of the https domains to http in my dev environment, but that is not ideal, and I can't see if https functionality is working without deploying to heroku.

4

2 回答 2

1

在没有其他回复的情况下,我尝试回答这个问题,但我不是 Heroku 用户。

我认为这取决于您如何安装/启动 webapp.runner 。

可以为此配置 Tomcat。搜索包含 Tomcat 服务定义的文件“server.xml”。寻找以下作品:

<Connector port="8080" protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           URIEncoding="UTF-8"
           redirectPort="8443" />

为了启用 HTTPS,您需要按照http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html上的指南进行更改。

但是,请注意,在 Heroku HTTPS 下,平衡器应按照https://devcenter.heroku.com/articles/http-routing处理,我认为您的应用程序实际上是通过 HTTP 访问的。换句话说,您在 Heroku 中的应用程序不会收到 HTTPS 流量。

于 2013-10-25T22:24:33.420 回答
1

您不能在 Heroku 上“手动”配置 SSL,您需要获取 Heroku 的 SSL Endpoint Add-On:https ://addons.heroku.com/ssl

本文详细解释了安装过程,设置非常简单:https ://devcenter.heroku.com/articles/ssl-endpoint


更新以更好地回答海报的问题

这是使用 maven 的 jetty 插件在本地运行您的应用程序的方法:

第 1 步:将其添加到您的开发配置文件下的 pom.xml 中:

   <plugin>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty-maven-plugin</artifactId>
      <version>8.1.4.v20120524</version>
      <configuration>
         <webAppConfig>
            <contextPath>/</contextPath>
         </webAppConfig>
         <connectors>
            <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
               <port>8080</port>
               <maxIdleTime>60000</maxIdleTime>
            </connector>
            <connector implementation="org.eclipse.jetty.server.ssl.SslSocketConnector">
               <port>8443</port>
               <maxIdleTime>60000</maxIdleTime>
               <keystore>${project.build.directory}/jetty-ssl.keystore</keystore>
               <password>jetty6</password>
               <keyPassword>jetty6</keyPassword>
            </connector>
         </connectors>
      </configuration>
   </plugin>
   <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>keytool-maven-plugin</artifactId>
      <executions>
         <execution>
            <phase>generate-resources</phase>
            <id>clean</id>
            <goals>
               <goal>clean</goal>
            </goals>
         </execution>
         <execution>
            <phase>generate-resources</phase>
            <id>genkey</id>
            <goals>
               <goal>genkey</goal>
            </goals>
         </execution>
      </executions>
      <configuration>
         <keystore>${project.build.directory}/jetty-ssl.keystore</keystore>
         <dname>cn=localhost</dname>
         <keypass>jetty6</keypass>
         <storepass>jetty6</storepass>
         <alias>jetty6</alias>
         <keyalg>RSA</keyalg>
      </configuration>
   </plugin>

第 2 步:运行应用程序

mvn clean jetty:run -Pdevelopment
于 2013-11-13T00:00:12.463 回答