tomcat+jdk的keytool生成证书 配置https

可能原因

诸如用户名、密码和信用卡号之类的敏感输入字段未经加密即进行了传递

技术描述

在应用程序测试过程中,检测到将未加密的登录请求发送到服务器。由于登录过程中所使用的部分输入字段(例如:用户名、密码、电子邮件地址、社会安全号等)是个人敏感信息,因此建议通过加密连接(例如 SSL)将其发送到服务器。

任何以明文传给服务器的信息都可能被窃,稍后可用来电子欺骗身份或伪装用户。

此外,若干隐私权法规指出,用户凭证之类的敏感信息一律以加密方式传给 Web 站点。

 

解决方案

Tomcat配置SSL加密的方式可以解决这个问题,这种方案需要生成证书文件,配置到Tomcat中。

证书类型:

一、利用jdk和Tomcat手动生成免费证书:

command命令:

运行:%JAVA_HOME%\bin\keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "存放路径"

 

属 性

描  述

clientAuth

如果设为true,表示Tomcat要求所有的SSL客户出示安全证书,对SSL客户进行身份验证

keystoreFile

指定keystore文件的存放位置,可以指定绝对路径,也可以指定相对于<CATALINA_HOME> (Tomcat安装目录)环境变量的相对路径。如果此项没有设定,默认情况下,Tomcat将从当前操作系统用户的用户目录下读取名为 “.keystore”的文件。

keystorePass

指定keystore的密码,如果此项没有设定,在默认情况下,Tomcat将使用“changeit”作为默认密码。

sslProtocol

指定套接字(Socket)使用的加密/解密协议,默认值为TLS,用户不应该修改这个默认值。

ciphers

指定套接字可用的用于加密的密码清单,多个密码间以逗号(,)分隔。如果此项没有设定,在默认情况下,套接字可以使用任意一个可用的密码。

 

按照以上方式生成证书,然后把证书放在Tomcat根目录

 

 

修改conf目录中的server.xml文件:

<Connector port="9087" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443"

              URIEncoding="UTF-8"/>

修改为:

<Connector port="9087" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true" maxThreads="150" scheme="https" secure="true"

 clientAuth="false" sslProtocol="TLS" eystoreFile="D:\Program Files (x86)\Apache Software Foundation\apache-tomcat-6.0.33_safe\tomcat.keystore" keystorePass="crj20150418" 

  ciphers="tomcat"/>

 

访问路径:https://localhost:9087/,如果页面显示类似“证书错误,是否继续访问”的提示,点击继续访问,就可以了

注:这种方式的缺点是每次用户访问都会出现不友好的提示,点击继续访问后才可正常进入到网站,客户体验不好

 

二、在CA认证机构付费购买认证证书

大体流程和免费证书一样,就是生成证书后需要把CA认证的文件导入到生成的免费证书中

创建完免费证书后,创建CSR文件

command命令:keytool -certreq -keyalg RSA -alias tomcat -file certreq.csr -keystore “存放路径”

 

执行后,会在相同目录下生成certreq.csr文件:

 

现在,你有了一个叫certreq.csr的文件,你可以将它提交到CA(参考CA网站上的文档怎样做)。然后就得到了证书。 
例如:我们申请了个Verisign.com的测试证书保存为:getcacert.cer

 

从你获得证书的CA下载Chain Certificate: 
例如: 
Verisign.com正式证书:去http://www.verisign.com/support/install/intermediate.html 
Verisign Test CA Root证书:去http://www.verisign.com/server2/trial/faq/index.html 

将Chain Certificate导入到keystore: 
例如:导入Verisign Test CA Root证书getcacert.cer

command命令:keytool -import -trustcacerts -alias root -file getcacert.cer -keystore “存放路径”

输入keystore密码:  12345678 
Owner: OU=For VeriSign authorized testing only. No assurances (C)VS1997, OU=www.verisign.com/repository/TestCPS Incorp. By Ref. Liab. LTD., O="VeriSign, Inc" 
发照者: OU=For VeriSign authorized testing only. No assurances (C)VS1997, OU=www.verisign.com/repository/TestCPS Incorp. By Ref. Liab. LTD., O="VeriSign, Inc" 
序号: 52a9f424da674c9daf4f537852abef6e 
有效期间: Sun Jun 07 08:00:00 CST 1998 至: Wed Jun 07 07:59:59 CST 2006 
认证指纹: 
         MD5:  40:06:53:11:FD:B3:3E:88:0A:6F:7D:D1:4E:22:91:87 
         SHA1: 93:71:C9:EE:57:09:92:5D:0A:8E:FA:02:0B:E2:F5:E6:98:6C:60:DE 
信任这个认证? [否]:  y 
认证已添加至keystore中 

注意:仔细观察tomcat项的认证指纹与导入之前是不同的。 

后续操作流程和免费证书的一致

posted on 2015-10-10 10:48  思念流年  阅读(1678)  评论(0编辑  收藏  举报