tomcat - 重定向后,Servlet安全传输保证"CONFIDENTIAL" 不会显示请求的页面

  显示原文与译文双语对照的内容

我只是在尝试Servlet的安全机制。 我用过 <transport-guarantee>CONFIDENTIAL</transport-guarantee> 在 web.xml 中使用"基本"身份验证。 当访问受限资源时,重定向后的页面不是 displayed.Following的代码 Fragment

tomcat-users.xml


<role rolename="Admin"/>
<role rolename="Member"/>
<role rolename="Guest"/>
<user username="Annie" password="admin" roles="Admin, Member, Guest"/>
<user username="Diane" password="coder" roles="Member, Guest"/>
<user username="Ted" password="newbie" roles="Guest"/>

web.xml


<web-app version="3.0">
 <display-name>SecurityApp</display-name>
 <servlet>
 <servlet-name>BeerAppServlet</servlet-name>
 <servlet-class>com.examples.servlets.BeerAppServlet</servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>BeerAppServlet</servlet-name>
 <url-pattern>/Beer/AddRecipe</url-pattern>
 </servlet-mapping>

 <security-role>
 <role-name>Admin</role-name>
 </security-role>
 <security-role>
 <role-name>Member</role-name>
 </security-role>
 <security-role>
 <role-name>Guest</role-name>
 </security-role>

 <security-constraint>
 <web-resource-collection>
 <web-resource-name>Update</web-resource-name>
 <url-pattern>/Beer/AddRecipe/*</url-pattern>
 <http-method>GET</http-method>
 </web-resource-collection>

 <auth-constraint>
 <role-name>Admin</role-name>
 <role-name>Member</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>

</web-app> 

我的Servlet类如下


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

 PrintWriter writer = response.getWriter();

 writer.println("<h3> Welcome to Beer Application Site</h3>");

 }

当我按如下方式访问应用程序时


http://localhost:8083/SecurityApp/Beer/AddRecipe

re直接完成,上面提到的url更改为


https://localhost:8553/SecurityApp/Beer/AddRecipe 

而不显示页面,则浏览器将按如下方式显示

连接重置时,重新设置到服务器的连接已经重置。 站点可能暂时不可用或者太忙。 请稍后再试。 如果你无法加载任何页面,请检查你的计算机连接网络。 如果计算机或者网络是由防火墙或者代理为 protected的,请确保允许 Firefox 访问网络。

我希望该页面应显示欢迎啤酒应用网站。 我在 server.xml 中使用了 tomcat apache-tomcat-7.0.47 我的直接端口


<Connector connectionTimeout="20000" port="8083" protocol="HTTP/1.1" redirectPort="8553"/>

任何人都可以让我知道这里有什么错误,或者如果我缺少任何需要完成的配置。

时间: 作者:

经过Tomcat文档,我了解到SSL需要在Tomcat的server.xml 中启用

按照文档,首先要启用SSL配置,我们需要生成。keystore文件。

这些是tomcat文档中提供的步骤

要在Tomcat上安装和配置SSL支持,你需要遵循以下简单步骤。

创建一个密钥存储文件,通过执行以下命令来存储服务器密钥和自签名证书的private:

windows :


%JAVA_HOME%binkeytool -genkey -alias tomcat -keyalg RSA

由于我有 Windows 系统,下面是生成。keystore文件所做的步骤


C:Program FilesJavajdk1.7.0_45bin>keytool -genkey -alias tomcat -keyalg RSA
Enter keystore password:
Re-enter new password:
What is your first and last name?
 [Unknown]: AvinashReddy
What is the name of your organizational unit?
 [Unknown]: Organization Name
What is the name of your organization?
 [Unknown]: Organization Name
What is the name of your City or Locality?
 [Unknown]: Hyderabad
What is the name of your State or Province?
 [Unknown]: AndhraPradesh
What is the two-letter country code for this unit?
 [Unknown]: AP
Is CN=AvinashReddy, OU=Organization Name, O=Organization Name, L=Hyderabad, ST=AndhraPradesh, C=AP correct?
 [no]: yes

 Enter key password for <tomcat>
 (RETURN if same as keystore password):

按照 documentation documentation我使用了密码"changeit"( 所有小写),最后一步是按"输入"键,所以在生成以下问题时,我按下了相同的密码。文件的generation

我已经在tomcat中修改了 server.xml,如下


<Connector connectionTimeout="20000" port="8083" protocol="HTTP/1.1" redirectPort="8553"/

 <Connector port="8553" protocol="HTTP/1.1" SSLEnabled="true"
 maxThreads="150" scheme="https" secure="true"
 clientAuth="false" sslProtocol="TLS"
 keystoreFile="${user.home}/.keystore" keystorePass="changeit"/>

<Connector port="8010" protocol="AJP/1.3" redirectPort="8553"/>

tomcat中重定向的缺省端口是 8443,因为我在系统上运行了 2个tomcat实例,我已经将重定向端口从 8443改为。

更改之后,我重启了 tomcat,可以访问受约束的资源。

我输入了


http://localhost:8083/SecurityApp/Beer/AddRecipe

然后这个被重定向到


https://localhost:8553/SecurityApp/Beer/AddRecipe

因为我使用了"基本"认证机制,所以提示用户输入用户名和密码。 提供了凭证之后,我就可以看到我的页面了

欢迎来到啤酒应用网站"

下面是配置tomcat提供的SSL的链接


http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html#Configuration

作者:
...