简介

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,目前最新版本是6.0.20(截止到2009-10-22)。

Tomcat 5 支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。

当Tomcat作为独立的Web Servcer运行的时候,可以独立处理SSL请求,这个时候,我们就需要在Tomcat上安装SSL证书,如果Tomcat和Apache联合工作,事实上是作为Apache的一个独立进程来负责JSP页面和Servlet,这个时候,我们就需要将SSL证书安装在Apache上,这点需要先确认好。

Tomcat还有一个特殊的模块:APR(Apache Portable Runtime)是为了提高Tomcat处理静态内容性能,提供的组件,其实就是以Apache2.0为核心的一个http服务。在HTTPS方面,APR和Apache一样采用Openssl,在证书安装部分,会简要说明一下。

Tomcat支持Jave Keystore文件格式作为SSL证书存储用途。Java Keystore文件的常见扩展名有.jks和.key。要制作JKS文件,有2种主要方式:

  1. 用JRE自带的Keytool工具。先产生一个新的jks文件,并到处一个csr文件,然后将csr发给CA签名,并将签名后的文件导入jks文件。
  2. 用openssl工具,制作key和csr文件,将csr发给CA签名得到cer文件,然后将key和cer合并成一个jks文件。
 

制作CSR申请文件

1、制作Tomcat用CSR请求文件,最简单的办法就直接使用我们的 OpenSSL CSR在线生成器: https://www.myssl.cn/openssl/createcsr.asp
(注意:您必须同时保存server.key和server.csr文件)

2、常见的JKS文件制作,要采用Keytool工具,这个工具是JRE自带的。通过命令行的方式输入CSR信息,而且可以支持中文资料。
首先,生成一个新的jks文件,命令如下: 
keytool -genkey -alias tomcat -keyalg RSA -keystore c:\server.jks

 输入密钥库密码:changeit
您的姓名是什么?
[未知]: www.myssl.cn
您的组织单位名称是什么?
[未知]: Shanghai Fastcom Technology Co.,Ltd
您的组织名称是什么?
[未知]: It Dept.
您的市/县/区或地点名称是什么?
[未知]: Shanghai
您的省/直辖市名称是什么?
[未知]: Shanghai
此单位的两字母国家或地区代码是什么?
[未知]: CN
CN=www.myssl.cn, OU="Shanghai Fastcom Technology Co.,Ltd",
O=It Dept., L=Shanghai, ST=Shanghai, C=CN 正确吗?
(输入“yes”或“no”)
[否]: Y 为 <tomcat> 输入密钥密码
(如果与密钥库密码相同则返回):

说明: 输入keystore密码: 请输入保护证书密钥的密码。
 
您的名字与姓氏是什么?请输入域名,例如:www.myssl.cn 
 
您的组织单位名称是什么?请输入单位名称,如: Shanghai Fastcom Technology Co Ltd
 
您的组织名称是什么?请输入部门名称,如: IT Dept
 
您所在的城市或区域名称是什么?输入城市名称,如:Shanghai
 
您所在的州或省份名称是什么?输入省份名称,如:Shanghai
 
该单位的两字母国家代码是什么?中国请输入CN
 
CN=www.myssl.cn, OU=Shanghai Fastcom Technology Co Ltd, O=IT Dept, L=Shanghai, ST=Shanghai, C=CN 正确吗?输入 Y
 
输入的主密码(如果和 keystore 密码相同,按回车):按回车

根据这个jks文件产生一个csr文件,输入命令:
keytool -certreq -alias tomcat -keystore server.jks -file server.csr

 

安装证书文件

1、将证书内容存为一个文件:

您会收到一封来自迅通诚信的邮件,证书内容附在邮件中。如果证书是以附件的形式(Cert.cer)夹带在邮件中,您就可以直接应用它。如果您的证书中以文本的方式存在邮件中,您就需要将邮件中的证书部分的内容用Vi或Notepad存成一个纯文本文件。不要将其存成Microsoft Word 或其它字处理软件格式,并确定证书内容中不含有空行和空格,文件名可以为server.cer。如下所示:


将保存好的server.cer文件和制作CSR时候生成的server.key一起复制到服务器上。

2、如果是使用在线工具制作的CSR文件,请打开在线JKS合成工具,将制作CSR时候的server.key文件和刚刚收到的server.cer输入2个文本框,然后合成一个server.jks文件。

3、如果是用keytool做的CSR文件,则需要按下面方式,将证书导入原来的jks文件。

3.1 请使用P7B在线转换工具将server.cer转换为P7B文件:
请用Notepad打开server.cer文件,将其中的全部内容(包含-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----),将全部内容复制到P7B在线转换工具中的文本框中,然后点击“合成P7B文件”。待合成成功后,下载文件,保存为cert.txt。

3.2 然后运行命令,将CA签好的证书文件cert.txt导入jks文件:
keytool -import -keystore server.jks -alias tomcat -file cert.txt

4、如果没有APR的Tomcat,按下面例子更新Server.xml文件配置

<-- Define a SSL Coyote HTTP/1.1 Connector on port 443 -->
<!--Tomcat 5.5
<Connector
port="8443" minProcessors="5" maxProcessors="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="server.jks" keystorePass="changeit"/>
-->

注意:不同tomcat版本,修改server.xml的方式不同,请参考tomcat说明: 
tomcat 6.0 http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html 
tomcat 5.5 http://tomcat.apache.org/tomcat-5.5-doc/ssl-howto.html 
tomcat 5.0 http://tomcat.apache.org/tomcat-5.0-doc/ssl-howto.html 
tomcat 4.1 http://tomcat.apache.org/tomcat-4.1-doc/ssl-howto.html

5、配置了APR的Tomcat,需要使用server.key和server.cer文件,并按mod_ssl的语法来更新Server.xml文件配置

<-- Define a APR SSL Coyote HTTP/1.1 Connector on port 443 --&rt;
<!--
<Connector protocol="org.apache.coyote.http11.Http11AprProtocol"
port="443" minSpareThreads="5" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
SSLCertificateFile="server.cer"
SSLCertificateKeyFile="server.key"
SSLVerifyClient="none" sslProtocol="TLS"/>
-->
 

客户证书认证

1、没有APR模块的Tomcat,如果需要采用客户证书认证(双向SSL认证),需要在server.xml中增加以下配置:

           clientAuth="true"
truststoreFile="ca.jks"
truststorePass="changeit"

说明:
clientAuth="true",表示必须有客户证书才可以访问。
clientAuth="false",表示不验证是否有客户证书。
clientAuth="want",表示会检查客户证书,但如果没有也可以继续访问。

2、使用APR模块的Tomcat,需要用mod_ssl的语法来配置客户证书认证,增加以下配置:

           SSLVerifyClient="require"
SSLCACertificateFile="ca.cer"

详细参数,可以参考Apache SSL文档说明。

证书的备份(导出)

Tomcat的证书备份,只需要将server.jks文件(或可查看server.xml中keystoreFile对应的那个jks文件)复制到备份媒质上即可了。

 

证书的恢复(导入)

要恢复Tomcat的证书同样非常简单,将备份的jks文件,复制到新的服务器上,然后参考上面服务器证书安装说明,修改server.xml文件即可。

Tomcat - SSL操作大全的更多相关文章

  1. keytool生成证书与Tomcat SSL配置

    转自:http://tomhat.iteye.com/blog/2087673 一.Keytool介绍 Keytool是一个Java数据证书的管理工具.Keytool将密钥(key)和证书(certi ...

  2. SSL 通信原理及Tomcat SSL 配置

    SSL 通信原理及Tomcat SSL 双向配置 目录1 参考资料 .................................................................. ...

  3. SSL 通信原理及Tomcat SSL 双向配置

    SSL 通信原理及Tomcat SSL 双向配置 目录1 参考资料 .................................................................. ...

  4. SpringBoot 配置 Tomcat SSL

    SpringBoot 配置 Tomcat SSL SSL(Secure Sockets Layer , 安全套接层)是为网络通信提供安全及数据完整性的一种安全协议,SSL在网络传输层对网络连接进行加密 ...

  5. Delphi Excel 操作大全

    Delphi Excel 操作大全 (一) 使用动态创建的方法首先创建 Excel 对象,使用ComObj:var ExcelApp: Variant;ExcelApp := CreateOleObj ...

  6. java日期操作大全

    摘自(http://www.blogjava.net/i369/articles/83483.html) java日期操作 大全 先来一个:  取得指定月份的第一天与取得指定月份的最后一天  http ...

  7. PHP数组操作大全

    <?php /** * File: phpstudy : array_test.php * Created by PhpStorm. * User: IhMfLy Pheonix@jtv-070 ...

  8. Java 文件操作大全

    Java 文件操作大全 //1.创建文件夹 //import java.io.*; File myFolderPath = new File(str1); try { if (!myFolderPat ...

  9. SQL语句操作大全

    SQL语句操作大全   本文分为以下六个部分: 基础部分 提升部分 技巧部分 数据开发–经典部分 SQL Server基本函数部分 常识部分 一.基础 1.说明:创建数据库CREATE DATABAS ...

随机推荐

  1. 解决html中&nbsp;在不同浏览器中占位大小不统一的问题

    直接在html文档中使用 来表示空格,在不同浏览器中的占位大小是不一样的. 为什么呢,因为不同浏览器默认的字体是不一样的,不同字体下的空格表示 占位大小不一致. 这就好办了嘛,我们对 指定使用同样的字 ...

  2. OC语言前期准备

    OC语言前期准备 一.OC简介 Oc语言在c语言的基础上,增加了一层最小的面向对象语法,完全兼容C语言,在OC代码中,可以混用c,甚至是c++代码. 可以使用OC开发mac osx平台和ios平台的应 ...

  3. Hilbert space

    Definition A Hilbert space H is a real or complex inner product space that is also a complete metric ...

  4. Maven+SSM搭建总结(非教程)

    记录我用Maven搭建Spring+SpringMVC+Mybatis项目的过程. 网上关于这个的详细教程有很多,但是优质而适合自己看的需要自己筛选以下我看过的几篇认为讲的比较详细的资源(照着做吧,做 ...

  5. MATLAB 图像分类 Image Category Classification Using Bag of Features

    使用MATLAB实现图像的识别,这是MATLAB官网上面的例子,学习一下. http://cn.mathworks.com/help/vision/examples/image-category-cl ...

  6. Jmeter—4 添加断言 判断响应数据是否符合预期

    发出请求之后,通过添加断言可以判断响应数据是否是我们的预期结果. 1 在Jmeter中发送一个登录的http请求(参数故意输入错误).结果肯定是登陆失败啦. 但结果树中http请求的图标显示‘绿色’表 ...

  7. Android开源框架:Universal-Image-Loader解析(一)

    之前花了一些时间,好好看了下这个框架,于是决定再重新梳理一下,把整个处理方法和流程过一遍,俗话说:温故而知新嘛 关于Universal-Image-Loader此框架的各种优点,稍微介绍下,网上应该也 ...

  8. NSDate 时间比较...等

    http://blog.csdn.net/reylen/article/details/8560128 创建当前时间 NSDate *date = [NSDate date]; 从现在开始的24小时 ...

  9. Linux内核分析——操作系统是如何工作的

    万子惠 + 原创作品转载请注明出处 + <Linux内核分析> 实验部分 使用实验楼的虚拟机打开shell 然后cd mykernel 您可以看到qemu窗口输出的内容的代码mymain. ...

  10. As 和 Is的区别

    首先来说说As是干什么的: 代码: void OnMouseEnter(object sender, MouseEventArgs e){ Ellipse ell = sender as Ellips ...