关于如何使用Tomcat服务器实现双向SSL认证的文章很早就有了, 比较实用的文章可以看看 配置Tomcat 4使用SSL, 使用 google 还可以搜索到很多类似的文章.
但是现在看来, 这些文章中提到的方法均有不足之处, 一是只说明了在 Tomcat 4 服务器上的配置方法, 与现在普遍使用的 Tomcat 5 系列的配置方法有一定的差异, 其次, 这些文章中的方法大多是作为一种实验性的操作介绍, 如果用于实际Web服务器的产生证书环境, 还是会存在一些问题的:
- 生成的CA私钥(ca-key.pem)以及自签名根证书(ca-cert.pem)均为没有加密的明文, 由于一旦在服务器发布, 以及客户端证书发布之后, 根证书是不能随便修改的, 那么没有加密的CA私钥以及自签名根证书保存时就会存在安全性问题(如果别人得到你的CA根证书, 他就可以替你生成客户端证书了);
- 生成的服务器端证书(server_keystore)不包括信任的CA根证书, 信任的CA根证书被导入到JSSE的默认位置, 如果进行证书操作的计算机和真正运行Web应用的不是同一台计算机, 那么在安装服务器端证书的时候, 还需要在服务器上将CA根证书导入JSSE默认位置;
- 生成客户端证书的过程比较烦琐, 不方便批量进行客户端证书的生成;
- 没有统一的配置文件, 生成证书的过程中需要执行相当多的命令, 可重复性差, 出错的可能性比较大.
针对以上的问题, 在参考"配置Tomcat 4使用SSL"这篇文章的基础上, 整理出由4个批处理命令和一个配置文件组成的证书工具包, 这个工具包考虑到在实际Web服务器环境下产生证书的需求, 克服了上面提到的那些问题. 详细请看链接: 配置适用于正式使用环境下的Tomcat Web服务器双向SSL认证 , 链接中包括了相关文件的下载