甜思思 发表于 2017-1-20 11:05:19

Tomcat的安全配置

  什么是Tomcat?
 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,目前最新版本是6.0.18(截止到2008-08-27)。

  Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。

Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

这里的诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。

II如何查看Tomcat 的版本?

看它的日志catalina.out
注意红色部分
2006-6-12 15:31:53 org.apache.coyote.http11.Http11Protocol init
ÐÅÏ¢: Initializing Coyote HTTP/1.1 on http-8080
2006-6-12 15:31:53 org.apache.catalina.startup.Catalina load
ÐÅÏ¢: Initialization processed in 3687 ms
2006-6-12 15:31:54 org.apache.catalina.core.StandardService start
ÐÅÏ¢: Starting service Catalina
2006-6-12 15:31:54 org.apache.catalina.core.StandardEngine start
ÐÅÏ¢: Starting Servlet Engine: Apache Tomcat/5.0.28
2006-6-12 15:31:54 org.apache.catalina.core.StandardHost start
ÐÅÏ¢: XML validation disabled
2006-6-12 15:31:54 org.apache.catalina.core.StandardHost getDeployer
ÐÅÏ¢: Create Host deployer for direct deployment ( non-jmx )
2006-6-12 15:31:54 org.apache.catalina.core.StandardHostDeployer install
ÐÅÏ¢: Processing Context configuration file URL file:/opt/wondertek/jakarta-tomcat-5


IIITomcat 得安全配置
1.下载http://www.blogcn.com/images/aurl.gifhttp://www.eu.apache.org/dist/jakarta/tomcat-5/
这里注意,在jakarta-tomcat-5.0.28.exe以前是有默认的admin模块,在jakarta-tomcat-5.5.9.exe则没有安装默认的admin模块,这时http://www.blogcn.com/images/aurl.gifhttp://127.0.0.1:8080/admin打开时则会出现
Tomcat'sadministrationwebapplicationisnolongerinstalledbydefault.Downloadandinstallthe"admin"packagetouseit.
因此我们现在需要下载"admin"package包
把jakarta-tomcat-5.5.x.zip与jakarta-tomcat-5.5.x-compat.zip与jakarta-tomcat-5.5.x-admin.zip
三个文件解压在同一个目录中
(如果使用jdk1.4,才需要compat.zip用jdk1.5就可以免了这个。)

2.修改jakarta-tomcat-5.5.x/conf/tomcat-users.xml.
添加管理员账号lizongbo,密码为lizongbopass.
新xml如下:
<?xmlversion='1.0'encoding='utf-8'?>
<tomcat-users>
<rolerolename="tomcat"/>
<rolerolename="role1"/>
<rolerolename="manager"/>
<rolerolename="admin"/>
<userusername="tomcat"password="tomcat"roles="tomcat"/>
<userusername="role1"password="tomcat"roles="role1"/>
<userusername="both"password="tomcat"roles="tomcat,role1"/>
<userusername="lizongbo"password="lizongbopass"roles="admin,manager"/>
</tomcat-users>

有时在%CATALINA_HOME%/server/webapps/admin/WEB-INF/web.xml里面也要做些修改


<!--Securityisactiveonentiredirectory-->
<security-constraint>
<display-name>TomcatServerConfigurationSecurityConstraint</display-name>
<web-resource-collection>
<web-resource-name>ProtectedArea</web-resource-name>
<!--Definethecontext-relativeURL(s)tobeprotected-->
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.do</url-pattern>
<url-pattern>*.html</url-pattern>
</web-resource-collection>
<auth-constraint>
<!--Anyonewithoneofthelistedrolesmayaccessthisarea-->
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>

<!--Loginconfigurationusesform-basedauthentication-->
<login-config>
<auth-method>FORM</auth-method>
<realm-name>TomcatServerConfigurationForm-BasedAuthenticationArea</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>

<!--Securityrolesreferencedbythiswebapplication-->
<security-role>
<description>
TherolethatisrequiredtologintotheAdministrationApplication
</description>
<role-name>admin</role-name>
</security-role>
无论是Authetication(身份验证还是Authorization(权限管控都只有设置相关的adminROLE,当你想要新增或修改相关的AA,就必须修改这一个文件,来符合你的环境.
3.修改jakarta-tomcat-5.5.x/conf/server.xml来解决编码问题。
(给Connector添加URIEncoding参数,参考http://www.blogcn.com/images/aurl.gifhttp://blog.csdn.net/darkxie/archive/2004/10/25/TOMCATAPP.aspx)
(可以设置成GB18030)
<Connectorport="8080"
maxThreads="150"minSpareThreads="25"maxSpareThreads="75"
enableLookups="false"redirectPort="8443"acceptCount="200"
connectionTimeout="20000"disableUploadTimeout="true"URIEncoding="GBK"
compression="on"compressionMinSize="2048"
noCompressionUserAgents="gozilla,traviata"
compressableMimeType="text/html,text/xml"/>

<Connectorport="8009"
enableLookups="false"redirectPort="8443"protocol="AJP/1.3"URIEncoding="GBK"/>


4.启用支持gzip压缩.
(http://www.blogcn.com/images/aurl.gifhttp://www.linuxaid.com.cn/forum/showdoc.jsp?l=1&i=81169)
添加下列属性
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla,traviata"
compressableMimeType="text/html,text/xml"

5.设置虚拟主机。
在jakarta-tomcat-5.5.x/下建立文件夹vhost/www.mydomain.com。
然后修改jakarta-tomcat-5.5.x/conf/server.xml

<EnginedefaultHost="localhost"name="Catalina">
<HostappBase="vhost/www.mydomain.com"name="http://www.blogcn.com/images/aurl.gifhttp://www.mydomain.com/">
</Host>
<HostappBase="webapps"name="localhost">
</Host>
<RealmclassName="org.apache.catalina.realm.UserDatabaseRealm"/>
</Engine>

6.添加数据库驱动,更新mail.jar和actiovation.jar
复制mysql-connector-java-3.0.16-ga-bin.jar,pg74.215.jdbc3.jar到jakarta-tomcat-5.5.x/common/lib/
还有javamail1.3.2的mail.jar,jaf-1_0_2的activation.jar
msSQl2000JDBCsp3,msbase.jar,msutil,jar,mssqlserver.jar


7.配置SSL
参考http://www.blogcn.com/images/aurl.gifhttp://jakarta.apache.org/tomcat/tomcat-5.5-doc/ssl-howto.html
D:/j2sdk1.4.2_06/bin>%JAVA_HOME%/bin/keytool-genkey-aliastomcat-keyalgRSA
输入keystore密码:lizongbossl
您的名字与姓氏是什么?
:tomcat5.5.x
您的组织单位名称是什么?
:jakarta
您的组织名称是什么?
:apache
您所在的城市或区域名称是什么?
:hzcity
您所在的州或省份名称是什么?
:gdp
该单位的两字母国家代码是什么
:CN
CN=tomcat5.5.x,OU=jakarta,O=apache,L=hzcity,ST=gdp,C=CN正确吗?
[否]:y

输入<tomcat>的主密码
(如果和keystore密码相同,按回车):

(必须密码一致,因此直接回车)
然后再把userhome(例如:C:/DocumentsandSettings/lizongbo/)下的.keystore复制到
tomcat的conf/目录下。
(例如:D:/jakarta-tomcat-5.5.x/conf/.keystore
配置jakarta-tomcat-5.5.x/conf/server.xml
加上
<Connectorport="8443"
maxThreads="150"minSpareThreads="25"maxSpareThreads="75"
enableLookups="false"disableUploadTimeout="true"
acceptCount="100"scheme="https"secure="true"
clientAuth="false"sslProtocol="TLS"
keystoreFile="conf/.keystore"
keystorePass="lizongbossl"><!--与先前设置的密码一致-->
</Connector>
8.禁止文件目录列表,
修改jakarta-tomcat-5.5.x/conf/web.xml,把listing设置为false

<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

9.指定了自己的javaEncoding
(参考http://www.blogcn.com/images/aurl.gifhttp://gceclub.sun.com.cn/staticcontent/html/sunone/app7/app7-dg-webapp/ch6/ch6-4.html

<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>javaEncoding</param-name>
<param-value>GB18030</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
10.添加rar,iso等的mime-type映射
避免在浏览器里直接打开。
<mime-mapping>
<extension>mht</extension>
<mime-type>text/x-mht</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rar</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>iso</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ape</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>rmvb</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ico</extension>
<mime-type>image/x-icon</mime-type>
</mime-mapping>
10.1对html静态页面设置编码
<!--修改下面两行以支持静态超文本的自动编码
-->
<mime-mapping>
<extension>htm</extension>
<mime-type>text/html;charset=gb2312</mime-type>
</mime-mapping>
<mime-mapping>
<extension>html</extension>
<mime-type>text/html;charset=gb2312</mime-type>
</mime-mapping>
</web-app>

11.添加welcome-file-list,并调整顺序。
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
页: [1]
查看完整版本: Tomcat的安全配置