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项的认证指纹与导入之前是不同的。
后续操作流程和免费证书的一致