Tomcat配置外网https访问

https介绍:
   HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTPS,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面
   
与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。

如何配置
1 Windows环境 条件:已经安装JDK
步骤:
l  进入%JAVA_HOME%/bin目录
l  执行命令 keytool -genkey -alias tomcat -keyalg RSA -keystore F:\tomcat.keystore -validity 36500

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


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

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

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

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

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


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


2、配置TOMCAT服务器

(1)    将生成的证书 tomcat.keystore 拷贝到Tomcat将要引用的位置,假设tomcat的应用证书的路径是“/etc/tomcat.keystore”,则需要将证书文件拷贝到“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"/>

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

<!--
   <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中的</welcome-file-list>后面加上这样一段:
    <login-config>
    <!-- Authorization setting for SSL -->
    <auth-method>CLIENT-CERT</auth-method>
    <realm-name>Client Cert Users-only Area</realm-name>
     </login-config>
    <security-constraint>
    <!-- Authorization setting for SSL -->
    <web-resource-collection >
    <web-resource-name >SSL</web-resource-name>
    <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
    </security-constraint>



3、上述配置完成后,重启TOMCAT后即可以使用SSL。IE地址栏中可以直接输入地址不必输入“http://” 或者 “https://” ;也可以输入 “http:// ” 会跳转成为 “https://” 来登录
4、注意事项:
(1)    生成证书的时间,如果IE客户端所在机器的时间早于证书生效时间,或者晚于有效时间,IE会提示“该安全证书已到期或还未生效”
(2)   如果IE提示“安全证书上的名称无效或者与站点名称不匹配”,则是由生成证书时填写的服务器所在主机的域名“您的名字与姓氏是什么?”/“What is your first and last name?”不正确引起的


在win-64bit java.lang.Exception: No Certificate file specified or invalid file format   
原配置如下:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="D:/keystore/.keystore" keystorePass="111111"/>

修改后配置如下:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="D:/keystore/.keystore" keystorePass="111111"/>

修改了protocol属性值后问题解决。


使用tomcat 执部署

<Context docBase="D:\Apache_Tomcat\apache-tomcat-8.5.24\webapps\ROOT" path="/root" reloadable="false"/>
<Context docBase="C:\MyEclipse 8.5\work\Test\WebRoot" path="" reloadable="false"/>

path 值 不填写

https://www.gzuip.com/

https://www.gzuip.com/Test/index.jsp



猜你喜欢

转载自blog.csdn.net/qqlibo205/article/details/78981921