Tomcat配置https访问

一、https和http

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区别:

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

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

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

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

二、利用keytool.exe创建证书(本地测试)

生成证书:

(1)Window系统

使用前提:系统中已安装JDK、Tomcat。

步骤:

1、进入%JAVA_HOME%bin目录

2、执行命令:

扫描二维码关注公众号,回复: 960372 查看本文章

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

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

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

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

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

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

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

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

2) Linux环境

条件:安装了JDK、Tomcat。

步骤:

 1、进入$JAVA_HOME/bin目录

2、 执行命令:

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

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

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

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

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

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

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

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

 

配置TOMCAT服务器

1、  打开%Tomcat Path% /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="8009"enableLookups="false" protocol="AJP/1.3"redirectPort="8443" />

修改参数

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

去掉注释并修改如下:

<Connector port="443"protocol="org.apache.coyote.http11.Http11NioProtocol"

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

               clientAuth="false"sslProtocol="TLS"

              keystoreFile="F:\tomcat.keystore"

              keystorePass="123456"/>

注释:keystoreFile是证书文件的位置,keystorePass 是<tomcat>的主密码,在证书文件生成过程中做了设置。

(遇到的坑:

protocol的参数必须为protocol="org.apache.coyote.http11.Http11NioProtocol",不能是protocol="HTTP/1.1"。

keystoreFile在Linux中时注意文件路径)

2、  打开% Tomcat Path %/conf/web.xml,在该文件末尾增加一段内容,强制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>


上述配置完成后,重启TOMCAT后即可以使用SSL。IE地址栏中可以直接输入地址不必输入“http://” 或者 “https://” ;也可以输入 “http:// ” 会跳转成为 “https://” 来登录。

注意事项:

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

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

在浏览器中使用会出现警告信息

火狐浏览器 信任该站点就行

  


IE浏览器

浏览器显示证书错误, 有红色警告

在浏览器中右击选择属性, 查看不到证书

继续浏览此网站

右击->属性

之后下一步就可以了,将证书导出来

   


我将证书导出到了桌面上,

得到了一个cer的证书文件

下面打开浏览器的Internet选项  ----> 内容  ----> 证书

将生成的证书导入进来,下一步就可以。

   


以上操作完成后,重启IE浏览器。

三、利用阿里云申请证书(真实域名)

使用自己生成的证书会遇到几个问题。

1、浏览器会对 HTTPS 使用危险标识。

我们开启 HTTPS 本意是为了更安全,增加用户信心。但是浏览器使用危险标识会适得其反,吓跑用户。

2、浏览器默认不会加载非HTTPS域名下的javascript

这和早年的禁用javascript差不多了。已经影响网页的正常运行了。

3、移动设备显示页面空白

手机浏览器打开页面,也会像桌面浏览器一样弹出是否加载不受信任的页面,在微信中打开则会一片空白。

以上种种,导致自己生成的证书无法在生产环境使用。

解决以上问题,需要购买CA的证书。不过我在阿里云上看到有免费的证书申请。https://yq.aliyun.com/articles/221596

① 申请证书

购买过程就不详细说了。照着阿里云的提示一步一步做就好了。

证书生成后,会得到PFX类型的证书。

(我申请时【两种方式:DNS和文件】选择的是文件方式,注意网站的根目录可以访问创建的文件,否则证书签发不成功。)


② Tomcat 配置PFX证书

打开 Tomcat 配置文件 conf\server.xml。

取消注释,并添加三个属性 keystoreFilekeystoreTypekeystorePass

<Connector port="8443"

    protocol="org.apache.coyote.http11.Http11NioProtocol"

   SSLEnabled="true"

   scheme="https"

   secure="true"

   keystoreFile="cert/****.pfx"

   keystoreType="PKCS12"

   keystorePass="证书密码"

    clientAuth="false"

   SSLProtocol="TLSv1+TLSv1.1+TLSv1.2"

   ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256"/>

其中,keystoreFile是PFX证书文件地址,keystorePass是阿里云的订单号,keystoreType直接写PKCS12 。

③ 测试真实域名

重新启动Tomcat,访问你自己的域名,则可以正常使用了。浏览器会有绿色的域名标识,移动设备也正常了。至于http域名下的javascript,还是需要更换为https才能正常加载。

对于要不要使用 https,需要根据实际情况具体考虑,https会比http慢一些,但是会更安全。

四、www.sslforfree.com网站资料分享

免费ssl服务站:https://www.sslforfree.com
申请方式很简单,按照提示一步一步来就行了
安装参考链接:https://free.com.tw/ssl-for-free/
部署参考链接:https://www.namecheap.com/support/knowledgebase/article.aspx/795/69/how-to-install-ssl-certificates

参考链接:

http://blog.csdn.net/gane_cheng/article/details/53001846

https://www.imooc.com/article/4965

https://www.cnblogs.com/wanghaoyuhappy/p/5267702.html

http://blog.csdn.net/bao19901210/article/details/8768362

猜你喜欢

转载自blog.csdn.net/u013344860/article/details/79642543