Tomcat简单配置实现SSL单向认证

项目中需要实现SSL,因为是第一次研究,为防备日后遗忘,特做如下备忘。同时希望对没有做过此配置的同学们有一点帮助,整个过程非常简单,仅需要以下几步就可以实现。

 

需要环境:

JDK1.5 (1.4以下版本需要单独下载证书生成工具)

TOMCAT

 

一. 生成证书

用JDK自带的证书生工具生成证书

命令行模式下设置路径为 %java_home%/bin,使用如下命令

 

keytool -genkey -alias tomcat_server -validity 365 -keyalg RSA -keysize 1024 -keypass changeit -storepass changeit -dname "cn=localhost, ou=department, o=company, l=Beijing, st=Beijing, c=CN" -keystore server/server_keystore
    
     -genkey[产生密钥对]

     -alias[密钥对别名]

     -validity[密钥有效期]

     -keyalg[密钥算法参数]

     -keysize[密钥位数]

     -keypass[密钥保护密码]

     -storepass[存储密码]

     -dname[别名相关附加信息]

     -keystore[密钥存储文件路径]
    
     [注] -alias后的tomcat_server是密钥对的名字可替换为自己需要的名字;
     -keypass和-storepass后的changeit为保护密码必须6位,将其替换为你的密码即可;
     -dname为包含的server信息。其中cn是服务器的名字一定要和WEB服务器中设置的相同。

 

 

编辑tomcat的设置文件server.xml,去掉下面SSL Connector的注释,修改为如下:


  <!-- Define an SSL HTTP/1.1 Connector on port 8443 -->

  <Connector    port="8443" minProcessors="5" maxProcessors="75"
          enableLookups="true"
          acceptCount="10" debug="0" scheme="https" secure="true"
          clientAuth="false" keystoreFile="tomcat.keystore"  keystorePass ="密码"
          keystorePass="tomcat" protocol="TLS"/>
  </Connector>


keystoreFile的路径是TOMCAT的安装路径下的tomcat.keystore(使用keytool生成的证书库文件)

二. 配置Tomcat


主要配置Tomcat安装目录conf目录下server.xml文件,其中已经有相关代码,只是被注释了,还原出来就可以了。

我使用的Tomcat 5.5,以此为例

<Connectorport="8443"
maxThreads="150"minSpareThreads="25"maxSpareThreads="75"
enableLookups="false"disableUploadTimeout="true"
acceptCount="100"debug="0"scheme="https"secure="true">
clientAuth="false"keystoreFile="server.keystore" keystorePass="password" protocol="SSL"
</Connector>

 

常用的设置属性如下:
clientAuth
如果想要Tomcat为了使用这个socket而需求所有SSL客户出示一个客户证书,置该值为true。 
keystoreFile
如果创建的keystore文件不在Tomcat认为的缺省位置(一个在Tomcat运行的home目录下的叫.keystore的文件),则加上该属性。能指定一个绝对路径或依赖$CATALINA_BASE环境变量的相对路径。
keystorePass
如果使用了一个和Tomcat预期不同的keystore(和证书)密码,则加入该属性。 
keystoreType
如果使用了一个PKCS12 keystore,加入该属性。有效值是JKS和PKCS12。 
sslProtocol
socket使用的加密/解密协议。如果使用的是Sun的JVM,则不建议改动这个值。据说IBM的1.4.1版的TLS协议的实现和一些流行的浏览器不兼容。这种情况下,使用SSL。 
ciphers
此socket允许使用的被逗号分隔的密码列表。缺省情况下,能使用所有可用的密码。 
algorithm
使用的X509算法。缺省为Sun的实现(SunX509)。对于IBM JVMS应该使用ibmX509。对于其他JVM,参考JVM文件取正确的值。 
truststoreFile
用来验证客户证书的TrustStore文件。 
truststorePass
访问TrustStore使用的密码。缺省值是keystorePass。 
truststoreType
如果使用一个不同于正在使用的KeyStore的TrustStore格式,加入该属性。有效值是JKS和PKCS12。 

 

完成!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值