最终效果,插上uKey(专业术语叫uKey,长得像一个普通的u盘),可以访问某个web系统,拔掉uKey,web系统显示没有权限
一 基础概念
单向认证:当客户访问服务器的时候,客户方去校验服务器是否是自己想去访问的服务器;
双向认证:不仅仅需要用户浏览器校验服务器数字证书,还需要服务器端验证用户是否是可信的;
二 单向认证流程(springboot项目为例)
1 制作证书
直接利用keytools工具生成
keytool -genkey -alias client -keyalg RSA -keystore client.p12 -validity 360 -storepass 123456 -storetype PKCS12 -keysize 2048 -dname "CN=127.0.0.1, OU=dazhen, O=dazhen, L=CD, ST=CD, C=CN"
2 配置证书
## 服务端
server.ssl.trust-store=D:\\ca\\www\\127\\server.p12
server.ssl.trust-store-password=123456
server.ssl.trust-store-type=JKS
server.ssl.trust-store-provider=SUN
# need 是必须要验证,want是可选验证(想不通如果可选还做单向验证干嘛)
server.ssl.client-auth=need
## 客户端(也就是浏览器)
安装server.p12证书到浏览器即可
3 效果展示
启动项目,打开网站,会弹出如下,证明单向验证成功;
三 双向认证流程(springboot项目为例)
1 制作证书
## 制作server.p12 服务端证书
keytool -genkey -alias server -keyalg RSA -keystore server.p12 -validity 360 -storepass 123456 -storetype PKCS12 -keysize 2048 -dname "CN=127.0.0.1, OU=dazhen, O=dazhen, L=CD, ST=CD, C=CN"
## 制作client.p12客户端证书
keytool -genkey -alias client -keyalg RSA -keystore client.p12 -validity 360 -storepass 123456 -storetype PKCS12 -keysize 2048 -dname "CN=127.0.0.1, OU=dazhen, O=dazhen, L=CD, ST=CD, C=CN"
## 将client.p12导出到client.cer
keytool -keystore client.p12 -export -alias client -file client.cer
## 将client.cer导入server.p12
keytool -import -file client.cer -keystore server.p12
## 查看server.p12 中已经存在的证书列表
keytool -list -keystore server.p12 -storepass 123456 -storetype PKCS12
2 配置证书
# 服务器端证书检验
server.ssl.key-store=D:\\ca\\www\\127\\server.p12
server.ssl.key-store-password=123456
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=server
## 客户端证书校验
server.ssl.trust-store=D:\\ca\\www\\127\\server.p12
server.ssl.trust-store-password=123456
server.ssl.trust-store-type=JKS
server.ssl.trust-store-provider=SUN
server.ssl.client-auth=need
3 配置ukey环境(为了将p12证书按照到ukey)
ukey只是一个介质,里面需要有一个容器软件,可以安装p12证书。
电脑上还需按照一个管理程序,2个功能,
1,ukey查到电脑上,可以识别出ukey里的证书(单向认证是把证书安装在浏览器,双向认证是把证书安装在ukey);
2,可以对识别的ukey里的证书进行增删查,如下图所示
刚开始都不知道这个东西叫uKey,一顿谷歌,看到ukey里也需一些管理软件,时间+精力都不允许(里面大多是C#语言开发的)。想起万能的taobao,最后在一家店铺55大洋买了ukey(带说明书)
各种尝试,咨询售后,最后总结出来安装软件步骤(win10)
win10系统需要EPASS1000ND(支持win10).zip
1,先安装D:\EPASS1000ND(支持win10)\win2.5\pki\V2.5-20150919\PKIcdrom\CDROM_CN\PKI\Redist\cn\eps1knd_stdSimpChinese.exe
2,再安装D:\EPASS1000ND(支持win10)\win2.5\pki\V2.5-20150919\PKIcdrom\CDROM_CN\PKI\Utilities\ePassNgMgr.exe
3,初始化D:\EPASS1000ND(支持win10)\win2.5\pki\V2.5-20150919\PKIcdrom\CDROM_CN\PKI\Utilities\PKIINIT\PKIInit_M32.exe
4 效果验收
a 不插ukey,打开系统,提示无权限;
b 插上ukey,打开系统,浏览器弹出如下窗口
c 点击确定,正常访问网站;
d 拔掉ukey+关闭浏览器器,再次打开网站,提示无权限;
注意:如果bc步骤后,只拔ukey,因为浏览器对证书有一段时间缓存,所以还会继续正常访问网站
pc上需要安装的识别uKey证书的软件在这里
https://download.csdn.net/download/WANTAWAY314/12923620