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.
2 回答
在没有其他回复的情况下,我尝试回答这个问题,但我不是 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 流量。
您不能在 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