`
jaychang
  • 浏览: 734983 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类
最新评论

Tomcat 下配置Https(SSL)

    博客分类:
  • SSL
阅读更多

一、基础知识

Tomcat 简介

Tomcat是Apache Jakarta的子项目之一,作为一个优秀的开源web应用服务器,全面支持jsp1.2以及servlet2.3规范。因其技术先进、性能稳定,而且免 费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的web应用服务器。

 

https(Secure Hypertext Transfer Protocol)安全超文本传输协议 简介

https是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入 SSL层。

它是由Netscape开发并内置于其浏览器中,旨在达到在开放网络(Internet)上 安全保密地传输信息的目的。

用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了 Netscape的完全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进 行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。。

 

SSL (Secure Socket Layer)简介

为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密 (Encryption)技术,可确保数据在网络上之传输过程中不会被截取与偷听。

 

 

(附)SSL工作原理

SSL协议使用不对称加密技术实现会话双方之间信息的安全传递。可以实现信息传递的保密性、 完整性,并且会话双方能鉴别对方身份。不同于常用的http协议,我们在与网站建立SSL安全连接时使用https协议,即采用https://ip:port/ 的方式来访问。

当我们与一个网站建立https连接时,我们的浏览器与Web Server之间要经过一个握手的过程来完成身份鉴定与密钥交换,从而建立安全连接。具体过程如下:

1. 用户浏览器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送到服务器。

2. 服务器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送给浏览器,同时发给浏览器的还有服务器的证书。如果配置服务 器的SSL需要验证用户身份,还要发出请求要求浏览器提供用户证书。

3. 客户端检查服务器证书,如果检查失败,提示不能建立SSL连接。如果成功,那么继续。

4. 客户端浏览器为本次会话生成pre-master secret,并将其用服务器公钥加密后发送给服务器。

5. 如果服务器要求鉴别客户身份,客户端还要再对另外一些数据签名后并将其与客户端证书一起发送给服务器。

6. 如果服务器要求鉴别客户身份,则检查签署客户证书的CA是否可信。如果不在信任列表中,结束本次会话。如果检查通过,服务器用自己的私钥解密收到的 pre-master secret,并用它通过某些算法生成本次会话的master secret。

7. 客户端与服务器均使用此master secret生成本次会话的会话密钥(对称密钥)。在双方SSL握手结束后传递任何消息均使用此会话密钥。这样做的主要原因是对称加密比非对称加密的运算 量低一个数量级以上,能够显著提高双方会话时的运算速度。

8. 客户端通知服务器此后发送的消息都使用这个会话密钥进行加密。并通知服务器客户端已经完成本次SSL握手。

9. 服务器通知客户端此后发送的消息都使用这个会话密钥进行加密。并通知客户端服务器已经完成本次SSL握手。

10. 本次握手过程结束,会话已经建立。双方使用同一个会话密钥分别对发送以及接受的信息进行加、解密。

 

二、tomcat实现SSL配置

 第一步 生成KeyStore

 

keytool -genkey -alias tomcat -keyalg RSA –keysize 1024 –validity 730 -keystore D:\server.keystore

生成.keystore文件在 用户目录下

输入keystore密码: ************

您的名字与姓氏是什么?

[Unknown]: localhost

您的组织单位名称是什么?

[Unknown]: dept

您的组织名称是什么?

[Unknown]: Inc

您所在的城市或区域名称是什么?

[Unknown]: bj

您所在的州或省份名称是什么?

[Unknown]: bj

该单位的两字母国家代码是什么

[Unknown]: CN

CN=localhost, OU= dept, O= Inc, L=bj, ST=bj, C=CN 正确吗?

[否]: Y

输入的主密码

(如果和 keystore 密码相同,按回车):*************

注意: localhost,是网站的域名或者ip,根据实际情况填写,比如 www.baidu.com   192.168.0.85  否则会出现证书上的名称无效,或者与站点名称不匹配。

 

建议:将生成的 server.keystore文件,放到%TOMCAT_HOME%或其子目录中(如:%TOMCAT_HOME%/conf)

(其实放哪里都一样,只是放到%TOMCAT_HOME%里面会方便一些)

 

第二步 修改server.xml

 

 修改%TOMCAT_HOME%/conf/server.xml

去掉下面SSL HTTP那个注释,修改为如下: 

Xml代码 Tomcat 下配置Https(SSL) - 小钳子 - 我的博客

    <Connector port="8443" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"    
       SSLEnabled="true"  
       maxThreads="150"  
       scheme="https"  
       secure="true"  
       clientAuth="false"  
       sslProtocol="TLS"    
       keystoreFile="/conf/server.keystore"  
       keystorePass="changeit" />  
 

    <Connector port="8443" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/conf/server.keystore" keystorePass="changeit" />

     keystoreFile 是server.keystore放置的位置,keystorePass是密码 (默认密码是changeit)

     

    第三步

    重启Tomcat,访问地址https://ip:8443/

     

     

     

     

     

    (附录:)tomcat的配置文件SSL部分详细说明

    配置文件server.xml,SSL部分:

    Xml代码 Tomcat 下配置Https(SSL) - 小钳子 - 我的博客

       <!-- A "Connector" represents an endpoint by which requests are received   
              and responses are returned. Documentation at :   
              Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)   
              Java AJP  Connector: /docs/config/ajp.html   
             APR (HTTP/AJP) Connector: /docs/apr.html   
              Define a non-SSL HTTP/1.1 Connector on port 8080   
         -->  
         <Connector  port="8443" maxHttpHeaderSize="8192"  
             maxThreads="150"  
             minSpareThreads="25"  
             maxSpareThreads="75"  
             enableLookups="false"  
             disableUploadTimeout="true"  
             acceptCount="100"  
            scheme="https"  
             secure="true"  
             clientAuth="false"  
             sslProtocol="TLS"  
             keystoreFile="D:/Tomcat/conf/tomcatKey.keystore"  
             keystorePass="changeit"  
             algorithm="SunX509"  
         />  
     

       <!-- A "Connector" represents an endpoint by which requests are received         and responses are returned. Documentation at :         Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)         Java AJP  Connector: /docs/config/ajp.html         APR (HTTP/AJP) Connector: /docs/apr.html         Define a non-SSL HTTP/1.1 Connector on port 8080    --> <Connector port="8443" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="D:/Tomcat/conf/tomcatKey.keystore" keystorePass="changeit" algorithm="SunX509" />

     

    属性说明:

     port:     这个port属性(默认值是8443)是 TCP/IP端口数码,Tomcat在其上监听安全连接。你可以把它更改成任何你愿意要的数值(如默认的https通信,数目是443)。不过,在许多操 作系统中,要想在比1024小的端口数码上运行Tomcat,需要特殊的设置(它超出了这个文档资料的范围)。

     

    redirectPort: 如果你在这里更改端口数值,你还必须更改在non-SSL连接 器上的redirectPort 这个属性特定的值。这允许Tomcat自动地redirect那些试图访问有安全限制页面的用户,指明根据 Servlet 2.4 Specification要求,SSL是必需的

     

    clientAuth: 如果你想要Tomcat要求所有的SSL客户在使用这个 socket时出示用户认证书,把这个值设定为 true 。如果你想要Tomcat要求出示用户认证书,但是如果没有认证书也可以, 就把这个值设定为want 。

     

    keystoreFile: 如果你产生的keystore文件不在Tomcat期望的默认 地方(一个叫做.keystore 的文件在Tomcat运行的主目录),就添加这个属性。你可以指定一个绝对路径名称, 或者一个由$CATALINA_BASE环境变量而派生的相对路径名称。

     

    keystorePass: 如果你使用一个不同的keystore(以及认证书)密码,而 不是Tomcat期望的密码 (就是changeit),添加这个元素。

     

    keystoreType: 如果使用一个PKCS12 keystore的话,就添加这个element。 有效的值是JKS 和 PKCS12

     

    sslProtocol: 要在这个socket上被使用的加密/解密协定。如果你在使用 Sun的JVM,我们不提倡更改 这个值。据报道,TLS协定的IBM's 1.4.1 实现与一些通用的浏览器不兼容。 如果是这样,就使用value SSL

     

    ciphers: 这个socket允许使用的由逗号分隔开的加密密码列单。默认的情况下, 任何可用的密码都允许被使用。

     

    algorithm: 可用的X509算法。默认是Sun的实现( SunX509 )。 对于IBM JVMs,你应该使用值 IbmX509。对于其他卖主,查阅JVM文档资料来 找正确的值。

     

    truststoreFile: 用来验证用户认证书的TrustStore文件。

     

    truststorePass: 访问TrustStore的密码。默认值就是 keystorePass的值。

     

    truststoreType: 如果你在使用与KeyStore不同格式的 TrustStore,添加这个元素。 合法的值是JKS和PKCS12

     

    keyAlias: 如果 keystore 里面有多个 key,你可以为用这个选项为加入的 key 起一个名字。 如果没有指定名字,使用时 keystore 内的第一个 key 将会被使用。

    分享到:
    评论

    相关推荐

      Tomcat中实现https安全连接与SSL配置

      https ssl Tomcat中实现https安全连接与SSL配置https ssl Tomcat中实现https安全连接与SSL配置https ssl Tomcat中实现https安全连接与SSL配置https ssl Tomcat中实现https安全连接与SSL配置

      tomcat下配置https环境

      Tomcat 下配置 HTTPS 环境详细指南 在本篇文章中,我们将详细介绍如何在 Tomcat 下配置 HTTPS 环境,包括生成密钥、配置 Tomcat 以及测试 HTTPS 连接。 一、生成密钥 在配置 HTTPS 环境之前,我们需要生成一个...

      解决tomcat配置ssl错误的解决办法

      解决 Tomcat 配置 SSL 错误的解决办法 在 Tomcat 服务器中配置 SSL 加密连接是非常重要的,然而在 Tomcat 6.0.33 版本中,默认启用了 APR(APR 是通过 JNI 访问的可移植库,可以提高 Tomcat 的性能和伸缩性),这...

      Tomcat 开启基于https的SSL配置

      Tomcat 开启基于 HTTPS 的 SSL 配置 在互联网时代,安全性问题变得越来越重要,为了保护用户的隐私和数据,越来越多的网站开始使用 HTTPS 协议。Tomcat 作为一个流行的 Java Web 服务器,当然也支持 HTTPS 协议。...

      Tomcat6配置使用SSL双向认证

      通过上述步骤,我们可以在Tomcat6上成功配置SSL双向认证,增强了Web服务的安全性和可信度。然而,实际操作中还需考虑证书的有效期管理、备份策略以及密钥长度的选择等问题,以确保长期的系统稳定性和安全性。此外,...

      在tomcat中配置https的总结

      ### 在Tomcat中配置HTTPS详解 #### 一、引言 随着互联网技术的发展与安全意识的提高,HTTPS已经成为现代Web应用的标准配置之一。HTTPS通过在HTTP的基础上加入SSL/TLS加密层,确保了数据传输的安全性。本文将详细...

      Tomcat配置HTTPS证书认证

      要为Tomcat配置HTTPS,我们主要需要以下几步: 1. **生成或获取SSL证书**: - 可以使用开源工具如OpenSSL自签发一个证书,适合测试环境。 - 对于生产环境,通常需要从权威的证书颁发机构(CA)购买一个正式的SSL...

      tomcat6配置https

      标题“Tomcat6配置HTTPS”涉及的是在Apache Tomcat 6版本中设置和配置安全的HTTPS连接。HTTPS是一种基于SSL/TLS协议的安全通信协议,用于在网络上提供加密传输和身份认证,确保用户数据的安全性。 首先,为了在...

      Tomcat6配置SSL

      **标题:** Tomcat6配置SSL **描述:** 在互联网中,数据传输的安全性至关重要,特别是在涉及用户敏感信息的Web应用中。SSL(Secure Sockets Layer)协议是实现这种安全性的基础,它通过加密通信和身份认证来保护网络...

      https原理及tomcat配置https方法

      HTTPS 原理及 Tomcat 配置 HTTPS 方法 HTTPS(Hypertext Transfer Protocol Secure)是一种基于 HTTP 协议的安全协议,通过使用 SSL/TLS 协议对数据进行加密,以确保数据的安全传输。下面将详细介绍 HTTPS 的原理...

      Tomcat 配置SSL完美 https可以正常使用 小程序调用

      Tomcat 配置SSL完美 https可以正常使用 小程序调用Tomcat 配置SSL完美 https可以正常使用 小程序调用Tomcat 配置SSL完美 https可以正常使用 小程序调用

      tomcat全套配置https协议

      总结,配置Tomcat支持HTTPS协议涉及生成证书、编辑Tomcat配置文件以及设置强制HTTPS重定向。这个过程对保障Web应用的安全性至关重要,尤其是在处理敏感用户信息时。理解并熟练掌握这些步骤,可以让你在开发和维护...

      Tomcat中配置https

      本篇文章将详细讲解如何在Apache Tomcat服务器中配置HTTPS。 首先,我们需要生成一个密钥对,这通常包括一个公钥证书(Certificate)和一个私钥(Private Key)。在这个案例中,我们使用了名为"GenerateCommand....

      tomcat支持https配置

      4. **修改Tomcat配置**: - 打开`conf/server.xml`文件,找到`&lt;Connector&gt;`元素,配置SSL连接器。 - 添加以下属性: - `protocol="HTTP/1.1"`:指定连接器协议。 - `scheme="https"`:指定协议类型。 - `secure...

      关于tomcat 的ssl配置

      Tomcat SSL 配置详解 Tomcat 是一个流行的 Web 服务器软件,它支持 SSL/TLS 加密协议,以确保数据传输的安全性。在本文中,我们将详细介绍 Tomcat 的 SSL 配置步骤和过程。 一、生成密钥对 在 Tomcat 中,需要...

      为tomcat服务器配置https,tomcat需要设置的server.xml与web.xml配置

      在Tomcat的`conf`目录下,有两个主要的XML配置文件:`server.xml`和`web.xml`。`server.xml`是Tomcat的主要配置文件,而`web.xml`则定义了应用程序的行为。 在`server.xml`中,我们需要配置`&lt;Connector&gt;`元素来启用...

      nginx和tomcat配置SSL和负载均衡配置

      ### Nginx 和 Tomcat 配置 SSL 与负载均衡详解 #### 一、Nginx 支持 SSL 的确认方法 Nginx 支持 SSL 加密是现代 Web 服务器的基本需求之一,确保数据传输的安全性。首先,我们需要确认当前安装的 Nginx 版本是否...

      利用tomcat服务器配置https双向认证

      Tomcat 服务器配置 HTTPS 双向认证是指在 Tomcat 服务器上配置 SSL/TLS 加密协议,以便在客户端和服务器之间建立安全的连接。本文将指导您如何配置 Tomcat 服务器上的 HTTPS 双向认证。 一、生成服务器证书 使用 ...

      nginx、tomcat安装免费ssl安全证书配置

      在互联网世界中,HTTPS协议是确保...至此,我们已经成功地在Nginx和Tomcat上配置了阿里云的免费SSL证书,实现了HTTPS访问。这不仅提升了网站的安全性,也提高了用户的信任度。注意定期更新证书,保持其有效性和安全性。

    Global site tag (gtag.js) - Google Analytics