最近在尝试用智能卡做身份验证,以飞天诚信的ePass3000为例。

1、网络环境搭建:

用3台虚机+1台实体机搭一个单独的测试网段:172.16.188.x,如下:

机器名 IP 操作系统 作用
dom 172.16.188.1 win server 2008 R2/虚机 AD域服务器、AD证书服务器、IIS服务器
ter 172.16.188.10 win server 2008 R2/虚机 远程桌面服务器(也就是以前的终端服务器)
win7 172.16.188.100 win7/虚机 模拟win7客户端
xp 172.16.188.101 win xp sp3/实体机 模拟xp客户端

2、配置证书服务器

1)进入dom,先添加Active Directory域服务、Web服务器(IIS),再添加Active Directory证书服务,这样会在IIS中建立一个CertSrv网站,用于证书申请和发放。添加证书服务时,会生成一个CA根证书比如secret-DOM-CA,后续所有的证书都由这个证书颁布。

2)管理证书模板:打开管理工具->证书颁发机构->证书模板,右键点击“管理”。在弹出的”证书模板控制台”中,修改“智能卡登录”和“智能卡用户”右键属性->安全选项卡->添加Domain Users的允许读取+注册。也可以通过复制现有模板创建新的证书模板。

3)颁发证书模板:打开管理工具->证书颁发机构->证书模板,右键点击“新建”->要颁发的证书模板,选择“智能卡登录”和“智能卡用户”,确定。

4)修改CA属性:打开管理工具->证书颁发机构->CA名字(如secret-DOM-CA),右键属性->安全,添加Domain Users的允许读取+请求证书。

3、配置IIS服务器

1)添加https支持:打开管理工具->Internet信息服务(IIS)管理器->Default Web Site->右键“编辑绑定”。默认是同时支持http+https的,如果没有,手动添加https,SSL证书选择一个即可,例如dom.secret.company.com。

2)添加CertSrv身份验证:因为以某个用户登录CertSrv并提交申请,就会生成该用户的证书,所以要去掉匿名身份验证,并添加基本+摘要式身份验证。点击CertSrv网站->身份验证,做相应的禁用/启用即可。

3)如果不绑定SSL,会报“为了完成证书注册,必须将CA的网站配置为使用https身份验证”。

4、配置域环境

1)加域:另外3台机器改成上述名字并加入secret.company.com域,重启之后就入域了。这时管理工具->Active Directory用户和计算机->Computers里会出现加入域的机器,分别是ter、win7、xp。

2)加域用户:管理工具->Active Directory用户和计算机->Users里添加用户test。

3)安装ePass3000:所有机器都安装ePass3000驱动,注意勾选“支持智能卡登录操作系统或者VPN”,据说只需要在提交申请的机器上安装即可。

5、申请证书

1)登录CertSrv:在任何一台安装了ePass驱动的机器上,打开IE输入https://dom.secret.company.com/certsrv(注:如果直接输IP地址172.16.188.1在IE8及以上版本会报“此网站的安全证书有问题”,这是因为证书标识的是域名、而不是IP,如果绑定时生成一个标识IP的证书,那么输IP地址就不会报了),使用test用户登录。

2)申请证书:在插入ePass3000的情况下,点击申请证书->高级证书申请->创建并向此CA提交一个申请,首次使用要安装插件CertEnrollCtrl。这时证书模板下拉框里应该有“智能卡用户”和“智能卡登录”这两项了,默认只有用户+基本EFS,如果只有这2项,或者干脆1项都没有,并且报“找不到任何证书模板。您没有从该CA申请证书的权限或者在访问Active Directory时发生错误”的话,请参照“2、配置证书服务器”。CSP下拉框里应该有“FEITIAN ePassNG RSA Cryptographic Service Provider”,如果没有,说明这台机器上ePass的驱动安装有问题,比如我在Server 2008 R2上就怎么也出不来这一项。

3)安装证书:点击提交,ePass开始生成密钥对。下一个页面,点击“安装证书”,ePass开始生成X.509证书。使用ePass的管理工具ePassNgMgr.exe,可以清楚的看到usb里已经存放了test用户的证书和密钥对了。

6、Smart Card登录windows

在windows登录界面插入智能卡,输入pin码,即可以test的域用户身份登录。这里有2个小问题:

1)如果输入pin码后报验证无效,请尝试安装CA根证书,即把CA的根证书加入当前机器的“受信任的根证书颁发机构”。

2)如果usb里存有多个证书,window登录时只会取第一个,而浏览器(IE8+、chrome、firefox等)一般都会提示你选择其中一个。

7、Smart Card登录远程桌面

1)先插入智能卡,如果连的是xp,输好IP点击连接时就会直接让你输pin码,如果是连win7+,会有3种方式让你选择,选择第3项智能卡登录即可。

2)可能会报“智能卡错误:卡所需要的驱动器不在系统上”:这个问题还没有完全解决,目前连xp是OK的,但连win7+Server 2008 R2都报这个错。我理解应该是远程机器上的ePass驱动没有安装正确,但是通过正常登录远程桌面后发现智能卡倒是正确映射过去了。

  • 但是在访问CertSrv->高级证书申请时,CSP里确实没有“FEITIAN ePassNG RSA Cryptographic Service Provider”。
  • 这篇《How to find CSP currently installed on a computer》指出了本机所有CSP在注册表里的位置,如果手工把xp里的Feitian CSP注册表项导入到目标机器,再次打开CertSrv->高级证书申请页面时,CSP下拉框里有了Feitian,但选择后报“您可能选择了一个不支持在模板中定义的密钥类型的CSP。请在模板中更改密钥类别,或者选择一个不同的CSP或证书模板。”,看来似乎还是驱动没能正确安装+注册,呵呵,这点存疑!

3)ePass安装问题:有可能安装后报“Initialize PKCS#11 Library Failed, 0x0000 0030”,打开services.msc发现关键服务ngSlotD没有创建或没能启动。可自行创建:

 sc create ngslotd binPath= "%ProgramFiles%\ngsrv\ngslotd.exe" start= auto depend= ScardSvr
sc start ngslotd

4)允许远程桌面:默认的域策略似乎不允许远程桌面。域服务器->管理工具->组策略管理->组策略对象->Default Domain Policy->右键编辑,打开组策略管理编辑器。

  • 计算机配置->策略->windows设置->安全设置->本地策略->用户权限分配->允许通过远程桌面服务登录里,添加Domain Users、Remote Desktop Users等相关组。
  • 计算机配置->策略->管理模板->windows组件->远程桌面服务->远程桌面会话主机->连接->允许用户使用远程桌面服务进行远程连接,改为已启用。
  • 如果上述设置都无效,可以在目标机器->右键我的电脑->属性->远程->选择用户...里添加Domain Users、Remote Desktop Users等相关组。

8、引用

1)《Smart Card Logon And Authentication

2)《USB eToken for Windows domain user RDP Authentication

3)《How to find CSP currently installed on a computer

飞天诚信usb-key登录windows+远程桌面的更多相关文章

  1. 重复登录Windows远程桌面-Autoit脚本

    非常抱歉,我先临时把脚本放上来,具体的说明有时间再更新: 都是做成快捷方式,用鼠标点击的操作 #include <AutoItConstants.au3> ; Open mstsc pro ...

  2. Windows远程桌面,连接被拒绝,因为没有授权此用户帐户进行远程登录。

    Windows 服务器远程连接的时候,出现错误:“连接被拒绝,因为没有授权此用户帐户进行远程登录.”,导致无法远程登录服务器,如下图所示: 问题分析 该错误一般是由于 Windows 远程桌面相关权限 ...

  3. Windows远程桌面连接Mac OS X

    Windows远程桌面连接Mac OS X   第一步:Mac OS X 10.5 已经增加支持了由VNC Viewer访问的功能,设置如下:   系统偏好设置-共享-勾选“屏幕共享”,然后在电脑设置 ...

  4. CentOS下通过rdesktop连接Windows远程桌面

    众所周知,微软的Windows提供了一种远程桌面系统(Remote Desktop),该服务的默认端口是3389,可使用户远程登录进行系统管理或作为终端服务器运行各种应用软件. 而要连接Windows ...

  5. windows 远程桌面连接 RPi 2B

    /************************************************************************* * windows 远程桌面连接 RPi 2B * ...

  6. qq远程连接/windows远程桌面/teamviwer/xmanager/vnc的区别

    软件 客户端运行平台 服务端运行平台 服务端是否需要同子网或公网IP 网络断开当前执行命令是否会中止 评价 QQ远程连接 windows windows 否 否 感觉用了一两分钟就动不了了 windo ...

  7. 解决Windows远程桌面连接每次都提示输入密码的问题,远程桌面记不住密码

    FROM:http://www.veryhuo.com/a/view/80444.html Windows 远程桌面连接几乎每天都用,所以使用的方便性非常重要.如果你经常用,也许会发现在某些系统中,每 ...

  8. linux下使用FreeRDP 连接 Windows 远程桌面

    linux下使用FreeRDP 连接 Windows 远程桌面   简介 FreeRDP 是一款开源的远程桌面系统,支持多种平台, 在 ubuntu 中使用 FreeRDP 可以很方便的登录到 win ...

  9. CentOS7配置图形界面及设置vnc远程连接、windows远程桌面连接

    安装CentOS桌面 yum groupinstall "GNOME Desktop" 重启,进入终端,将启动模式变更为图形模式 systemctl set-default gra ...

随机推荐

  1. linux之od命令

    od [OPTION]... [FILE]...  把文件用8进制或者其他的格式显示出来.通常用于查看特殊格式文件的内容.  这个命令默认把文件的内容用八进制的形式清晰地写在标准输出上.如果是多个文件 ...

  2. 关于我们DOM的知识点

    DOM的概念及子节点类型   前言 DOM的作用是将网页转为一个javascript对象,从而可以使用javascript对网页进行各种操作(比如增删内容).浏览器会根据DOM模型,将HTML文档解析 ...

  3. (九)uboot配置编译、源码分析

    一.X210官方uboot配置编译实践1.找到官方移植好的uboot(BSP概念)(1)源头的源代码是uboot官网下载的.这个下载的源代码可能没有你当前使用的开发板的移植,甚至找不到当前开发板使用的 ...

  4. Nginx基本配置备忘

    原文:http://www.open-open.com/lib/view/open1482477873078.html Nginx 配置 在了解具体的Nginx配置项之前我们需要对于Nginx配置文件 ...

  5. 【ufldl tutorial】Softmax Regression

    今天太长姿势了,什么叫懂了也写不出代码说的不就是我吗,就那么几行代码居然叽叽歪歪写了一个小时. 首先exercise要实现的是softmax的cost function和gradient,如下图: ( ...

  6. Kafka 快速起步(作者:杜亦舒)

    Kafka 快速起步 原创 2017-01-05 杜亦舒 性能与架构 主要内容:1. kafka 安装.启动2. 消息的 生产.消费3. 配置启动集群4. 集群下的容错测试5. 从文件中导入数据,并导 ...

  7. mysql使用笔记(三)

    一.数值类型 1. 数值类型     标准sql中包含数据类型 INTEGER, SMALLINT, DECIMAL, NUMERIC,以及FLOAT, REAL, DOUBLE.mysql在此基础上 ...

  8. php输出csv文件 简单实现

    <?php $list = array ( "George,John,Thomas,USA", "James,Adrew,Martin,USA", ); ...

  9. 清除数据库中大于10W行的垃圾历史数据

    -- =============================================-- Author: <Author,Name,龙鸿轩>-- Create date: &l ...

  10. SCCM 部署操作系统 ,提示权限问题,报错:0xc00000098

    SCCM 部署操作系统 ,提示权限问题,报错:0xc00000098 这个问题通过查看日志,论坛搜索,博客等.下面是最终的解决方法: 1.检查所有组件是否已安装.(IIS组件等).(分发站点证书是否正 ...