在Tomcat 6中配置SSL双向认证是相当容易的,本文将介绍如何使用JDK的keytool来为Tomcat配置双向SSL认证。并实现批量生成证书 系统需求:JDK 5.0
Tomcat 6.0.16
启动命令行:
第一步:为服务器生成证书
使用keytool为Tomcat生成证书,假定目标机器的域名是localhost或者“192.168.1.1”,keystore文件存放在“D:/downloads/tomcat.keystore”,口令为“logiscn”,使用如下命令生成:
keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:/downloads/tomcat.keystore -dname "CN=192.168.1.1,OU=logiscn,O=logis,L=beijing,ST=beijing,C=CN" -validity 3650 -storepass logiscn -keypass logiscn  
如果Tomcat所在服务器的域名不是“localhost”,应改为对应的域名,如[url]www.baidu.com[/url] 或者IP地址,否则浏览器会弹出警告窗口,提示用户证书与所在域不匹配。 
第二步:为客户端生成证书
下一步是为浏览器生成证书,以便让服务器来验证它。假设文件存放在D:/downloads/p12/tianli.p12,为了能将证书顺利导入至IE和Firefox,证书格式应该是PKCS12,因此,使用如下命令生成:
keytool -genkey -v -alias tianli -keyalg RSA -storetype PKCS12 -keystore D:/downloads/p12/tianli.p12 -dname "CN=tianli,OU=logiscn,O=logis,L=beijing,ST=beijing,C=CN" -validity 3650 -storepass tianli -keypass tianli" 
-validity为有效期限,目前的设置为10年,keypass用于在导入浏览器时使用的密码,如果密码不正确,则不能正确导入到浏览器。
对应的证书库存放在“D:/downloads/p12/tianli.p12”,客户端的CN可以是任意值。
第三步:让服务器信任客户端证书

由于是双向SSL认证,服务器必须要信任客户端证书,因此,必须把客户端证书添加为服务器的信任认证。由于不能直接将PKCS12格式的证书库导入,我们必须先把客户端证书导出为一个单独的CER文件,使用如下命令:

keytool -export -alias tianli -keystore  D:/downloads/p12/tianli.p12 -storetype PKCS12 -storepass tianli -rfc -file  D:/downloads/cert/tianli.cer

通过以上命令,客户端证书就被我们导出到“D:/downloads/cert/tianli.cer r”文件了。下一步,是将该文件导入到服务器的证书库,添加为一个信任证书:
keytool -import -alias tianli -v -file D:/downloads/cert/tianli.cer -keystore D:/downloads/tomcat.keystore -storepass logiscn <myint.inf
由于在导入的过程中需要输入Y或者n在此处直接使用一个文件myint.inf代替输入,myint.inf是一个文本文件,里面的内容只有 y和一个回车 
通过list命令查看服务器的证书库,我们可以看到两个输入,一个是服务器证书,一个是受信任的客户端证书: 
第四步:配置Tomcat服务器

打开Tomcat根目录下的/conf/server.xml,找到如下配置段,修改如下:
打开注释
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    clientAuth="true" sslProtocol="TLS"
    keystoreFile=" D:/downloads/tomcat.keystore " keystorePass="logiscn "
    truststoreFile=" D:/downloads/tomcat.keystore " truststorePass="logiscn "
/>

其中,clientAuth指定是否需要验证客户端证书,如果该设置为“false”,则为单向SSL验证,SSL配置可到此结束。如果clientAuth设置为“true”,表示强制双向SSL验证,必须验证客户端证书。如果clientAuth设置为“want”,则表示可以验证客户端证书,但如果客户端没有有效证书,也不强制验证。

第五步:导入客户端证书

如果设置了clientAuth="true",则需要强制验证客户端证书。双击“D:/downloads/p12/tianli.p12”即可将证书导入至IE:导入证书后,即可启动Tomcat,用IE进行访问。输入[url]https://IPAdress/[/url]      ,https协议默认的访问端口为443。以上所写大都为借鉴网上的资料。

为了实现每人发放一个证书,如果重复以上的操作也可以达到目的,考虑到需要进行大量的测试,并且在不同的机器上部署,就想到使用程序自动生成命令的方法。
生成命令的程序是使用java 写的,生成命令需要预先设置如下的几项:
1.  Basedir生成的命令文件的位置,生成的命令运行后生成cer和p12格式的文件,为了区分存放,需要建立两个文件夹,因此需要与一个基本目录,
2.  生成的keyStore文件需要一个密码,为了安全起见,不同的域名的keyStore需要不同的密码。
3.  域地址,如果域地址不正确,则会在整数上发出警告。因此对于不同的域,地址是不同的。
完成以上的三个设置之后就可以生成命令了。生成的文件包括3个,全部存放在Basedir下。
1.  Myint.inf文件,仅仅用于输入内容很简单包括y 和一个回车
2.  Conf的文件,里面包括了生成的配置文件片段和一段简单的使用说明,内容如下
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
       maxThreads="150" scheme="https" secure="true"
       clientAuth="true" sslProtocol="TLS"
       keystoreFile="D:/downloads/tomcat.keystore"
        keystorePass="logiscn"
       truststoreFile="D:/downloads/tomcat.keystore"
        truststorePass="logiscn"/>
使用的时候直接复制到相应的server.xml中
3.  可执行的命令文件command.bat,执行上述命令之前,需要建立两个文件夹,以便于把生成的文件存放到合适的位置,部分代码如下mkdir cert
 mkdir p12
 keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:/downloads/tomcat.keystore -dname "CN=localhost,OU=logiscn,O=logis,L=beijing,ST=beijing,C=CN" -validity 3650 -storepass logiscn -keypass logiscn
  rem 为 tianli 生成证书
 rem 第二步:为客户端生成证书
 keytool -genkey -v -alias tianli -keyalg RSA -storetype PKCS12 -keystore D:/downloads/p12/tianli.p12 -dname "CN=tianli,OU=logiscn,O=logis,L=beijing,ST=beijing,C=CN" -validity 3650 -storepass tianli -keypass tianli"
 rem 第三步:让服务器信任客户端证书
 keytool -export -alias tianli -keystore  D:/downloads/p12/tianli.p12 -storetype PKCS12 -storepass tianli -rfc -file  D:/downloads/cert/tianli.cer"
 keytool -import -alias tianli -v -file D:/downloads/cert/tianli.cer -keystore D:/downloads/tomcat.keystore -storepass logiscn <myint.inf
Java程序的实现见附件,这样双击执行程序就可以批量生成证书。相当方便。

附件:http://down.51cto.com/data/2350350

本文转自凌辉博客51CTO博客,原文链接http://blog.51cto.com/tianli/90101如需转载请自行联系原作者

lili00okok

为tomcat6批量生成安全证书相关推荐

  1. java使用itextpdf生成PDF批量打印荣誉证书(指定位置输出文字)

    最近公司项目有个需求,批量打印荣誉证书,一开始尝试过传统的网络打印,控件打印,JS调用浏览器打印方法,遇到各种问题,比如定位不准,分页问题,​​缩放问题等.然后就自己研究,整理了一套打印方案,项目已测 ...

  2. Java根据PDF表单模板和CSV表格批量生成证书等文件

    最近遇到需求,需要批量生成800+个证书,所以写了一个简单个工具,原理就是PDF表单,读取csv表格中的数据,然后批量生成,比较通用的一个工具,所以分享一下 import com.itextpdf.t ...

  3. vba根据内容调整word表格_【邮件合并】不会VBA也能批量生成Word封面

    一.『问题引入』: 手里有一个这样的Excel表格,还有一个Word文档模板.我们要把这个Excel表格中的信息依次写到Word模板.一行Excel信息生成一页文档. 存储信息的Excel表格 需要填 ...

  4. JDK自带工具keytool生成ssl证书(web服务https配置)

    原文:https://www.cnblogs.com/zhangzb/p/5200418.html 前言: 因为公司项目客户要求使用HTTPS的方式来保证数据的安全,所以木有办法研究了下怎么生成ssl ...

  5. Tomcat配置HTTPS方式生成安全证书

    在Tomcat 中配置SSL双向认证是相当容易的,本文将介绍如何使用JDK的keytool来为Tomcat配置双向SSL认证.并实现批量生成证书 系统需求:JDK 1.8 Tomcat 7.0.76 ...

  6. JDK自带工具keytool生成ssl证书

    前言: 因为公司项目客户要求使用HTTPS的方式来保证数据的安全,所以木有办法研究了下怎么生成ssl证书来使用https以保证数据安全. 百度了不少资料,看到JAVA的JDK自带生成SSL证书的工具: ...

  7. 生成批量缩率图_Windows系统实战之:批量生成某类型文件

    在我们的日常工作中,因工作需要批量生成一批文件,今天我就给大家介绍一下如何批量生成我们想要的文件,以文本文件为例. 需要用到的程序有: 1.Microsoft Excel(WPS表格也可以) 2.记事 ...

  8. 将表里的数据批量生成INSERT语句的存储过程 增强版

    原文:将表里的数据批量生成INSERT语句的存储过程 增强版 将表里的数据批量生成INSERT语句的存储过程 增强版 有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的 ...

  9. R语言使用fs包的path_wd函数基于自定义文件路径规则,批量生成多个文件或者文件夹对应的绝对(absolute)文件路径(constructs absolute path)

    R语言使用fs包的path_wd函数基于自定义文件路径规则,批量生成多个文件或者文件夹对应的绝对(absolute)文件路径(constructs an absolute path from the ...

最新文章

  1. 利用SurfaceView显示正弦曲线,仿造示波器
  2. 「二本生逆袭」引知乎热议,读博后三年两次发Nature,第一学历有那么重要吗?...
  3. 紧随Java 16,Spring Framework 5.3.5 发布:涵盖JDK 16的支持!
  4. Cordova error:npm install -g ios-deploy
  5. python如何导入txt文件-python如何导入txt数据库?
  6. Leaflet中使用Leaflet.AnimatedMarker插件实现要素轨迹移动
  7. 阶段总结:8.09-8.18 十日模拟
  8. xmpp muc 群聊协议 3
  9. empinfo Oracle数据库,Oracle:其他数据库对象
  10. 软件开发,维护与支持的困惑
  11. 继续SecureString
  12. 键盘上的prtsc,scrlk,pause键作用
  13. Matlab查找图像块在原图中的位置
  14. 妇产科护理学复习重点归纳、试题及答案
  15. 工作中如果一直被领导忽略,你会怎么办?
  16. 网络系统集成实习——第一天——2017.9.6
  17. 再谈 共轭方向法/Conjugate Direction Method In Optimization
  18. 如何在网页中加入图片
  19. android跑马灯效果横向,Android自定义View实现纵向跑马灯效果详解
  20. 计算机网络基础总结(超全)

热门文章

  1. Java程序调用ssh, scp, sftp
  2. 查看远端的端口是否通畅3个简单实用案例!
  3. VS2010中添加第三方库目录VC++ Directories
  4. 《Programming Ruby 中文版第二版》P577页singleton_method_undefined方法说明有点问题
  5. SaaS加速器 I 商业中心:提供商业助力 共享商业成功
  6. 聊聊flink的AscendingTimestampExtractor
  7. 必看,经典sql面试题(学生表_课程表_成绩表_教师表)
  8. Quick-cocos2d-x3.3 Study (一) --------- 创建一个UI标签
  9. curl重写php file_get_contents
  10. 恭贺《构建高可用Linux服务器》荣获几项殊荣