Tomcat SSL https端口问题
目前,我正在努力提高我的雄猫技能。我正在尝试用SSL设置tomcat。 我的想法是,我通过/app获得了不需要任何授权的路径,以及需要基本身份验证的路径/admin。我想这只是缺乏SSL的一般知识,我无法理解会发生什么 当我使用urlTomcat SSL https端口问题,tomcat,ssl,https,basic-authentication,Tomcat,Ssl,Https,Basic Authentication,目前,我正在努力提高我的雄猫技能。我正在尝试用SSL设置tomcat。 我的想法是,我通过/app获得了不需要任何授权的路径,以及需要基本身份验证的路径/admin。我想这只是缺乏SSL的一般知识,我无法理解会发生什么 当我使用urlhttp://localhost:8080/myapp/app/它可以工作并显示我的页面。现在我将/app更改为/admin。之后,我的url是https://localhost/myapp/admin它不工作,因为8443端口丢失。我不明白为什么它会自动更改为ht
http://localhost:8080/myapp/app/
它可以工作并显示我的页面。现在我将/app更改为/admin。之后,我的url是https://localhost/myapp/admin
它不工作,因为8443端口丢失。我不明白为什么它会自动更改为https,但之后端口就丢失了?我的问题是什么?如何解决
非常感谢您的帮助:)
My 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>
My 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>
MyApp REST服务
com.sun.jersey.spi.container.servlet.ServletContainer
com.sun.jersey.config.property.packages
main.ch.myapp.resource.app
com.sun.jersey.api.json.POJOMappingFeature
真的
1.
Myapp REST服务
/应用程序接口/*
MyApp管理REST服务
com.sun.jersey.spi.container.servlet.ServletContainer
com.sun.jersey.config.property.packages
main.ch.myapp.resource.admin
com.sun.jersey.api.json.POJOMappingFeature
真的
1.
MyApp管理REST服务
/管理api/*
MyApp管理员
/管理员/*
/管理api/*
管理
保密的
基本的
由于
中包含的机密
,因此对https进行了更改
看看:指定安全连接 中的用户数据约束(
TutorialUser data constraint
)
部署描述符)包含传输保证
元素。A.
用户数据约束可用于要求受保护的传输
层连接,如HTTPS(HTTP over SSL)可用于所有
安全协议中指定的受约束URL模式和HTTP方法
约束。运输担保的选择包括:,
整数,或无。如果您指定“机密”或“集成”作为
安全约束,它通常意味着SSL的使用是安全的
必需,并且该类型的安全约束适用于所有请求
与web资源集合中的URL模式匹配,而不是
只需转到登录对话框
此外,我假设8443端口不可用,因为您没有将Tomcat配置为使用SSL在以下链接中,您可以找到一个关于在Tomcat上配置SSL支持的好方法: ---编辑(已发布server.xml配置)--- 要重定向到端口8443,您需要更改连接器配置,如下所示:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
重定向端口
如果此连接器支持非SSL请求,并且请求
接收到匹配的安全约束要求SSL的
传输时,Catalina将自动将请求重定向到
此处指定的端口号
端口8443在添加时可用。但是我可以配置它在我使用https时自动切换端口吗?@Andy我不确定我是否正确理解了你的问题。更改为https时重定向到的端口是在连接器的redirectPort属性中配置的端口。您应该得到这样一个url:您可以发布您的server.xml配置吗?Ty以获得帮助。我添加了server.xml。我想你是对的。当我添加8443到我的网址,它的工作。但是,当我将url更改为/admin后被重定向到https://时,端口没有更改为8443。@Andy将redirectPort=“8443”
添加到great,ty:)这就是我想要的改变