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移动应用开发习题答案
https的开发代码应用。
《Spring 3.x企业应用开发实战》
Tkinter 是基于 TKGUI 工具包构建的,是快速 GUI 开发的常见选择,复杂应用程序可以从该库的全部功能中获益。本书涵盖了所有 Tkinter 和 Python GUI 开发问题和解决方案。 Tkinter GUI 应用程序开发烹饪书首先概述 ...
5、资源包括“通用存储过程整理” 和 “真实业务存储过程整理” 两部分,通用适合各种系统,可以无缝隙应用到各自应用中,减少重复的开发工作量。 真实业务存储过程整理则适合作为案例自主学习参考使用,都有详细...
PyQt5的可视化的windows桌面应用程序开发具备完整功能的源代码 最基础的,包括: 界面的设计、事件的响应和绑定、代码的扩展和测试。 具体可以查看对应的博客文章: ...
博文链接:https://zhangpeihao.iteye.com/blog/200033
Delhpi 7 高级应用开发 随书源码 这是在别人那下载的 然而看到源码两个字之后就下载,下载之后并没有多大帮助,希望给有需要的人 ,不能免费下载时遗憾。最低是2积分。希望对你有所帮助,纸上得来终觉浅,书到用时方...
书名:《微信公众平台应用开发:方法、技巧与案例》(机械工业出版社.柳峰) PDF格式扫描版,全书分为9章,共245页。2014年1月出版。 内容简介 该书系统讲解了微信公众平台应用开发的流程、方法和技巧,并配有若干...
UltimateAndroid是一个用于开发应用程序的快速开发框架。UltimateAndroid框架包含许多功能,如视图注入,ORM,异步网络和图像加载器,超过100个UI效果等。并且还有许多有用的功能,如WebViewUtils,DaoUtils,Https ...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
NULL 博文链接:https://jianshi-dlw.iteye.com/blog/1174725
Java web应用开发_学生成绩管理系统 课程设计文档; 附上 源代码地址 https://download.csdn.net/download/diors222/9995365 https://download.csdn.net/download/diors222/9977078
《React Native:用JavaScript开发移动应用》围绕着如何将一个完整App提交到App Store,讲解了使用React Native开发iOS应用所涉及的方方面面。首先介绍了Flexbox布局,教大家从零开始搭建一个初始应用,以此阐明...
多端统一开发框架,支持用 React 的开发方式编写一次代码,生成能运行在微信小程序、H5、React Native 等的应用。.zip,多端统一开发框架,支持用 React 的开发方式编写一次代码,生成能运行在微信/百度/支付宝/字节...
大数据技术 数据仓库原理设计与应用 第3章 数据仓库开发应用过程 (共48页).ppt 大数据技术 数据仓库原理设计与应用 第4章 OLAP技术(共29页).ppt 大数据技术 数据仓库原理设计与应用 第5章 传统数据挖掘技术(共...
这些新功能实用性强、易用性高,可大幅降低Java应用,特别是Java Web应用开发的难度,同时有效提升应用开发的优雅性。 本书是在《精通Spring 2.x——企业应用开发详解》的基础上,经过历时一年的重大调整改版而成的...
本书的第1版上市后广获好评,成为计算机领域的畅销书,被誉为“微信公众平台开发领域好的书之一”,作者是来自腾讯官方的资深软件开发工程师,而且是微信公众平台应用开发领域的先驱者之一。第2版根据微信的*版本做...
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
鸿蒙应用开发例子程序,一个简单的入门例子,通过xml布局,java代码开发。详细说明请看https://blog.csdn.net/xgw1010/article/details/109107834