有时候我们可能需要限定特定的用户进行访问,且用户需要使用数字证书进行访问,这也就是所谓的客户端证书认证。
其实做客户端认证并不是很难,首先你需要一个CA证书,一般情况下你可以使用一个自签名的证书用作CA证书,然后通过这个CA证书给别人的证书请求文件进行签名,然后客户端可以将自己的证书和私钥转成PFX格式的证书进行安装。下面还是主要介绍下服务器端实现的原理吧。
那么一个WEB应用如果需要开启客户端证书认证的话,就需要添加一些配置。
这里以Apache和Java举例。
Listen 8443
<VirtualHost _default_:8443>
JkMountCopy On
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile conf_ext/server.crt
SSLCertificateKeyFile conf_ext/server.key
SSLCACertificateFile conf_ext/intranet-ca.cer
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
SSLVerifyClient require
SSLVerifyDepth 10
SSLOptions +StdEnvVars
RequestHeader unset SSL_CLIENT_S_DN_Email
RequestHeader add SSL_CLIENT_S_DN_Email %{SSL_CLIENT_S_DN_Email}e
</VirtualHost>
这里是配置,将SSLVerifyClient设为require,并设置好CA证书,
这里除了使用ssl_mod外还使用了headers_mod这个模块,主要是为了将证书中的email添加到http的请求的头中。
RequestHeader unset SSL_CLIENT_S_DN_Email
这句主要是为了防止客户端自己将Email设置到http header中,所以这里做了一次清除工作之后再将认证通过的客户端证书通过
RequestHeader add SSL_CLIENT_S_DN_Email %{SSL_CLIENT_S_DN_Email}e
将dn的email设置进去。
之后比如Apache将请求转发给Jboss之类的Servlet容器后,
我们可以通过Java代码获得这个email。
String email = ((HttpServletRequest)request).getHeader("SSL_CLIENT_S_DN_Email");
至于之后你通过这个信息去做用户的认证以及登录就很简单了。
分享到:
相关推荐
C语言实现https客户端,使用证书的双向认证,上传资料中,包含证书和代码,证书使用openssl生成的RSA证书,也可换成自己的证书和服务端一致就行了。
使用Java实现根据ca购买到的根证书 批量生产客户端需要的.bks和.cer文件,从而实现双向认证
1. 实现OPC UA服务器功能,OPC UA服务器支持匿名访问、用户认证和客户证书认证。 2. 实现opc ua用户管理功能;管理OPC UA客户端通过用户认证访问服务端所需的用户名和密码。 3. 实现OPC UA访问证书管理功能;管理OPC...
使用Netty搭建服务端配置Https双向认证可以参考此代码
这是我实战的笔记,全程直播。 #### Tomcat和Openssl构建HTTPS双向认证 ###### ...Linux下安装OpenSSL 一、创建服务器证书、客户端证书以及CA ...2、配置Tomcat支持HTTPS双向认证(服务器将认证客户端证书)
本文实现了OpenSSL的CA跟证书的制作、服务器和客户端证书的制作,并使用node.js实现了服务器和客户端代码,也实现了java代码,同时验证了SSL/TLS单向和双向认证。
在WEB应用中使用基于数字证书的登录验证
它是用于相互认证的TLS / SSL客户端证书的实现。 当您要确保只有经过身份验证的客户端可以使用HTTPS或TLS连接与服务器通信时,此功能非常有用,以保护仅供优先使用的客户端使用的私有Web服务之类的内容。 相互身份...
证书吊销:用户发起证书吊销请求后,系统会为其更新 Certificate Revocation List (CRL),但考虑系统负荷,用户的吊销请求会被暂时记录,然后以天为单位更新,客户端可以通过 CRL Distribution Point(CRL 分发点...
包括了如何使用openssl指令生成客户端-服务端的证书和密钥,以及使用openssl自带server端来实现简单的ssl双向认证,client端代码中也做了相应的标注和说明,提供编译的Makefile.希望对开始学习如何使用openssl进行...
要实现SSL双向认证, 你必须同时配置Web服务器证书和客户端证书, 并且需要在服务器和客户端之间正确安装根证书。如此方可实现如文所示双向认证。
使用OpenSSL为基于IIS的站点创建服务器端证书及客户端证书,实现双向认证。
本规范规定了税务系统数字证书应用接口,包括客户端调用用户密码设备(如USBKEY)接口和应用服务器端调用签名及认证服务器接口,为完整实现税务系统数字证书身份认证、签名验签、数字信封加解密等应用功能提供接口。...
Flask-TLSAuth 集成了一个最小的证书颁发机构(CA)并实现了 TLS 客户端证书认证。 它依赖于 nginx 来处理 TLS 身份验证部分。 安装 pip install flask_tlsauth Flask-TLSAuth 依赖于 tlsauth,它提供了充当 CA 的...
该方案采用JAAS(Java Authentication Authorization Service)实现可插入式登录模块,采用X509数字证书作为用户身份认证,通过配置Web服务器,并利用服务器证书和客户端证书实现服务器与客户端之间的SSL双向认证;...
iNode智能客户端官方版提供802.1x、Portal、远程传输等多种认证方式,...支持基于PKI的证书认证功能 3.支持与Windows域管理器/LDAP服务器统一认证 4.支持PAP和CHAP验证协议 5.支持EAP-MD5、EAP-TLS、PEAP认证方式
异常身份验证提供安全的匿名客户端证书。 与密码身份验证相比,它以更少的麻烦提供了更好的安全性。 本文档介绍了它是如何实现的。 概括 异常身份验证将密码登录替换为客户端证书登录。 每个网站都运行自己的CA。 ...
最完美的https应用是能实现双向认证,客户端用私钥签名用服务端公钥加密,服务端用私钥签名客户端都公钥加密,但现实很多情况不可能让每个客户端都申请一个证书,因此只实现https的单项认证,即只要服务端又证书,...
提出并进行基于公钥证书的信息安全认证系统的设计与实现的研究,通过分析公钥证书及其关键技术,针对其在具体的信息安全领域内的应用,分析并实现对其相关的业务流程、布置方案、客户端、端口控制模块及服务器的设计,...
压缩包里有客户端源码和服务器端源码,支持TCP的双向认证,也支持WEBSOCKET的双向认证,内附测试 wss的测试例子, 需要生成PKCS12的证书,导入浏览器才可以测试。