Apache tomcat相关学习实践(ssl配置,tomcat-users.xml)

今天做了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段。