`

在tomcat中实现https(转载)

阅读更多
来源:http://hi.baidu.com/libinichen/blog/item/16e9b9ec0cdff42163d09f6d.html

SSL简介
SSL, 或者Secure Socket Layer,是一种允许web浏览器和web服务器通过一个安全的连接进行交流的技术。这意味着将被发送的数据在一端被翻译成密码,传送出去,然后在另一端解开密码,再进行处理。这是一个双向的过程,也就是浏览器和服务器都需要在发送数据之前对它们进行加密。
SSL协定的另一个重要方面是认证(Authentication)。这就是说,在你开始试图通过一个安全连接与一个web服务器交流的时候,这个服务器会要求你的浏览器出示一组证件,通过“鉴定”的方式来证明这就是你所声明的网站。
在某些情况下,服务器还会要求你的web浏览器的认证书,证明你就是你所说的那个人。这就是所知的“客户认证”,尽管实际情况中,更多地用在商务-对-商务(B2B)交易,而不是对个人用户。
但大多数有SSL功能的web服务器不要求客户认证(Client Authentication)。


证书
为了能实施SSL,一个web服务器对每个接受安全连接的外部接口(IP 地址)必须要有相应的证书(Certificate)。关于这个设计的理论是一个服务器必须提供某种合理的保证以证明这个服务器的主人就是你所认为的那个人。这个证书要陈述与这个网站相关联的公司,以及这个网站的所有者或系统管理员的一些基本联系信息。
这个证书由所有人以密码方式签字,其他人非常难伪造。对于进行电子商务(e-commerce)的网站,或其他身份认证至关重要的任何商业交易,认证书要向大家所熟知的认证权威(Certificate Authority (CA))如VeriSign或Thawte来购买。这样的证书可用电子技术证明属实。实际上,认证权威单位会担保它发出的认证书的真实性,如果你信任发出认证书的认证权威单位的话,你就可以相信这个认证书是有效的。
在许多情况下,认证并不是真正使人担忧的事。系统管理员或许只想要保证被服务器传送和接收的数据是秘密的,不会被连接线上的偷1窃者盗1窃到。庆幸的是,Java提供相对简单的被称为keytool的命令行工具,可以简单地产生“自己签名”的证书。自己签名的证书只是用户产生的证书,没有正式在大家所熟知的认证权威那里注册过,因此不能确保它的真实性。但却能保证数据传输的安全性。
认证也许很重要,也许不重要,完全决定于网站的需要。

用Tomcat来配置SSL主要有下面这么两大步骤:

一、生成证书

1、 在命令行下执行:

%Java_home%\bin\keytool -genkey -alias tomcat -keyalg RSA

在此命令中,keytool是JDK自带的产生证书的工具。把RSA运算法则作为主要安全运算法则,这保证了与其它服务器和组件的兼容性。
这个命令会在用户的home directory产生一个叫做" .keystore " 的新文件。在执行后,你首先被要求出示keystore密码。Tomcat使用的默认密码是" changeit "(全都是小写字母),如果你愿意,你可以指定你自己的密码。你还需要在server.xml配置文件里指定自己的密码,这在以后会有描述。

2、你会被要求出示关于这个认证书的一般性信息,如公司,联系人名称,等等。这些信息会显示给那些试图访问你程序里安全网页的用户,以确保这里提供的信息与他们期望的相对应。

3、你会被要求出示密钥(key)密码,也就是这个认证书所特有的密码(与其它的储存在同一个keystore文件里的认证书不同)。你必须在这里使用与keystore密码相同的密码。(目前,keytool会提示你按ENTER键会自动帮你做这些)。

如果一切顺利,你现在就拥有了一个可以被你的服务器使用的有认证书的keystore文件。

二、配置tomcat

第二个大步骤是把secure socket配置在$CATALINA_HOME/conf/server.xml文件里。$CATALINA_HOME代表安装Tomcat的目录。一个例子是SSL连接器的<Connector>元素被包括在和Tomcat一起安装的缺省server.xml文件里。它看起来象是这样:

$CATALINA_HOME/conf/server.xml

<-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
<!--
<Connector
port="8443" minProcessors="5" maxProcessors="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" secure="true";
clientAuth="false" sslProtocol="TLS"/>
-->

Connector元素本身,其默认形式是被注释掉的(commented out),所以需要把它周围的注释标志删除掉。然后,可以根据需要客户化(自己设置)特定的属性。一般需要增加一下keystoreFile和keystorePass两个属性,指定你存放证书的路径(如:keystoreFile="C:/.keystore")和刚才设置的密码(如:keystorePass="123456")。关于其它各种选项的详细信息,可查阅Server Configuration Reference。

在完成这些配置更改后,必须象重新启动Tomcat,然后你就可以通过SSL访问Tomcat支持的任何web应用程序。只不过指令需要像下面这样:


https://localhost:8443
分享到:
评论

相关推荐

    Tomcat 7-9转载资源

    在学习和使用过程中,开发者还需要了解以下几个关键概念: - **Context配置**:定义了一个特定的Web应用程序,包括其根路径、文档基础和类加载器设置。 - **Connector配置**:定义了Tomcat如何监听和响应网络请求,...

    TOMCAT源代码,包括转载得别人的分析

    Tomcat源码中包含对Web应用生命周期的管理,如初始化、启动、停止和卸载等阶段的处理。 9. **部署与配置**: 通过`server.xml`, `web.xml`等配置文件,开发者可以定制Tomcat的行为和Web应用的部署方式。 10. **...

    linux配置Tomcat集群

    在Linux环境下配置Tomcat集群,主要目的是构建一个能够实现水平扩展、具备高可用性、支持负载均衡以及错误恢复能力的服务架构。通过集群的方式,可以提高系统的稳定性和处理并发请求的能力。 #### 二、许可证与文档...

    配置tomcat集群

    - **Tomcat会话复制库**: 用于实现Tomcat之间的会话共享,以支持集群环境中的高可用性和负载均衡。 #### 2. 安装 ##### 2.1 第一个Tomcat - 使用命令行解压Tomcat安装包并复制到指定位置。 ```bash $ tar vfxz ...

    Apache-Tomcat-8.5.5(Linux )

    事实上,目前只有Window在OS级别提供了对async io的支持,也即IOCP,在Linux还是要通过select、poll、epoll等来实现这个机制。 所以一般来说,不需要使用NIO2。当然,也可能有些场景就适合使用NIO2,不过目前来说很...

    tomcat使用memcached集群session共享(转载并修改)

    然而,通过将 Session 存储在 Memcached 集群中,可以实现多台 Tomcat 服务器之间的 Session 共享,从而提高系统的伸缩性和可用性。 Memcached 是一个高性能、分布式的内存对象缓存系统,它允许应用程序存储和检索...

    利用apache的proxy-ajp做apache与tomcat的结合(转载) jackey

    只需在`ProxyPass`和`ProxyPassReverse`指令中添加多个后端Tomcat服务器,Apache会根据设定的策略(如轮询、最少连接等)将请求分发给不同的Tomcat实例。 总结来说,Apache与Tomcat结合使用`mod_proxy_ajp`能实现...

    red5入门,tomcat+red5+myeclipse集成,原创禁止转载

    6. 开发与调试:现在可以在MyEclipse中编写和调试Red5应用的Java代码,修改后的代码会自动部署到Tomcat中,无需手动重启Red5服务。 7. 运行测试:在浏览器中访问`http://localhost:5080/yourapp`("yourapp"为你的...

    轻松配置linux Tomcat集群

    本文旨在指导用户如何在 Linux 环境下配置一个具有高可用性、可扩展性以及具备负载均衡与错误恢复能力的 Tomcat 集群。 #### 1.1 目标 配置的最终目标是为了实现以下几点: - **高可用性**:通过多节点部署确保应用...

    Apache + Tomcat + SSL整合

    这是作者用了一周时间研究出来的,里面包含了Apache的安装程序,tomcat免安装版以及文档说明,只要按照文档说宁一步步就做,就能轻松实现。在网上找个很多关于这方面的文章,但天下文章一大抄,基本都是雷同的,很...

    19.幼儿园管理系统-springboot+ Mysql+Java+Tomcat设计与实现可运行源码+数据库+开发文档++lw

    19.幼儿园管理系统|基于springboot框架+ Mysql+Java+Tomcat设计与实现(可运行源码+数据库+设计文档+部署说明)系统管理也都将通过计算机进行整体智能化操作,对于幼儿园管理系统所牵扯的管理及数据保存都是非常多的,...

    Tomcat多端口域名访问并配置开启gzip压缩方法

    开启gzip压缩可以在server.xml文件中通过添加或修改Connector配置来实现。Gzip是一种广泛使用的数据压缩算法,它可以在HTTP传输过程中压缩数据,从而减少传输数据的大小,加快页面加载速度,节省带宽资源。在Tomcat...

    13.小区物业管理系统-SpringBoot+ Mysql+Java+Tomcat设计与实现(可运行源码+数据库+开发文档+lw

    过计算机进行整体智能化操作,对于小区物业管理系统所牵扯的管理及数据保存都是非常多的,例如管理员;首页、个人中心、用户管理、员工管理、业主信息管理、...基础能力强的可以在此基础上修改调整,以实现不同的功能。

    浅谈java中为什么实体类需要实现序列化

    在Tomcat服务器中,当服务器重启时,需要对会话对象进行钝化操作,即将其序列化为二进制文件,并将其保存到文件系统中。在服务器启动成功后,再将其反序列化为对象,以便继续使用。 需要注意的是,在实现...

    [转载] Clustering经典范文学习

    4. **Session复制**:讨论如何在集群中实现会话持久化和同步,确保用户会话的一致性。 5. **数据一致性**:可能会涉及到分布式数据库和缓存,如Java的JTA(Java Transaction API)和JMS(Java Message Service)在...

    jsp+mvc个人网站(发布文章+评论+点赞)

    我的个人网站是以Tomcat为服务器,基于Model 1(JSP + Java Bean+servlet+mvc)的方式实现,数据库采用H2数据库。网站主要浏览文章,并且实现了增、删、改、查、分页等功能。 --------------------- 作者:qq_...

    25家具销售电商平台springboot框架+ Mysql+Java+Tomcat(可运行源码+数据库+开发文档+lw+PPT)

    从管理员、用户的功能要求出发,家具销售电商平台系统中的功能模块主要是实现管理员;首页、个人中心、家具分类管理、热销家具管理、折扣家具管理、用户管理、订单评价管理、管理员管理、系统管理、订单管理,用户:...

    pay5160:https的转载者

    【标题】"pay5160:https的转载者"涉及到的是一个项目,可能是某个支付系统或服务的实现,特别关注HTTPS安全通信。HTTPS(Hypertext Transfer Protocol Secure)是HTTP的安全版本,它通过SSL/TLS协议在客户端和服务器...

    Servlet和Struts2的交互(转载)

    Servlet和Struts2是两种在Java Web开发中广泛使用的框架,它们在构建动态Web应用程序时起着关键作用。Servlet是Java EE规范的一部分,提供了一种服务器端编程模型,用于处理HTTP请求并生成响应。而Struts2是一个基于...

Global site tag (gtag.js) - Google Analytics