此刻我试图改进我的tomcat知道如何。我试图用SSL建立tomcat。 这个想法是,我得到了/ app不需要任何授权的路径,以及需要基本身份验证的路径/ admin。我想它只是缺乏关于SSL的一般知识,我不知道会发生什么。Tomcat SSL https端口问题
当我使用url http://localhost:8080/myapp/app/
它的作品,它显示我的网页。现在我将/ app更改为/ admin。之后,我的网址是https://localhost/myapp/admin
,它不工作,因为8443端口丢失。我不明白为什么它会自动更改为https,但在此之后端口丢失?我的问题是什么?如何解决?
任何帮助,高度赞赏:)
我的server.xml:
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on"/>
<Listener className="org.apache.catalina.core.JasperListener"/>
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
/>
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="${catalina.home}/myapp.keystore"
keystorePass="histackoverflow"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.MemoryRealm" />
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b"/>
</Host>
</Engine>
</Service>
我的web.xml文件看起来像这样:
<servlet>
<servlet-name>MyApp REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>main.ch.myapp.resource.app</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Myapp REST Service</servlet-name>
<url-pattern>/app-api/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>MyApp Admin REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>main.ch.myapp.resource.admin</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyApp Admin REST Service</servlet-name>
<url-pattern>/admin-api/*</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>MyApp Admin</web-resource-name>
<url-pattern>/admin/*</url-pattern>
<url-pattern>/admin-api/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
端口8443可用时,我添加它。但是,我可以配置它在IM上使用https时自动切换端口吗? – NDY 2014-09-02 13:11:08
@Andy我不确定我是否正确理解你的问题。更改为https时,您重定向到的端口是在连接器的redirectPort属性中配置的端口。你应该得到这样的网址:https:// localhost:8443/myapp/admin你可以发布你的server.xml配置吗? – 2014-09-02 13:24:42
Ty为您提供帮助。我添加了server.xml。我猜你确实明白我的意思。当我添加8443到我的网址,它的作品。但是当我在将URL更改为/ admin后重定向到https://时,端口不会更改为8443. – NDY 2014-09-02 13:41:28