Tomcat配置https加密连接
配置https安全连接(ssl加密连接)
https连接需要用到数字证书与数字签名(MD5算法),网站https连接首先需要申请数字证书,配置加密连接器,浏览器安装证书。
证书运用到RSA技术,RSA加密算法是一种非对称加密算法,服务器保留私钥,对外公开公钥(cer证书)。
Tomcat秘钥库类型为JKS(Java Key Storage),很容易知道这是 JAVA 的专属格式,利用 JAVA 的一个叫 keytool 的工具可以进行格式转换。一般用于 Tomcat 服务器。
单向认证
生成服务端秘钥库
使用java的工具keytool产生数字证书,tomcat.keystore可以写在需要生成的路径。此句是生成tomcat.keystore(需要设置秘钥库密码),并在tomcat.keystore中生成服务端证书私钥(需要设置私钥密码)。
keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "tomcat.keystore" -validity 36500 //生成秘钥库,并生成别名为tomcat的私钥(条目类型PrivateKeyEntry)
参数说明:
-genkeypair:生成一对非对称密钥;
-alias:指定密钥对的别名,该别名是公开的;
-keyalg:指定加密算法,本例中的采用通用的RAS加密算法;
-keystore:密钥库的路径及名称,不指定的话,默认在操作系统的用户目录下生成一个".keystore"的文件;
-validity:设置秘钥有效期,单位为天,36500即为100年;
中间根据提示设置密码(秘钥库密码、服务器证书私钥密码),生成文件.keystore。

注意:
1.密钥库的密码至少必须6个字符,可以是纯数字或者字母或者数字和字母的组合等等
2."名字与姓氏(CN)"应该是输入域名,而不是我们的个人姓名,本机可用localhost,其他的可以不填
将文件.keystore放到Tomcat服务器的conf目录下(不移动也可以,在xml中配置时写指定路径即可)
cp tomcat.keystore /usr/local/tomcat/server/conf/
根据秘钥库生成证书
这里根据keystore中服务端证书的私钥生成cer的服务端公钥cer证书。需要输入秘钥库密码
keytool -export -alias tomcat -keystore tomcat.keystore -rfc -file tomcatserver.cer //根据keystore秘钥库中别名为tomcat的条目(私钥),生成cer证书(公钥)
生成的服务端公钥证书有效期为上面私钥设置的有效期
参数说明:
-alias tomcat //要处理的条目的别名(秘钥库中的条目)
-keystore tomcat.keystore //密钥库名称,为刚才导出的秘钥库
-rfc //以 RFC 样式输出
-file tomcatserver.cer //输出文件名

单向认证配置
在客户端安装tomcatserver.cer到受信任的根证书颁发机构;配置server.xml,clientAuth客户端认证要设置为false。
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https"
secure="true" clientAuth="false" sslProtocol="TLS"
keystoreFile="conf/tomcat.keystore" keystorePass="秘钥库密码"/>
测试
查看证书
IE浏览器 -> Internet选项 -> 内容 -> 证书 -> 受信任的根证书颁发机构,找到上面输入的名字与姓氏(CN)输入的东西。

打开IE测试,发现localhost的进不去,127.0.0.1的可以进去。因为生成证书时名字与姓氏(CN)输入的127.0.0.1(客户端访问服务器端的IP)。

其他常用命令
导入其他的证书到密钥库
导入后条目类型为trustedCertEntry,配置文件要配置truststoreFile,这个一般用于客户端证书(公钥)的导入。
只是导入了cer证书的私钥,不含有公钥,要再根据秘钥库中导入的证书alias执行export操作。
keytool -import -file tomcatclient.cer -storepass -keystore tomcat.keystore -alias aeolian
参数说明:
-file tomcat-client2.cer //必须,证书文件名称
-keystore tomcat.keystore //必须,密钥库名称,创建服务端秘钥库的文件
-alias aeolian //推荐写,要导入的证书别名(决定此证书导入到秘钥库中的别名),不写默认为mykey,再次导入会提示别名mykey已存在
-storepass //不推荐写,密钥库密码。回车后会提示你输入秘钥库密码
在密钥库中删除条目
这里一般也是删除受信任的客户端证书的公钥
keytool -delete -keystore tomcat.keystore -alias mykey //删除秘钥库中别名为mykey的条目
修改秘钥库中证书条目的口令
keytool -keypasswd -keystore tomcat.keystore -alias mykey //更改别名为mykey条目的密码,需要输入秘钥库密码
查看秘钥库内容
keytool -list -v -keystore tomcat.keystore //要输入秘钥库密码

查看证书内容
keytool -printcert -file tomcatclient.cer

双向认证
上面的为服务端证书,在此基础上,双向认证还需要客户端证书。客户端证书是先生成p12的客户端私钥,再根据p12转成cer,把cer(公钥)导入keystore并命名alias。
生成PKCS12格式的客户端证书
为客户端生成证书,为了让证书顺利导入IE和Firefox,证书格式应该是PKCS12。要输入客户端证书密码。tomcat-client.p12为客户端私钥。这里也要输入CN,和上面服务器证书的CN一样即可。
keytool -genkey -v -alias tomcatclientp12 -keyalg RSA -storetype PKCS12 -keystore tomcat-client.p12 -validity 3650
让服务器信任户端证书
由于是双向SSL认证,服务器必须要信任客户端证书.由于不能直接将PKCS12直接将PKCS12的格式的证书导入证书库,必须先把客户端证书导出为一个单独的cer文件,然后再把cer文件导入秘钥库。
keytool -export -alias tomcatclientp12 -keystore tomcat-client.p12 -storetype PKCS12 -storepass P12证书秘钥 -rfc -file tomcat-client-p12.cer //导出客户端公钥,要输入密码
keytool -import -v -file tomcat-client-p12.cer -keystore tomcat.keystore -alias tomcatclientpub //将客户端证书公钥导入到服务器的秘钥库,并为客户端公钥起一个别名
浏览器安装P12证书
IE浏览器 -> Internet选项 -> 内容 -> 证书 -> 个人 -> 导入 ->选择tomcat-client.p12,安装完成后个人栏显示即可(p12发现直接安装虽然显示成功但是个人栏里面不显示)。

配置文件
修改conf/server.xml文件,修改加密连接器,添加keystoreFile(服务端证书私钥)与keystorePass(客户端证书公钥),把protocol换为HTTP/1.1。clientAuth表示客户端是否认证,双向认证设为true。
<Connector port="9443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https"
secure="true" clientAuth="true" sslProtocol="TLS"
keystoreFile="conf/tomcat.keystore" keystorePass="秘钥库密码"
truststoreFile="conf/tomcat.keystore" truststorePass="秘钥库密码"/>
测试
访问https://localhost:9443/cas/login依然进不去,因为证书CN不为localhost。

访问https://127.0.0.1:9443/cas/login,首先弹出确认证书信息,点击确认后可以正常访问。


证书总结
tomcat-client-p12.cer:客户端证书的公钥(双向认证特有,最终导入到tomcat.keystore里面)
tomcat-client.p12:客户端证书的私钥(双向认证特有,客户端安装,导入到个人证书下面,否则不起作用)
tomcatserver.cer :服务端证书的公钥(客户端安装,受信任的根证书颁发机构下面)
tomcat.keystore:服务端证书库,既包含服务端私钥,又包含客户端公钥(服务器conf下面)
浏览器安装证书
双击tomcatserver.cer证书安装到受信任的根证书颁发机构。
Internet导入p12证书到个人证书。
最好用IE浏览器测试(一般浏览器只信任大厂颁发的证书,所以看起来不明显)。
若服务端公钥不在受信任的根证书颁发机构下面,浏览器(IE)访问时会提示不安全。

若客户端私钥证书安装不在个人下面,可能会出现下面的情况。
Chrome出现:ERR_BAD_SSL_CLIENT_AUTH_CERT
IE出现:无法安全地连接到此页面 这可能是因为该站点使用过期的或不安全的 TLS 安全设置。如果这种情况持续发生,请与网站的所有者联系。 TLS 安全设置未设置为默认设置,这也可能导致此错误。
双向认证最终效果图:

Tomcat配置https加密连接的更多相关文章
- Tomcat8配置Https协议,Tomcat配置Https安全访问,Tomcat Https配置
Tomcat8配置Https协议,Tomcat配置Https安全访问,Tomcat Https配置 ============================== ©Copyright 蕃薯耀 2017 ...
- Tomcat 配置 HTTPS双向认证
Tomcat 配置 HTTPS 双向认证指引说明: � 本文档仅提供 Linux 操作系统下的指引 � 在阅读本指引前请您在 Linux 部署 JDK 和 Tomcatserver为了 Tomcat ...
- tomcat配置https协议
tomcat配置https协议 1.找到本地jdk底下的bin目录,bin目录底下存在文件keytool.exe(在bin目录下空白处,按住shift右击,打开命令窗口,如下图) 2.在cmd的命令窗 ...
- 用keytool制作证书并在tomcat配置https服务(二 )
用keytool制作证书并在tomcat配置https服务(一) 双向认证: 我们上边生成了服务端证书,并发送给客户端进行了验证. 双向认证是双向的,因此还差客户端证书. 1.为方便导入浏览器,生成p ...
- 用keytool制作证书并在tomcat配置https服务(一)
https分为单项认证和双向认证. 一般https页面上的访问都是单项认证,服务端发送数字证书给客户端,客户单方面验证.而服务端不做验证. 而双向认证,需要双方都有证书,然后发送给对方进行验证.一般用 ...
- Nginx、Tomcat配置https
一.Nginx.Tomcat配置https 前提就是已经得到了CA机构颁发的证书 一.合并证书 1.假设证书文件如下 秘钥文件server.key,证书CACertificate-INTERMEDIA ...
- tomcat配置https–采用JDK自带的keytool工具生成证书
转自:http://blog.csdn.net/huangxinyu_it/article/details/41693633 有关http与https的区别请看<浅谈http与https的区别( ...
- 用tomcat配置https自签名证书,解决 ios7.1以上系统, 苹果inHouse发布
用tomcat配置https自签名证书,解决 ios7.1以上系统苹果inHouse发布不能下载安装的问题教程,话说,我其实最讨厌配置某某环境了,因为某一个小环节一旦出错,你的所有工作往往会功亏一篑, ...
- 用keytool制作证书并在tomcat配置https服务(四)
用keytool制作证书并在tomcat配置https服务(一) 用keytool制作证书并在tomcat配置https服务(二) 用keytool制作证书并在tomcat配置https服务(三) 上 ...
随机推荐
- $().ready()与window.onload的不同
1.执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行. $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. 2 ...
- ajax有哪些方法可以实现跨域?他们都有哪些局限性?
1.服务器端代理:在服务器端设置一个代理,由服务器端向跨域下的网站发出请求,再将请求结果返回给前端. 属于后端的技术,实现起来最麻烦. 2.jsonP,只支持get方式调用. 3.XHR2(cors) ...
- git提交代码时出现was rejected by remote错误
git常见问题 git是大家在公司基本都项目管理工具,有一次在改了一个bug提交远程提交就出现问题了. 解决方案 首先这个是远程提交的时候被项目权限拦截掉了,一般在我们都用配置ssh公钥的方式操作,那 ...
- svn Server authz 配置示例(文件夹权限配置)
[aliases] [groups] admin = jiangzhehao technology = chenlei,liulei,xunzheng,qiaomingjie sales = chen ...
- postcss 将px转换成rem vuecli3+vant+vue+postcss
1.安装 npm install postcss-pxtorem --save 2.找到postcss.config.js 默认是这样 module.exports = { "plugins ...
- 2018-2019-2 20165313 《网络对抗技术》 Exp 9 Web安全基础
一.实验要求 本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目,共3.5分.包括(SQL,XSS,CSRF).Webgoat实践下相关实验. 二.实验问题回答 (1)SQL注入攻击原理,如 ...
- Linux桌面环境
早期的 Linux 系统都是不带界面的,只能通过命令来管理,比如运行程序.编辑文档.删除文件等.所以,要想熟练使用 Linux,就必须记忆很多命令. 后来随着 Windows 的普及,计算机界面变得越 ...
- Keras 使用过程问题汇总
以下是Keras 使用过程出现的一些问题: (1)Keras 后端选择问题 一开始是选用的Theano,结果迭代一轮所花时间很长: 后面改用:TensorFlow作为后端,结果果然变快了: 改完Ten ...
- scaffold
#!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import print_function import argparse ...
- Docker快速搭建Zookeeper和kafka集群
使用Docker快速搭建Zookeeper和kafka集群 镜像选择 Zookeeper和Kafka集群分别运行在不同的容器中zookeeper官方镜像,版本3.4kafka采用wurstmeiste ...