Tomcat Java SSL

转自 - http://blog.csdn.net/szzt_lingpeng/article/details/51247980 转载自:http://my.oschina.net/cimu/blog/314023?fromerr=acPUSUMV

Keytool是一个Java数据证书的管理工具。Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里

一、Keytool介绍

Keytool是一个Java数据证书的管理工具。Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里,包含两种数据:

  1. 1.   密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)
  2. 2.   可信任的证书实体(trusted certificate entries)——只包含公钥

Alias(别名):每个 key/certification 都关联这一个独一无二的alias,这个alias通常不区分大小写

keystore的存储位置

在没有制定生成位置的情况下,keystore会存在与用户的系统默认目录, 如:对于window xp系统,会生成在系统的C:/Documents and Settings/UserName/ 文件名为“.keystore”

keystore的生成:

  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 -validity 36500

参数说明:

-genkey表示要创建一个新的密钥

-dname表示密钥的Distinguished Names,

CN=commonName  

OU=organizationUnit

O=organizationName

L=localityName

S=stateName

C=country

Distinguished Names表明了密钥的发行者身份

-keyalg使用加密的算法,这里是RSA

-alias密钥的别名

-keypass私有密钥的密码,这里设置为changeit

-keystore 密钥保存在D:盘目录下的mykeystore文件中

-storepass 存取密码,这里设置为changeit,这个密码提供系统从mykeystore文件中将信息取出

-validity该密钥的有效期为 36500表示100年 (默认为90天)

cacerts证书文件(The cacerts Certificates File)

改证书文件存在于java.home/lib/security目录下,是Java系统的CA证书仓库

二、准备工作

1.   验证是否已创建过同名的证书

  1. Window : keytool -list -v -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
  2. Linux : keytool -list -v -alias tomcat -keystore "$JAVA_HOME/jre/lib/security/cacerts" -storepass changeit

2.   删除已创建的证书

  1. Window : keytool -delete -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
  2. Linux : keytool -delete -alias tomcat -keystore "$JAVA_HOME/jre/lib/security/cacerts" -storepass changeit

三、创建证书

1.   服务器中生成证书:

(注:生成证书时,CN要和服务器的域名相同,如果在本地测试,则使用localhost)

  1. Window : keytool -genkey -alias tomcat -keyalg RSA -keystore d:/my.keystore -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass changeit -storepass changeit
  2. Linux : keytool -genkey -alias tomcat -keyalg RSA -keystore ~/my.keystore -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass changeit -storepass changeit

2.   导出证书,由客户端安装:

  1. window : keytool -export -alias tomcat -keystore d:/my.keystore -file d:/mycerts.cer -storepass changeit
  2. Linux : keytool -export -alias tomcat -keystore ~/my.keystore -file ~/mycerts.cer -storepass changeit

3.   客户端配置:为客户端的JVM导入密钥(将服务器下发的证书导入到JVM中)

  1. window : keytool -import -trustcacerts -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -file d:/mycerts.cer -storepass changeit
  2. Linux : keytool -import -trustcacerts -alias tomcat -keystore "$JAVA_HOME/jre/lib/security/cacerts" -file ~/mycerts.cer -storepass changeit

四、配置Tomcat SSL

修改server.xml中的SSL服务

  1. Window :

<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:/my.keystore" keystorePass="changeit"/>    

  1. Linux:

<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="~/my.keystore" keystorePass="changeit"/>  

五、常见问题

1.   未找到可信任的证书

主要原因为在客户端未将服务器下发的证书导入到JVM中,可以用以下命令来查看证书是否真的导入到JVM中。

  1. keytool -list -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit

2.   keytool错误:java.io.IOException:keystore was tampered with,or password was incorrect

原因是在你的home目录下是否还有.keystore存在。如果存在那么把他删除掉,后再执行

或者删除"%JAVA_HOME%/jre/lib/security/cacerts 再执行

建议直接删掉cacerts再导入

Tomcat配置https及访问http自动跳转至https  

完成上述操作就可以通过https://www.xxx.com:8443 或者 http://www.xxx.com:[port]访问网站;

  • 配置Tomcat
  1. 打开$CATALINA_HOME/conf/server.xml,修改如下:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

修改成

<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000"  redirectPort="443" />

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"

maxThreads="150" scheme="https" secure="true"

clientAuth="false" sslProtocol="TLS"/>

修改成

<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"

maxThreads="150" scheme="https" secure="true"

clientAuth="false" sslProtocol="TLS" keystoreFile="/etc/tomcat.keystore" keystorePass="changeit"/>

<Connector port="8009" enableLookups="false" protocol="AJP/1.3" redirectPort="8443" />

修改成

<Connector port="8009" enableLookups="false" protocol="AJP/1.3" redirectPort="443" />

  • 配置tomcat的web.xml在该文件末尾增加:强制https访问  
    及输入http:// 自动跳转https://

    配置如下:

<login-config>

<!-- Authorization setting for SSL -->

<auth-method>CLIENT-CERT</auth-method>

<realm-name>Client Cert Users-only Area</realm-name>

</login-config>

<security-constraint>

<!-- Authorization setting for SSL -->

<web-resource-collection >

<web-resource-name >SSL</web-resource-name>

<url-pattern>/*</url-pattern>

</web-resource-collection>

<user-data-constraint>

<transport-guarantee>CONFIDENTIAL</transport-guarantee>

</user-data-constraint>

</security-constraint>

时间: 2024-11-10 14:50:27

Tomcat Java SSL的相关文章

Tomcat服务器配置https协议(Tomcat HTTPS/SSL 配置)

通常商用服务器使用https协议需要申请SSL证书,证书都是收费的,价格有贵的有便宜的.它们的区别是发行证书的机构不同,贵的证书机构更权威,证书被浏览器否决的几率更小. 非商业版本可以通过keytool来生成. 用keytool工具生成证书与配置 1.相关工具说明 此处使用1.7.0_79版本,如图所示: 切换到jdk bin目录下面,如图: 证书密钥生成 1.创建证书 keytool -genkey -alias [your_alias_name] -keyalg RSA -keystore

使用HttpClient发送HTTPS请求以及配置Tomcat支持SSL

这里使用的是HttpComponents-Client-4.1.2 1 package com.jadyer.util; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.IOException; 7 import java.security.KeyManagementException; 8 import java

Tomcat配置SSL(8443

创建证书 证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书:本教程由于是演示所以就自己用JDK自带的keytool工具生成证书:如果以后真正在产品环境中使用肯定要去证书提供商去购买,证书认证一般都是由VeriSign认证,中文官方网站:http://www.verisign.com/cn/ 用JDK自带的keytool工具生成证书: keytool -genkey -alias wsria -keyalg RSA -keystore d:/keys/wsriakey

Tomcat java zabbix 监控

排除汤姆猫错误的步骤 ps-ef | grep java或jps –lvm 查看java pid进程 netstat –lntup | grep java 查看java 端口有没有启动 查看 tomcat 日志 tailf /application/tomcat/logs/catalina.out show-busy-java-threads.sh 打印系统排名前五的java进程,查看那个进程占用内存高. tomcat java远程监控 下载jkd http://www.oracle.com/t

Tomcat – java.lang.OutOfMemoryError: PermGen space Cause and Solution

Read more: http://javarevisited.blogspot.com/2012/01/tomcat-javalangoutofmemoryerror-permgen.html#ixzz3QDWa3Zqi Tomcat web server often suffers from java.lang.OutOfMemoryError: PermGen space whenever you deploy and undeploy your web application coupl

win7下安装配置tomcat,java运行环境

1.下载JDK,安装 官网下载地址:http://java.sun.com/javase/downloads/index.jsp 下载后,安装,选择你想把JDK安装的目录: 比如:JDK安装目录:E:\java 其他博文有说还要装JRE,其实JDK安装好了,就不需要安装JRE了,本身就有了. 2.设置JDK环境变量 右击“计算机”,点击“属性”,点击弹出界面的左部分的“高级系统设置”,选择“高级”选项卡,点击下部的“环境变量” 新建2个变量,编辑1个变量,分别填入以下信息,如图所示: 新建: 变

图文:CentOS 下对 Nginx + Tomcat 配置 SSL 实现服务器 / 客户端双向认证

1. 安装 nginx 1.1 nginx 包及其依赖包下载 出于模块的依赖性,Nginx 依赖以下三个包: gzip 模块需要 zlib 库(http://www.zlib.net/): rewrite 模块需要 pcre 库(http://www.pcre.org/): ssl 功能需要 openssl 库(http://www.openssl.org/): 分别下载它们的最新稳定版(截至本文最新稳定版分别是 zlib-1.2.8.tar.gz.pcre-8.36.tar.gz.openss

Java SSL Socket通讯示例

上一篇<OpenSSL与KeyStore指令小集>里面说到,最近研究SSL加密,会给出一个Java的小示例.复制一份可以运行的代码到生产上是非常不负责任的行为,不过小示例可以带我们入门,快速看清事物的本质.罗马不是一天建成的. 本文将给出一个Java SSL Socket的小例子,包括了Server和Client.希望大家上手之后,要多去研究相关的资料,理解基础概念.Java的优点是封装得比较彻底,需要介入的地方比较少,缺点是随着Java版本的升级和发展,会有很多新的概念和类涌出来,都要搞清楚

Embed Tomcat Java(内嵌tomcat启动简述)

简单记录一下内部tomcat启动 maven pom.xml <dependencies> <!-- embed tomcat dependency --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>8.5.28</version&g