tomcat 配置客户端证书认证
在完成配置客户端证书认证后,浏览器以https访问服务器的时候,会提示选择证书,之后,服务器端会验证证书。也就意味着只有拥有有效证书的客户端才能打开该网站。
以下是具体的配置过程。
1. 在服务器端生成相关证书
(1) 生成服务器证书容器。
/usr/java/jdk1..0_43/bin/keytool -validity -genkey -v -alias server_test -keyalg RSA -keystore server.keystore -dname "CN=105.12.201.31,OU=test,O=test,L=shanghai,ST=shanghai,c=cn" -storepass test001 -keypass test001
其中,
validity 指定了有效期多少天,
dname 设定了签名中包含的一些信息,其中注意,据说CN指定的ip地址需和访问的ip一致(未测试过不相同的时候是否就会拒绝)。
keyalg 指定签名的算法,RSA或者DSA
storepass和keypass分别指定容器存储密码和读取密码。设置成相同的密码,因为tomcat里只有一个密码的设置。
(2) 生成信赖的客户端证书容器
/usr/java/jdk1..0_43/bin/keytool -validity -genkey -v -alias server_test_trust -keyalg RSA -keystore server_trust.keystore -dname "CN=105.12.201.31,OU=test,O=test,L=shanghai,ST=shanghai,c=cn" -storepass test002 -keypass test002
(3) 生成客户端用秘钥对
/usr/java/jdk1..0_43/bin/keytool -validity -genkeypair -v -alias client_1 -keyalg RSA -storetype PKCS12 -keystore client_1.p12 -dname "CN=client_1,OU=test,O=test,L=shanghai,ST=shanghai,c=cn" -storepass test003 -keypass test003
导出客户端用证书
/usr/java/jdk1..0_43/bin/keytool -export -v -alias client_1 -keystore client_1.p12 -storetype PKCS12 -storepass test003 -rfc -file client_1.cer
(4) 将客户端用的证书导入至服务端信赖的客户端的证书容器
/usr/java/jdk1..0_43/bin/keytool -import -v -alias client_1 -file client_1.cer -keystore server_trust.keystore -storepass test002
2. 修改tomcat的配置文件 conf/server.xml
找到原先的https的配置部分,默认是处于注释状态,将它放开
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
/>
修改为:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS"
keystoreFile="${catalina.base}/keystore/server.keystore" keystorePass="test001"
truststoreFile="${catalina.base}/keystore/server_trust.keystore" truststorePass="test002"
/>
3. web app中设置强制SSL访问
WEB-INF/web.xml中
<!-- 强制SSL,即http请求自动跳转成https -->
<security-constraint>
<web-resource-collection>
<web-resource-name>SSL</web-resource-name>
<url-pattern>/*</url-pattern><!-- 全站使用SSL -->
</web-resource-collection>
<user-data-constraint>
<description>SSL required</description>
<!-- CONFIDENTIAL: 确保传输数据不被修改,不能被查看 -->
<!-- INTEGRAL: 确保传输数据不被修改 -->
<!-- NONE: 不做特殊限制-->
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
4. 客户端PC导入上面生成的 client_test.cer 以及 client_test.p12 后,重启浏览器,即可访问
初次访问会弹出选择证书的对话框,选中导入的cer证书即可。
tomcat 配置客户端证书认证的更多相关文章
- Tomcat 配置 HTTPS双向认证
Tomcat 配置 HTTPS 双向认证指引说明: � 本文档仅提供 Linux 操作系统下的指引 � 在阅读本指引前请您在 Linux 部署 JDK 和 Tomcatserver为了 Tomcat ...
- tomcat 配置域名证书
tomcat 配置域名证书 示例: <!--" protocol="HTTP/1.1" connectionTimeout=" redirectPort= ...
- tomcat配置SSL双向认证
一.SSL简单介绍 SSL(Secure Sockets Layer 安全套接层)就是一种协议(规范),用于保障客户端和服务器端通信的安全,以免通信时传输的信息被窃取或者修改. 怎样保障数据传输安全? ...
- tomcat 配置https (单向认证)
1.单向认证,就是传输的数据加密过了,但是不会校验客户端的来源 2.双向认证,如果客户端浏览器没有导入客户端证书,是访问不了web系统的,找不到地址 如果只是加密,单向就行 如果想要用系统的人没有证书 ...
- Tomcat配置SSL证书(PFX证书)
公司项目,应该是阿里云服务器 在windows2008 R2搭建的 Tomcat部署SSL证书,本文以PFX证书为例. 配置好之后开始 一.什么是SSL(证书)? SSL证书服务(Alibaba Cl ...
- tomcat配置SSL证书(使用startSSL申请到的证书)
1. 生成p12证书 生成完成后,下载保存. 2. 将p12文件上传至服务器上的tomcat/keystore/上,此处取名为test.com.p12 3. 修改tomcat/conf/server. ...
- tomcat配置ssl证书
1.server.xml 打开已经注释掉的代码 然后添加证书地址 <Connector SSLEnabled="true" clientAuth="want&qu ...
- tomcat配置SLL证书
1.将jks证书复制到conf目录下 2.解除注释:88行至96行 修改代码 <Connector port="443" protocol="org.apache. ...
- tomcat 配置https证书 ssl
修改tomcat-conf-server.xml,原配置文件是 <Connector connectionTimeout="20000" port="8080&qu ...
随机推荐
- Jmeter参数化
使用jmeter时有时需要访问不同的uri,或POST不同的数据.这时候可以对数据参数化,将数据写入文件,再从文件读取.下面举个例子说明如何使用CSV Data Set Config参数化. 这里有两 ...
- java类初始化的过程
在复习Thinking in java的过程中看到了相关内容,顺便整理一下,像下面一样的代码具体的执行顺序(ABCD都是类) public class A { public A(String text ...
- MSSQL 全表搜索 指定字符串
平时在在MSSql中查询数据的时候,想查找,某个字段在数据库中是否存在,并且查询出在哪个表中,哪个字段下面,在不知道的情况下,操作起来会很麻烦,然后就写了一个sql语句,使用起来感觉挺方便的.当然了, ...
- 导出csv文件示例
导出csv文件示例 csv文件默认以英文逗号,做为列分隔符换行符\n作为行分隔符,写入到一个.csv文件即可.含有英文逗号,和换行符会发生数据输出会出现混乱,下面列出一些处理方法.特殊字符处理1.含有 ...
- javascript客户端与服务器端通信
高性能的网络通信包括以下方面:选择正确的数据格式和与之匹配的传输技术. 一.数据格式 用于传输的数据格式有: 1)html,仅适用于特定场合,传输数据量大,不过它可以节省客户端的CPU周期, 2)XM ...
- Swift 写纯洁的TableviewCell
let initIdentifier = "员工" var cell = tableView.dequeueReusableCell(withIdentifier: initIde ...
- 为什么使用spring
现在基本的项目都会用到spring框架,那么我们为什么要使用spring呢?下面为大家总结一下,希望大家指正. spring是一个轻量级的容器框架,其核心是IOC(控制反转也叫依赖注入)和AOP(面向 ...
- 用花生壳实现内网映射,决解无域名、无公网IP、无服务器空间问题
无域名.无公网IP.无服务器空间用花生壳提供的免费内网映射吧.你的PC就是服务器,花生壳提供的自定义二级域名轻松访问你的个人网站. 1.首先你得注册哦,然后申请免费的域名(2个) 2.设置路由器,下面 ...
- 飞机大战编写以及Java的面向对象总结
面向对象课程完结即可编写一个简单的飞机大战程序.我觉得我需要总结一下 飞机大战中类的设计: 父类:FlyingObject(抽象类) 接口:Award .Enemy 子类:Hero.Bullet.Ai ...
- c#制作一个屏幕保护程序
代码已上传github 实现思路:纯黑窗体去边框,加入标签. 使用Timmer让windows 10标签运动.限制标签的行为. 代码: int deltX = 10; int deltY ...