您的位置:首页 > 理论基础 > 计算机网络

【Tomcat】配置https及访问http自动跳转至https

2015-12-30 10:48 801 查看
https介绍: HTTPS(全称:Hypertext Transfer Protocol over Secure

SocketLayer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

它是一个URIscheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTPS,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面

https与http区别:

一、https协议需要到ca申请证书,一般免费证书很少,需要交费。

二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。

三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

SSL协议:

  SSL安全套接层协议(Secure Socket Layer)

  为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。目前一般通用之规格为40 bit之安全标准,美国则已推出128 bit之更高安全标准,但限制出境。只要3.0版本以上之IE.或Netscape浏览器即可支持SSL。

  当前版本为3.0。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。

SSL协议位于TCP/IP协议与各种应用层协议之间,是一种国际标准的加密及身份认证通信协议,为TCP提供一个可靠的端到端的安全服务,为两个通讯个体之间提供保密性和完整性(身份鉴别)。SSL协议可分为两层:SSL记录协议(SSLRecord Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

如何配置:

1、生成服务器端证书文件

可以使用Windows系统或者Linux系统

(1) Windows环境

条件:已经安装JDK

步骤:

l 进入%JAVA_HOME%/bin目录

l 执行命令

keytool -genkey -alias tomcat -keyalg RSA -keystoreF:\tomcat.keystore -validity 36500


参数简要说明:“F:\tomcat.keystore”含义是将证书文件保存在F盘,证书文件名称是tomcat.keystore ;“-validity36500”含义是证书有效期,36500表示100年,默认值是90天

l 在命令行填写必要的参数:

A、输入keystore密码:此处需要输入大于6个字符的字符串

B、“您的名字与姓氏是什么?”这是必填项,并且必须是TOMCAT部署主机的域名或者IP[如:gbcom.com或者10.1.25.251],就是你将来要在浏览器中输入的访问地址

C、“你的组织单位名称是什么?”、“您的组织名称是什么?”、“您所在城市或区域名称是什么?”、“您所在的州或者省份名称是什么?”、“该单位的两字母国家代码是什么?”可以按照需要填写也可以不填写直接回车,在系统询问“正确吗?”时,对照输入信息,如果符合要求则使用键盘输入字母“y”,否则输入“n”重新填写上面的信息

D、输入的主密码,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以

l 完成上述输入后,直接回车则在你在第二步中定义的位置找到生成的文件

(2) Linux环境

条件:安装了JDK

步骤:

l 进入$JAVA_HOME/bin目录

l 执行命令

./keytool -genkey -alias tomcat -keyalg RSA -keystore/usr/local/ac/web/tomcat.keystore -validity36500


参数简要说明:“/etc/tomcat.keystore”含义是将证书文件保存在路径/usr/local/ac/web/下,证书文件名称是tomcat.keystore ;“-validity36500”含义是证书有效期,36500表示100年,默认值是90天

l 在命令行填写必要的参数:

截图如下:

截图部分说明:

A、Enter keystorepassword:此处需要输入大于6个字符的字符串

B、“What is your firstand last name?”这是必填项,并且必须是TOMCAT部署主机的域名或者IP[如:gbcom.com或者10.1.25.251],就是你将来要在浏览器中输入的访问地址

C、“What is the nameof your organizational unit?”、“What is the nameof your organization?”、“What is the nameof your City or Locality?”、“What is the nameof your State or Province?”、“What is thetwo-letter country code for this unit?”可以按照需要填写也可以不填写直接回车,在系统询问“correct?”时,对照输入信息,如果符合要求则使用键盘输入字母“y”,否则输入“n”重新填写上面的信息

D、Enter key passwordfor ,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以

l 完成上述输入后,直接回车则在你在第二步中定义的位置找到生成的文件

2、配置TOMCAT服务器

(1) 如果你是在Windows环境中生成证书文件,则需要将生成的证书tomcat.keystore拷贝到Tomcat将要引用的位置,假设tomcat的应用证书的路径是“/etc/tomcat.keystore”,则需要将证书文件拷贝到“etc/”下;如果是在Linux环境按照上述介绍的步骤生成证书文件的话,此时证书文件已经在“etc/”下。

(2) 配置Tomcat,打开$CATALINA_HOME/conf/server.xml,修改如下,

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

connectionTimeout="20000"

redirectPort="8443" />


修改参数=>

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

connectionTimeout="20000"

redirectPort="443" />


<!--

<Connector port="8443"protocol="HTTP/1.1" SSLEnabled="true"

maxThreads="150" scheme="https" secure="true"

clientAuth="false"sslProtocol="TLS"/>

-->


去掉注释且修改参数=>

<Connector port="443"protocol="HTTP/1.1" SSLEnabled="true"

maxThreads="150" scheme="https" secure="true"

clientAuth="false" sslProtocol="TLS" keystoreFile="/etc/tomcat.keystore"keystorePass="www.gbcom.com.cn"/>


注释:标识为淡蓝色的两个参数,分别是证书文件的位置和的主密码,在证书文件生成过程中做了设置

<!--

<Connector port="8009" enableLookups="false"protocol="AJP/1.3" redirectPort="8443"/>

-->


修改参数=>

<Connector port="8009"enableLookups="false" protocol="AJP/1.3" redirectPort="443"/>


(3) 打开$CATALINA_HOME/conf/web.xml,在该文件末尾增加:

2.强制https访问在tomcat\conf\web.xml中的后面加上这样一段:Java代码
1.<login-config>   2.<!-- Authorization setting for SSL-->   3.<auth-method>CLIENT-CERT</auth-method>   4.<realm-name>Client Cert Users-onlyArea</realm-name>   5.</login-config>   6.<security-constraint>   7.<!-- Authorization setting for SSL-->   8.<web-resource-collection >   9.<web-resource-name>SSL</web-resource-name>   10.<url-pattern>/*</url-pattern>   11.</web-resource-collection>   12.<user-data-constraint>   13.<transport-guarantee>CONFIDENTIAL</transport-guarantee>   14.</user-data-constraint>   15.</security-constraint>


3、上述配置完成后,重启TOMCAT后即可以使用SSL。IE地址栏中可以直接输入地址不必输入“http://

” 或者

“https://

” ;也可以输入


http://
” 会跳转成为

“https://”

来登录

4、注意事项:

(1) 生成证书的时间,如果IE客户端所在机器的时间早于证书生效时间,或者晚于有效时间,IE会提示“该安全证书已到期或还未生效”

(2) 如果IE提示“安全证书上的名称无效或者与站点名称不匹配”,则是由生成证书时填写的服务器所在主机的域名“您的名字与姓氏是什么?”/“What is your firstand last name?”不正确引起的

注:

如若配置SSL出现​ SSL:No Certificate file specified or invalid file format这种错误,应将配置改为下面的这个

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"  keystoreFile="/keystore/server.keystore" keystorePass="123456"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息