tomcat 配置客户端证书认证

在完成配置客户端证书认证后,浏览器以https访问服务器的时候,会提示选择证书,之后,服务器端会验证证书。也就意味着只有拥有有效证书的客户端才能打开该网站。

以下是具体的配置过程。

1. 在服务器端生成相关证书

(1) 生成服务器证书容器。

/usr/java/jdk1.6.0_43/bin/keytool -validity 36500 -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.6.0_43/bin/keytool -validity 36500 -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.6.0_43/bin/keytool -validity 36500 -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.6.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.6.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证书即可。

时间: 2024-10-09 23:18:22

tomcat 配置客户端证书认证的相关文章

客户端证书认证请求实操

问题1:什么叫做客户端证书认证? 答案:通过客户端证书(服务端分发的私人证书或者是通过第三方认证的证书)+账号密码进行身份认证的行为. 问题2:为什么有客户端证书这么个东西? 答案:如何加强服务器的用户身份验证系统?一个方法是通过服务端证书认证,就是通过https进行访问.另一个方法是客户端证书认证.通过暴力破解的方式任然可以获取到用户密码,尽管有强密码策略,仅仅只是依靠密码还是不太保险,这个时候就需要客户端证书认证.用户通过服务端颁发的证书+密码,可以极大的加强安全性. 问题3:怎么使用客户端

tomcat配置https单向认证

1. https单向认证原理 "单向认证",即"浏览器"验证"服务器"的证书是否合法,从而判断正在访问的网站是否可信.这也是当前网络上最常用的认证方式,GitHub.Google.Twitter.Facebook等均采用此种方式. "单向认证"的两个通信实体如下 他们之间的通信过程如下 下面给出简要的文字说明 客户端访问服务器 服务器响应客户端,发送服务器证书给客户端 客户端查询"受信任根证书颁发机构",验

tomcat配置SSL双向认证

一.SSL简单介绍 SSL(Secure Sockets Layer 安全套接层)就是一种协议(规范),用于保障客户端和服务器端通信的安全,以免通信时传输的信息被窃取或者修改. 怎样保障数据传输安全?  客户端和服务器端在进行握手(客户端和服务器建立连接和交换参数的过程称之为握手)时会产生一个“对话密钥”(session key),用来加密接下来的数据传输,解密时也是用的这个“对话密钥”,而这个“对话密钥”只有客户端和服务器端知道.也就是说只要这个“对话密钥”不被破解,就能保证安全. 2. 客户

tomcat 配置https (单向认证)

1.单向认证,就是传输的数据加密过了,但是不会校验客户端的来源 2.双向认证,如果客户端浏览器没有导入客户端证书,是访问不了web系统的,找不到地址 如果只是加密,单向就行 如果想要用系统的人没有证书就访问不了系统的话,就采用双向认证 第一步:为服务器生成证书 使用keytool为Tomcat生成证书,假定目标机器的域名是“localhost”,keystore文件存放在 “e:\\tomcat.keystore”,口令为“123456”,使用如下命令生成: keytool -genkey -a

Nginx 配置https证书认证

一.什么是SSL证书 SL证书全程:SSL安全通道(Secure socket layer(SSL).该安全协议主要用来提供对用户和服务器的认证:对传送的数据进行加密和隐藏:确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准. SSL证书是数字证书的一种,类似于驾驶证.护照和营业执照的电子副本.因为配置在服务器上,也称为SSL服务器证书. SSL 证书就是遵守 SSL协议,由受信任的数字证书颁发机构CA(如VeriSign),在验证服务器身份后颁发,具有服务器身份验证和数据传

tomcat配置SLL证书

1.将jks证书复制到conf目录下 2.解除注释:88行至96行 修改代码 <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="www.kjch.xyz" > <SSL

Tomcat配置HTTPS方式生成安全证书

原文:http://www.cnblogs.com/visec479/p/4152827.html 在Tomcat 6中配置SSL双向认证是相当容易的,本文将介绍如何使用JDK的keytool来为Tomcat配置双向SSL认证.并实现批量生成证书 系统需求:JDK 5.0Tomcat 6.0.16启动命令行:第一步:为服务器生成证书 使用keytool为Tomcat生成证书,假定目标机器的域名是localhost或者"192.168.1.1",keystore文件存放在"D:

nodejs 客户端证书设置。

最近的系统要求较高的安全等级 https+usbkey证书 https的操作很简单 openssl 生成ca 和证书,配置启动即可 生成成功后,类似这样. 类似这样 var options = { key: fs.readFileSync(__dirname + '/server.key'), cert: fs.readFileSync(__dirname+'/server.pem'), ca: fs.readFileSync(__dirname+'/ca.crt'), auth:"1CUI&q

Apache配置https证书并跳转

对于网站实现https安全访问,需要做到以下几步:1.在域名解析商处申请ssl证书,该证书可以免费申请,申请下来后包括很多web配置的证书类型如下图:2.搭建web服务,我这里搭建的环境是LAMP环境.3.将ssl证书上传至对应的目录.4.配置ssl证书的认证访问.5.配置httpd的host访问.具体配置如下:域名的解析方式,在这里就不做赘述了.1. 关于lamp的环境搭建我这里使用的yum安装的环境,系统为centos6.9关于环境的搭建这里不进行介绍.LAMP环境安装完成后,确认是否有默认