今天做了tomcat一些入门的培训,本文为培训后的作业练习。
Tomcat下SSL配置(单向认证)
证书认证原理之前培训讲过,就不再重复,tomcat下有自带的证书工具keytool,命令写法和openssl有一些不一样,主要讲不一样的地方。
我们在httpd下用openssl制作证书,配置单项认证,主要需要两套证书及密钥:
- 自签的CA证书root.crt
- 自签的CA证书颁发的服务器证书server.crt,以及私钥server.key
在tomcat中,命令和逻辑不太相同,server的证书和私钥合起来为一个keystore,所以在openssl制作好签发的服务器证书server.crt后,进行如下操作,先通过server.crt导出.p12文件
openssl pkcs12 -export -in /tmp/ca/server.crt -inkey /tmp/ca/server.key -out /tmp/ca/server.p12 -name "server"
根据命令提示,输入server.key密码,创建p12密码。
然后制作server.keystore文件。
keytool -importkeystore -v -srckeystore /tmp/ca/server.p12 -srcstoretype pkcs12 -srcstorepass 123456 -destkeystore /tmp/ca/server.keystore -deststoretype jks -deststorepass 123456
这里srcstorepass后面的123456为server.p12的密码deststorepass后的123456为keyStore的密码。
之后在server.xml里配置一下
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/usr/local/tomcat/conf/2224.keystore" keystorePass="lym1993512"
truststoreFile="/usr/local/tomcat/conf/Luroot.truststore" truststorePass="lym1993512" />
上面是我的虚拟机里的SSL配置,有关SSL的配置的练习大概就是这些。
tomcat-users.xml文件配置
这个文件主要是用来配置tomcat manager,首先放一下我的tomcat-usrs.xml文件作为实例,给大家讲解。
<tomcat-usrs>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="luyiming" password="lym1993512" roles="manager-gui"/>
<user username="both" password="lym1993512" roles="manager-script,manager-gui"/>
<user username="ben" password="lym1993512" roles="manager-script"/>
</tomcat-users>
配置中的role rolename是规定好的,有四个角色,分别为:
- manager-gui:允许访问html接口(即URL路径为/manager/html/*)
- manager-script:允许访问纯文本接口(即URL路径为/manager/text/*)
- manager-jmx:允许访问JMX代理接口(即URL路径为/manager/jmxproxy/*)
- manager-status:允许访问Tomcat只读状态页面(即URL路径为/manager/status/*)
之后定义好username和password,我们就可以通过/manager页面进行管理操作了。
还有一点需要注意,tomcat7以后,安全机制要求只能默认本机访问tomecat manager,远程访问需要在/conf/Catalina/localhost下配置contest.xml文件,来允许指定ip可以访问manager页面。
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^192.168.*$" />
</Context>
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^192.168.*$" />
</Context>
编写时可以使用正则表达式,来指定ip段。