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来购买。这样的证书可用电子技术证明属实。实际上,认证权威单位会担保它发出的认证书的真实性,如果你信任发出认证书的认证权威单位的话,你就可以相信这个认证书是有效的。
在许多情况下,认证并不是真正使人担忧的事。系统管理员或许只想要保证被服务器传送和接收的数据是秘密的,不会被连接线上的偷窃者~~到。庆幸的是,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连接器的元素被包括在和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
转自:http://wuzhaohuixy-qq-com.iteye.com/blog/1039910
配置本地Tomcat的https (一)采用keytool生成证书 步骤: 1、 生成证书 keytool -genkey -alias tomcat -keyalg RSA -keystore d:\mykeystore -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass changeit -storepass changeit 参数说明: 1)-genkey 创建一个新的密钥 2)-alias 密钥别名 3)-keyalg 加密算法,这里是RSA 4)-keystore 密钥保存的文件 5)-dname 表示密钥的distinguished names CN=commonName OU=oranizationUnit O = organizationName L=locatityName S=stateName C=country 6)-keypass 私有密钥的密码 7)-storepass 存取密码,用于从存储密钥的文件中(位于-keystore中指定的位置)将信息取出 2、 导出证书(说明:导出证书,由客户端安装) keytool -export -alias tomcat -keystore d:\mykeystore -file d:\mycerts.cer -storepass changeit 参数说明: 1)-export 导出指定别名的证书到文件 2)-alias 密钥别名 3)-keystore 密钥保存的文件 4)-file 导出到指定的文件中 5)- storepass 密钥保存的文件的存储密码 3、 客户端配置(为客户端的JVM导入密钥(将服务器下发的证书导入到JVM中)) keytool -import -trustcacerts -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -file d:\mycerts.cer -storepass changeit 参数说明: 1)-import 将已签名数字证书导入密钥库 2)-trustcacerts 3)-file 数字证书路径 验证是否成功导入到JVM证书库 keytool -list -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts " -storepass changeit 4、 其它命令 1、从jvm证书库中删除证书 keytool -delete -alias tomcat –keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit 2、从jvm证书库中导出证书 keytool -export -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit -alias tomcat -file d:\ mycerts.cer (二)配置Tomcat 1、注销server.xml中的语句: <!--<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />--> 否则tomcat会出现以下错误: INFO: Initializing ProtocolHandler ["http-apr-8443"] Jul 5, 2011 3:20:16 PM org.apache.coyote.AbstractProtocol init SEVERE: Failed to initialize end point associated with ProtocolHandler ["http-apr-8443"] java.lang.Exception: Connector attribute SSLCertificateFile must be defined when using SSL with APR 分析见:http://java.dzone.com/articles/ssl-your-tomcat-7 2、放开以下注释 <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="D:\mykeystore" keystorePass="changeit" />
相关推荐
Android 移动应用开发习题答案 Android 移动应用开发是指使用 Android 操作系统开发移动应用程序的过程。 Android 作为最流行的移动操作系统之一,拥有庞大的用户群体和丰富的第三方应用程序生态系统。为了帮助...
### 移动应用开发教程与案例详解:使用Flutter构建待办事项应用 #### 一、基础知识概述 在深入了解具体的开发步骤之前,我们首先简要回顾一下移动应用开发的基础概念及Flutter框架的特点。 - **移动应用开发**: ...
移动应用开发是一个涵盖广泛领域的主题,它涉及到使用各种编程语言和技术来创建可在智能手机和平板电脑上运行的应用程序。本综合实训课程将引导你逐步了解移动应用开发的核心概念、工具和流程,特别关注Android和iOS...
FreeRTOS 内核应用开发 FreeRTOS 是一个开源的实时操作系统(RTOS),广泛应用于嵌入式系统、微控制器和robotics 等领域。下面是 FreeRTOS 内核应用开发的知识点总结: 一、 STM32 裸机工程模板 * 可以使用自己的...
在Android平台上进行网络开发是一项核心技能,特别是在构建功能丰富的移动应用程序时。《Android网络开发与应用实战详解》一书深入浅出地介绍了Android系统中如何实现网络通信,并提供了丰富的源码示例。这本书涵盖...
移动应用开发是现代信息技术领域中的一个重要分支,尤其在高职教育中占据着显著的地位。"GZ-2022039 移动应用开发赛项赛题" 提供了一个全面的学习和竞技平台,旨在提升学生的实践能力和创新能力,特别是在云计算环境...
《Android应用程序开发与典型案例》是一本专为Android开发者编写的实战型教材,旨在帮助学习者深入理解Android应用的开发流程,并通过丰富的实际案例提升技能。这本书由华清远见教育集团出版,是Android培训课程中的...
在Android应用开发领域,无论是初学者还是经验丰富的程序员,都需要不断地学习和实践。"Android 应用开发实例"提供了一套完整的实战教程,适合不同层次的开发者。通过这些实例,你可以深入了解Android系统的运行机制...
嵌入式Linux应用开发技术是现代电子设备设计与制造的核心组成部分,它涵盖了操作系统、硬件接口、设备驱动程序、网络通信以及应用程序等多个方面。本资源"嵌入式Linux应用开发技术大全"显然是一份全面深入探讨该主题...
描述中提到的“博文链接:https://zhangpeihao.iteye.com/blog/200033”是一个具体的博客文章地址,该文章可能详细解释了如何使用Rails进行敏捷开发,并且通过Depot项目作为实践案例。在阅读这个博客后,读者可以...
2020年的移动应用开发赛卷,聚焦于移动应用开发,这是当前信息技术行业中极其重要的一环,因为智能手机和平板电脑已经成为人们日常生活和工作中不可或缺的工具。 移动应用开发涵盖了iOS、Android以及跨平台开发等多...
《Spring 3.x企业应用开发实战》是一本深入讲解Spring框架在企业级应用程序开发中的实践指南。这本书专注于Spring 3.x版本,该版本是Spring框架发展史上的一个重要里程碑,引入了许多新特性和改进,旨在提升开发效率...
在安卓应用开发领域,实践是掌握技能的关键。"安卓应用开发案例大全"提供了一系列实际的开发案例,这对于初学者深入理解安卓开发的概念和技术至关重要。这个资源包,通过丰富的实例,帮助学习者逐步进阶,从基础到...
HTTPS的开发应用** 在开发过程中,实现HTTPS涉及以下步骤: 1. **获取SSL证书**:从受信任的CA购买或自签发证书。 2. **配置服务器**:将证书安装到Web服务器(如Apache、Nginx),配置相应的SSL/TLS设置。 3. **...
"Android移动应用开发技术教案" Android 移动应用开发技术教案是 Android 开发的入门教程,涵盖了 Android 开发的基础知识和技术。本教案共分为八章,分别介绍了 Android 开发的基础知识、开发环境的搭建、 ...
Web应用开发原理与技术是构建基于互联网的交互式应用程序的过程,它使得用户可以通过网页浏览器进行数据交换、功能操作以及信息获取。这一领域的知识涵盖了多种技术和工具,包括前端开发、后端开发、数据库管理、...
同时,提到的“博文链接:https://zhenzxie.iteye.com/blog/1188123”可能提供了更多关于该应用的背景、功能介绍或者开发过程的详细信息,可以进一步了解开发者的想法和实现技术。 【标签】"源码 工具" 暗示了这个...
首先,"01试题库"可能包含了关于移动互联网应用开发的各类试题,这些试题可能涵盖了编程语言(如Java、Swift或 Kotlin)、移动平台特性(如Android和iOS的区别)、UI设计原则、网络通信协议(如HTTP/HTTPS、...
Web应用是由HTML、CSS和JavaScript构建的,通过HTTP或HTTPS协议在Web浏览器上运行。HTML负责结构化内容,CSS负责样式设计,JavaScript则赋予页面交互性。随着技术的发展,现代Web应用不仅限于静态页面,还包含了复杂...