在Tomcat 中配置SSL双向认证是相当容易的,本文将介绍如何使用JDK的keytool来为Tomcat配置双向SSL认证。并实现批量生成证书 系统需求:JDK 1.8
Tomcat 7.0.76
启动命令行:
第一步:为服务器生成证书

使用keytool为Tomcat生成证书,假定目标机器的域名是localhost或者“192.168.1.121”,keystore文件存放在“D:/document/https/cftx/tomcat.keystore”,口令为“logiscn”,使用如下命令生成:

keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:/document/https/cftx/tomcat.keystore -ext san=ip:192.168.1.121 -dname "CN=cftx,OU=cftx,O=cftx,L=wuhan,ST=hubei,C=CN" -validity 3650 -storepass cftxing -keypass cftxing
ps:如果Tomcat所在服务器的域名不是“localhost”,应改为对应的域名,如www.baidu.com 或者IP地址,否则浏览器会弹出警告窗口,提示用户证书与所在域不匹配。


第二步:为客户端生成证书

下一步是为浏览器生成证书,以便让服务器来验证它。假设文件存放在D:/downloads/p12/tianli.p12,为了能将证书顺利导入至IE和Firefox,证书格式应该是PKCS12,因此,使用如下命令生成:

keytool -genkey -v -alias cftx -keyalg RSA -storetype PKCS12 -keystore D:/document/https/cftx/p12/cftx.p12 -dname "CN=cftx,OU=cftx,O=cftx,L=wuhan,ST=hubei,C=CN" -validity 3650 -storepass cftxing -keypass cftxing"

ps:-validity为有效期限,目前的设置为10年,keypass用于在导入浏览器时使用的密码,如果密码不正确,则不能正确导入到浏览器。
对应的证书库存放在“D:/document/https/cftx/p12/cftx.p12”,客户端的CN可以是任意值。

第三步:让服务器信任客户端证书

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

keytool -export -alias cftx -keystore  D:/document/https/cftx/p12/cftx.p12 -storetype PKCS12 -storepass cftxing -rfc -file D:/document/https/cftx/cert/cftx.cer

通过以上命令,客户端证书就被我们导出到“D:/document/https/cftx/cert/cftx.cer”文件了。下一步,是将该文件导入到服务器的证书库,添加为一个信任证书:

keytool -import -alias cftx -v -file D:/document/https/cftx/cert/cftx.cer -keystore D:/document/https/cftx/tomcat.keystore -storepass cftxing <myint.inf

由于在导入的过程中需要输入Y或者n在此处直接使用一个文件myint.inf代替输入,myint.inf是一个文本文件,里面的内容只有y和一个回车 
通过list命令查看服务器的证书库,我们可以看到两个输入,一个是服务器证书,一个是受信任的客户端证书:

 
第四步:配置Tomcat服务器

打开Tomcat根目录下的/conf/server.xml,找到如下配置段,修改如下:
打开注释
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    clientAuth="true" sslProtocol="TLS"
    keystoreFile="D:/document/https/cftx/tomcat.keystore" keystorePass="cftxing"
    truststoreFile="D:/document/https/cftx/tomcat.keystore" truststorePass="cftxing"
/>
其中,clientAuth指定是否需要验证客户端证书,如果该设置为“false”,则为单向SSL验证,SSL配置可到此结束。如果clientAuth设置为“true”,表示强制双向SSL验证,必须验证客户端证书。如果clientAuth设置为“want”,则表示可以验证客户端证书,但如果客户端没有有效证书,也不强制验证。

注意:protocol="HTTP/1.1",最初是protocol="org.apache.coyote.http11.Http11Protocol"这个,一直无法访问,修改为HTTP/1.1之后成功!

第五步:导入客户端证书

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

为了实现每人发放一个证书,如果重复以上的操作也可以达到目的,考虑到需要进行大量的测试,并且在不同的机器上部署,就想到使用程序自动生成命令的方法。

生成命令的程序是使用java 写的,生成命令需要预先设置如下的几项:

1.  Basedir生成的命令文件的位置,生成的命令运行后生成cer和p12格式的文件,为了区分存放,需要建立两个文件夹,因此需要与一个基本目录,

2.  生成的keyStore文件需要一个密码,为了安全起见,不同的域名的keyStore需要不同的密码。

3.  域地址,如果域地址不正确,则会在整数上发出警告。因此对于不同的域,地址是不同的。

完成以上的三个设置之后就可以生成命令了。生成的文件包括3个,全部存放在Basedir下。

1.  Myint.inf文件,仅仅用于输入内容很简单包括y 和一个回车

2.  Conf的文件,里面包括了生成的配置文件片段和一段简单的使用说明,内容如下

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    clientAuth="true" sslProtocol="TLS"
    keystoreFile="D:/document/https/cftx/tomcat.keystore" keystorePass="cftxing"
    truststoreFile="D:/document/https/cftx/tomcat.keystore" truststorePass="cftxing"
/>

使用的时候直接复制到相应的server.xml中

3.  可执行的命令文件command.bat,执行上述命令之前,需要建立两个文件夹,以便于把生成的文件存放到合适的位置,部分代码如下

第一步:为服务器生成证书

mkdir cert

mkdir p12

keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:/document/https/cftx/tomcat.keystore -ext san=ip:192.168.1.121 -dname "CN=cftx,OU=cftx,O=cftx,L=wuhan,ST=hubei,C=CN" -validity 3650 -storepass cftxing -keypass cftxing

第二步:为客户端生成证书

keytool -genkey -v -alias cftx -keyalg RSA -storetype PKCS12 -keystore D:/document/https/cftx/p12/cftx.p12 -dname "CN=cftx,OU=cftx,O=cftx,L=wuhan,ST=hubei,C=CN" -validity 3650 -storepass cftxing -keypass cftxing"

第三步:让服务器信任客户端证书

keytool -export -alias cftx -keystore  D:/document/https/cftx/p12/cftx.p12 -storetype PKCS12 -storepass cftxing -rfc -file D:/document/https/cftx/cert/cftx.cer

keytool -import -alias cftx -v -file D:/document/https/cftx/cert/cftx.cer -keystore D:/document/https/cftx/tomcat.keystore -storepass cftxing <myint.inf

Tomcat配置HTTPS方式生成安全证书相关推荐

  1. tomcat配置https(jks)证书,启动后提示Keystore was tampered with, or password was incorrect

    在tomcat配置https(jks)证书,启动后端口正常打开,但是web服务无法访问,日志提示:Keystore was tampered with, or password was incorre ...

  2. Tomcat配置https方式访问

    1.准备安全证书 获得安全证书有两种方式:一种方式是到权威机构申购CA证书,还有一种方式是创建自我签名的证书.本文以自签名证书为例,使用SUN公司提供的证书制作工具keytool制作自签证书,JDK版 ...

  3. Tomcat配置https方式访问__001

    1.准备安全证书 获得安全证书有两种方式:一种方式是到权威机构申购CA证书,还有一种方式是创建自我签名的证书.本文以自签名证书为例,使用SUN公司提供的证书制作工具keytool制作自签证书,JDK版 ...

  4. tomcat配置https以及http强制跳转https(如何生成证书)

    https介绍: HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版. ...

  5. Tomcat 配置https证书

    TTPS 是安全套接字层超文本传输协议,在http 的基础上加入了 SSL协议,需要使用证书来校验身份. HTTPS协议是由SSL+HTTP协议构建的可进行加密传输.身份认证的网络协议,比http协议 ...

  6. Tomcat8配置Https协议,Tomcat配置Https安全访问,Tomcat Https配置

    Tomcat8配置Https协议,Tomcat配置Https安全访问,Tomcat Https配置 ============================== ©Copyright 蕃薯耀 2017 ...

  7. JDK和tomcat配置HTTPS协议

    内容来自百度内容转载 https原理及tomcat配置https方法 1.为服务器生成证书 "运行"控制台,进入%JAVA_HOME%/bin目录,使用如下命令进入目录: cd & ...

  8. 阿里云服务器配置Tomcat 配置https

    阿里云服务器配置Tomcat 配置https 阿里云服务器配置Tomcat 配置https 1.登录云控制台选择云主机.网络与安全组.安全组配置.规则配置 对端口80.443进行设置.授权对象0.0. ...

  9. java ca认证_java编程方式生成CA证书

    下面是java编程方式生成CA证书的代码,使用的是BC的provider.生成CA证书与生成普通证书的区别是:1,生成CA证书时,issuer和subject一致:2,在ContentSigner.b ...

最新文章

  1. 高并发:RocketMQ 削峰实战!
  2. python for-Python for windows官方版
  3. vc调试 main的参数
  4. AI学习与进阶实践-基于行业价值的AI学习与进阶路径
  5. c++ char*初始化_C开发实战-深入理解指针
  6. idea jdk编译报错解决办法
  7. 设计自己的高并发架构
  8. 3d相册 html 代码_女朋友生日,我送她网页相册,她感动的哭了(文中有惊喜)...
  9. Linux禁止root用户远程登陆
  10. Cinemachine教程 | Unity中如何快速制作镜头晃动?
  11. python跟php服务器对比_python学习笔记一和PHP的一些对比
  12. paip.项目文件同步-分支和合并总结V2012.9.23
  13. python识别图片文字、并返回文字坐标_简易OCR图片文字识别工具的进一步改进(增加显示图片的功能)...
  14. cad,max,revit,Civil ,InventorNavisworks 卸载清理工具
  15. 如何用Java打开PDF文件
  16. AAAI-2021-RE-Progressive Multitask Learning with Controlled Information Flow for Joint Entity and Re
  17. Yolov5学习笔记(1)——训练出自己的模型
  18. wnmp mysql 密码_WNMP(Windows + Nginx + PHP + MySQL) 安装
  19. 深恶痛绝的No mapping found for HTTP request with URI
  20. 大作都是怎么诞生的,游戏开发全过程揭秘 !零基础小白入门须知

热门文章

  1. 专利一通回案实审是什么
  2. 电力电子变压器。 整流级采用级联H桥多电平拓扑,由三个H桥模块级联
  3. 555555555555555555555555555555555555555555555。。。。。。。。。。。。。。。。。。
  4. if-else 语句优雅处理
  5. [20170411]bbed删除记录的恢复.txt
  6. SpringMVC笔记-尚硅谷(杨博超)
  7. Qt CEF融合技QCefView使用教程
  8. QT实现PDF打印文字+图片。亲测可用!!!
  9. 模式识别—贝叶斯决策理论
  10. PHP zend解密工具 PHP Zend-guard-decode