tomcat7.0.55配置单向和双向HTTPS连接

HTTPS配置中分为单向连接和双向连接,单向连接只需要服务器安装证书,客户端不需要,双向连接需要服务器和客户端都安装证书

一、单向HTTPS连接

检查命令行当前工作目录(C:\Users\test\)下的有无.keystore文件,如果有,则删除。

先测试两个keytool命令

1、keytool -help

结果如下

C:\Users\test>keytool -help
密钥和证书管理工具

命令:

 -certreq            生成证书请求
 -changealias        更改条目的别名
 -delete             删除条目
 -exportcert         导出证书
 -genkeypair         生成密钥对
 -genseckey          生成密钥
 -gencert            根据证书请求生成证书
 -importcert         导入证书或证书链
 -importpass         导入口令
 -importkeystore     从其他密钥库导入一个或所有条目
 -keypasswd          更改条目的密钥口令
 -list               列出密钥库中的条目
 -printcert          打印证书内容
 -printcertreq       打印证书请求的内容
 -printcrl           打印 CRL 文件的内容
 -storepasswd        更改密钥库的存储口令

使用 "keytool -command_name -help" 获取 command_name 的用法

2、keytool -genkey -help

C:\Users\test>keytool -genkey -help
keytool -genkeypair [OPTION]...

生成密钥对

选项:

 -alias <alias>                  要处理的条目的别名
 -keyalg <keyalg>                密钥算法名称
 -keysize <keysize>              密钥位大小
 -sigalg <sigalg>                签名算法名称
 -destalias <destalias>          目标别名
 -dname <dname>                  唯一判别名
 -startdate <startdate>          证书有效期开始日期/时间
 -ext <value>                    X.509 扩展
 -validity <valDays>             有效天数
 -keypass <arg>                  密钥口令
 -keystore <keystore>            密钥库名称
 -storepass <arg>                密钥库口令
 -storetype <storetype>          密钥库类型
 -providername <providername>    提供方名称
 -providerclass <providerclass>  提供方类名
 -providerarg <arg>              提供方参数
 -providerpath <pathlist>        提供方类路径
 -v                              详细输出
 -protected                      通过受保护的机制的口令

使用 "keytool -help" 获取所有可用命令

3、使用keytool -genkey命令生成密钥对,别名为tomcat,默认生成在当前目录,这里的口令不回显,至少输入6位,笔者输入的是12345678

C:\Users\test>keytool -genkey -alias tomcat -keyalg RSA
输入密钥库口令:
您的名字与姓氏是什么?
  [Unknown]:  localhost
您的组织单位名称是什么?
  [Unknown]:  com
您的组织名称是什么?
  [Unknown]:  co
您所在的城市或区域名称是什么?
  [Unknown]:  Dalian
您所在的省/市/自治区名称是什么?
  [Unknown]:  Liaoling
该单位的双字母国家/地区代码是什么?
  [Unknown]:  CN
CN=localhost, OU=com, O=co, L=Dalian, ST=Liaoling, C=CN是否正确?
  [否]:  y

输入 <tomcat> 的密钥口令
        (如果和密钥库口令相同, 按回车):

C:\Users\test>

命令完成之后会在C:\Users\test目录下生成一个.keystore文件

4、把生成的.keystore文件剪切到tomcat的conf目录

如果习惯使用命令,可以输入如下命令

C:\Users\test>move .keystore D:\apache-tomcat-7.0.55\conf
移动了         1 个文件。

5、查看conf\server.xml
找到port="8443"的例子,把注释中间的内容复制出来。笔者找到的内容如下

    <!--
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />
    -->

把<!-- -->之间的内容复制出来,然后添加上keystore文件路径和keystore密码

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="conf/.keystore" keystorePass="12345678"/>

然后用浏览器打开如下网址

https://localhost:8443/

如果浏览器提示证书不受信任,点继续浏览即可。单向连接配置完成。

上文中回避了一个问题:密钥库使用的密钥与后面服务器使用的证书<tomcat>密钥不一致时,上面的配置启动会报错。

解决方法,在server.xml的<connector>标签里加上别名keyAlias和别名密码keyPass,如果创建.keystore使用的密钥库密钥为12345678,别名为tomcat密钥为12341234,则配置如下:

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               keystoreFile="conf/.keystore" keystorePass="12345678"
               keyAlias="tomcat" keyPass="12341234" />

二、双向HTTPS连接

下面我们来配置双向HTTPS连接

为了更清晰的表述,下面这张图代表了整个流程(虽然不是流程图)

1、创建服务器密钥库,密钥库类型为JKS(默认就是JKS,也可以通过-storetype参数指定),名称为server.keystore,同时创建第一个条目,别名为tomcat

命令如下

keytool -genkey -v -alias tomcat -keyalg RSA -storetype JKS -validity 3650  -keystore server.keystore -dname "CN=localhost,OU=Unknown,O=Unknown,L=Unknown,ST=Unknown,c=Unknown" -storepass 12345678 -keypass 12341234

结果如下

C:\Users\test>keytool -genkey -v -alias tomcat -keyalg RSA -storetype JKS -v
alidity 3650  -keystore server.keystore -dname "CN=localhost,OU=Unknown,O=Unknow
n,L=Unknown,ST=Unknown,c=Unknown" -storepass 12345678 -keypass 12341234
正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 3,650
 天):
         CN=localhost, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
[正在存储server.keystore]

C:\Users\test>

2、创建客户端密钥库,密钥库类型为PKCS12(通过-storetype参数指定),名称为client.p12,同时创建第一个条目,别名为client1

创建命令

keytool -genkey -v -alias client1 -keyalg RSA -storetype PKCS12   -validity 3650  -keystore client.p12 -dname "CN=client1,OU=Unknown,O=Unknown,L=Unknown,ST=Unknown,c=Unknown" -storepass 12345678

结果

C:\Users\test>keytool -genkey -v -alias client1 -keyalg RSA -storetype PKCS1
2   -validity 3650  -keystore client.p12 -dname "CN=client1,OU=Unknown,O=Unknown
,L=Unknown,ST=Unknown,c=Unknown" -storepass 12345678
正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 3,650
 天):
         CN=client1, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
[正在存储client.p12]

C:\Users\test>

查看命令

keytool -list -storetype PKCS12 -keystore client.p12 -storepass 12345678

结果

C:\Users\test>keytool -list -storetype PKCS12 -keystore client.p12 -storepas
s 12345678

密钥库类型: PKCS12
密钥库提供方: SunJSSE

您的密钥库包含 1 个条目

client1, 2015-5-10, PrivateKeyEntry,
证书指纹 (SHA1): F4:8B:10:4A:3F:B6:EE:BF:A7:29:52:BC:37:C8:A9:D9:81:A4:2F:20

C:\Users\test>

3、将客户端的条目1导出为cer证书,导出的cer证书供浏览器导入使用,在后一步中导入到服务器证书库让服务器信任客户端的证书

命令

keytool -export -alias client1 -keystore client.p12 -storetype PKCS12 -storepass 12345678 -rfc -file client1.cer 

结果

C:\Users\test>keytool -export -alias client1 -keystore client.p12 -storetype
 PKCS12 -storepass 12345678 -rfc -file client1.cer
存储在文件 <client1.cer> 中的证书

C:\Users\test>

4、将上一步导出的cer证书导入到服务器密钥库server.keystore

命令

keytool -import -v -alias sclient1 -file client1.cer -keystore server.keystore -storepass 12345678

结果

C:\Users\test>keytool -import -v -alias sclient1 -file client1.cer -keystore
 server.keystore -storepass 12345678
所有者: CN=client1, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
发布者: CN=client1, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
序列号: 50035e11
有效期开始日期: Sun May 10 23:48:18 CST 2015, 截止日期: Wed May 07 23:48:18 CST
2025
证书指纹:
         MD5: 12:FC:B0:83:F4:AB:E3:23:09:95:3F:7D:72:01:C2:FB
         SHA1: F4:8B:10:4A:3F:B6:EE:BF:A7:29:52:BC:37:C8:A9:D9:81:A4:2F:20
         SHA256: AB:3C:44:C0:1E:83:15:2B:E7:D9:93:33:B1:71:34:F3:85:FD:FB:64:CA:
58:96:16:40:EA:A7:7B:41:9C:A2:A7
         签名算法名称: SHA256withRSA
         版本: 3

扩展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 6D 0C 03 84 A0 80 F7 05   D7 9B 9C F9 96 CC 03 A5  m...............
0010: 05 1A 92 6C                                        ...l
]
]

是否信任此证书? [否]:  y
证书已添加到密钥库中
[正在存储server.keystore]

C:\Users\test>

查看是否导入成功,命令

keytool -list -keystore server.keystore -storepass 12345678

结果

C:\Users\test>keytool -list -keystore server.keystore -storepass 12345678

密钥库类型: JKS
密钥库提供方: SUN

您的密钥库包含 2 个条目

sclient1, 2015-5-10, trustedCertEntry,
证书指纹 (SHA1): F4:8B:10:4A:3F:B6:EE:BF:A7:29:52:BC:37:C8:A9:D9:81:A4:2F:20
tomcat, 2015-5-10, PrivateKeyEntry,
证书指纹 (SHA1): 66:55:9E:65:D2:EB:17:62:E8:8E:1E:F5:01:C6:AC:C5:86:7D:52:78

C:\Users\test>

上述过程完成后,证书生成工作做完了,在C:\Users\test目录可以看到server.keystore、client.p12、client1.cer三个文件

1.下面配置tomcat

将server.keystore复制到D:\apache-tomcat-7.0.55\conf目录下,并对server.xml加入如下配置

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="true" sslProtocol="TLS"
               keystoreFile="conf/server.keystore" keystorePass="12345678"
               keyAlias="tomcat" keyPass="12341234"
               truststoreFile="conf/server.keystore" truststorePass="12345678"/>

2.将client1.cer证书导入浏览器

火狐:菜单-->选项-->查看证书-->您的证书-->导入  在对话框中找到client1.cer即可

火狐支持的导入方式:PKCS12文件(*.p12;pfx)、证书文件(*.p7b;*.crt;*.cert;*.cer;*.pem;*.der)

IE11:工具-->Internet选项-->内容-->证书-->个人-->导入-->下一步--》浏览中找到client1.cer即可

时间: 2024-07-30 10:19:45

tomcat7.0.55配置单向和双向HTTPS连接的相关文章

tomcat7.0.55配置单向和双向HTTPS连接(二)

上一篇文章:tomcat7.0.55配置单向和双向HTTPS连接 只是简要的配置了一下HTTPS,还有许多问题没有解决,本篇来解决这些文件 首先按照这篇文章:Widows下利用OpenSSL生成证书来生成证书,由于tomcat7目前只支持JKS.PKCS11.PKCS12密钥存储库,下面我们把得到的证书转换成这几种格式 将CA公钥存到信任密钥库 keytool -import -file keys\ca.crt -alias firstCA -keystore keys\myTrustStore

tomcat7.0.55配置HTTP强制跳转到HTTPS

首先需要配置好HTTPS单向或双向链接 参考: tomcat7.0.55配置单向和双向HTTPS连接(二) 然后编辑tomcat的conf目录下的web.xml 在<welcome-file-list>结束标签之后添加 <login-config> <!-- Authorization setting for SSL --> <auth-method>CLIENT-CERT</auth-method> <realm-name>Clie

Apache2.2+Tomcat7.0整合配置详解

一.简单介绍 Apache.Tomcat Apache HTTP Server(简称 Apache),是 Apache 软件基金协会的一个开放源码的网页服务器,可以在 Windows.Unix.Linux 等操作系统中运行是最流行的Web服务器软件之一.Apache 反应速度快,运行效率高,但只支持HTML等静态页面(加载插件后也可支持 PHP 页面).Apache Tomcat 是由 Apache 软件基金协会与 Sun 公司联合开发的一款Web服务器,它除了支持HTML等静态页面外,还支持J

Apache2.4+Tomcat7.0整合配置详解

一.简单介绍 Apache.Tomcat Apache HTTP Server(简称 Apache),是 Apache 软件基金协会的一个开放源码的网页服务器,可以在 Windows.Unix.Linux 等操作系统中运行是最流行的Web服务器软件之一.Apache 反应速度快,运行效率高,但只支持HTML等静态页面(加载插件后也可支持 PHP 页面).Apache Tomcat 是由 Apache 软件基金协会与 Sun 公司联合开发的一款Web服务器,它除了支持HTML等静态页面外,还支持J

Tomcat7.0安装配置详细

http://www.jb51.net/article/51909.htm 2.添加系统环境变量,我的电脑->属性->高级系统设置->环境变量(操作同上) (1)变量名: CATALINA_BASE     变量值: D:\Program Files\apache-tomcat-7.0.22(Tomcat解压到的目录)(2)变量名: CATALINA_HOME     变量值: D:\Program Files\apache-tomcat-7.0.22(3)变量名: CATALINA_T

Linux Tomcat7.0安装配置实践总结

一,安装JDk 先下载jdk,链接http://www.oracle.com/technetwork/java/javase/downloads/index.html,选择相对应平台的JDK.由于笔者系统是32位的,所以我下载的包是 jdk-8u31-linux-i586.tar.gz. 解压jdk,移动并重命名.tar -zxvf jdk-8u31-linux-i586.tar.gzmv jdk1.8.0_31 /usr/local 编辑环境变量,定义JAVA_HOME  CLASSPATH

tomcat7.0 的配置

一.安装JDK 1.7 1.添加环境变量:在 我的电脑->属性->高级->环境变量 2.新建系统变量,变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.7.0 (JDK的安装目录) 3.在原有的系统变量 Path后面加上英文分号, 再添加%JAVA_HOME%\bin;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\jre\bin; 不要删除原来的.看清楚,它们之间的分号,是英文的分号. 4.重启电脑生效(因为添加的是系统变量

Tomcat7.0安装配置详细(图文)

说明:Tomcat服务器上一个符合J2EE标准的Web服务器,在tomcat中无法运行EJB程序,如果要运行可以选择能够运行EJB程序的容器WebLogic,WebSphere,Jboss等Tomcat的下载: http://tomcat.apache.org/ 1.进入上面的网站然后如下操作使用Window Service Installer(为Window 添加服务) 2.然后我们进行安装 说明一下:以前的版本是没有关于Role的设定,到了7.0的时候就有有关的设定,这也说明Tomcat对权

阿里云上安装JDK,tomcat7.0,配置

把压缩文件放到指定的文件目录后,解压jdk,tomcat, 配置: 配置java环境变量修改bin目录下的catalina.sh文件: 配置java环境export JAVA_HOME=/usr/local/jdk1.7.0_80/(你的jdk的安装路径)export JRE_HOME=/usr/local/jdk1.7.0_80/jre/(你的jre的路径) 修改 内存配置JAVA_OPTS="-server -Xms512m -Xmx1024m -Djava.awt.headless=tru