为嵌入的Tomcat servlet容器配置基于SSL的HTTP的方法有许多,区别在于使用是否用JBoss特有的connector socket factory, 它能够从JBossSX SecurityDomain获得JSSE的服务器证书信息. 它需要使用org.jboss.security.plugins.JaasSecurityDomain MBean建立一个SecurityDomain. 下面的server.xml 配置文件展示了使用这种方法仅建立SSL connector的配置:
<Server>
<Service name="jboss.web" className="org.jboss.web.tomcat.tc5.StandardService">
<Connector port="8080" address="${jboss.bind.address}" maxThreads="150"
minSpareThreads="25" maxSpareThreads="75" enableLookups="false"
redirectPort="443" acceptCount="100" connectionTimeout="20000"
disableUploadTimeout="true"/>
<Connector port="443" address="${jboss.bind.address}" maxThreads="100"
minSpareThreads="5" maxSpareThreads="15" scheme="https"
secure="true" clientAuth="false"
keystoreFile="${jboss.server.home.dir}/conf/chap8.keystore"
keystorePass="rmi+ssl" sslProtocol="TLS"/>
<Engine name="jboss.web" defaultHost="localhost">
<Realm
className="org.jboss.web.tomcat.security.JBossSecurityMgrRealm"
certificatePrincipal="org.jboss.securia.Log4jLogger"
verbosityLevel="WARNING" category="org.jboss.web.localhost.Engine"/>
<Host name="localhost" autoDeploy="false" deployOnStartup="false"
deployXML="false">
<DefaultContext cookies="true" crossContext="true" override="true"/>
</Host>
</Engine>
</Service>
</Server>
该配置包含了一个JaasSecurityDomain, 但是因为该描述信息没有作为包含chap8.keystore的SAR包进行部署, 你需要将chap8.keystore拷贝到server/default/conf目录. 你可以使用HTTPS通过URL: https://localhost/jmx-console访问 JMX console web 应用来测试该配置 .
注意: 如果你的运行系统需要特殊权限来开通1024以下的端口,可以方便地将端口设置为1024以上的数字,因此端口8443经常被使用.
配置的属性信息如下:
algorithm: 表示对证书编码时使用的算法. 如果不指定,缺省值为 SunX509.
className: 表示SSL server socket factory 实现类的全称. 在这里必须指定 org.apache.coyote.tomcat4.CoyoteServerSocketFactory. 使用其它的socket factory不会出现错误,但是服务器的socket将不会使用SSL.
clientAuth: 如果将该属性设置为true,SSL协议栈就会在接收客户连接之前对客户的证书进行证书链验证。缺省值为false, 在这种情况下将不需要证书链连,除非客户请求被CLIENT-CERT验证安全限制保护的资源。.
keystoreFile: 表示需要加载的服务器证书存储的文件路径. 缺省情况下, 证书的文件路径是操作系统Tomcat运行home目录下的.keystore文件.
keystorePass: 表示从指定的keystore文件中访问服务器证书时需要使用的密码. 缺省值为 changeit.
keystoreType: 指定用于存储服务器证书的keystore文件类型. 如果不指定, 缺省值为 JKS.
protocol: 指定SSL协议使用的版本. 如果不指定, 缺省值为 TLS.
需要注意的是,如果试着使用自己签发的证书通过HTTPS访问进行SSL配置的测试, 浏览器应该会显示一个警告对话框,表示不能信任签发服务器证书的证书机构 . 例如, 当测试第一个配置例子时,, IE 5.5 就会显示提示服务器证书信息的初始安全警告对话框 Figure 4.1, “The Internet Explorer 5.5 security alert dialog.”. Figure 4.2, “The Internet Explorer 5.5 SSL certificate details dialog.” . 这个警告信息非常重要,因为任何人都可以随心所欲地签发包含任意信息的证书 . 只有通过确认服务器证书是否为信任的第三方签发,才能确保所连接的服务器和它自己代表的机构一致。.