最近在尝试用智能卡做身份验证,以飞天诚信的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. vitamio框架

    import io.vov.vitamio.LibsChecker; import io.vov.vitamio.MediaPlayer; import io.vov.vitamio.MediaPla ...

  2. C 语言预处理

    在嵌入式系统编程中,不管是内核的驱动程序还是应用程序的编写,都涉及到大量的预处理与条件编译,这样做的好处主要体现在代码的移植性强以及代码的修改方便等特性,因此引入了预处理与条件编译的概念.在C语言的程 ...

  3. iOS项目中的version和build

    Version在plist文件中的key是“CFBundleShortVersionString”,标识应用程序的发布版本号,和AppStore上的版本号保持一致.该版本的版本号是三个分隔的整数组成的 ...

  4. javascript 键盘事件总结

    原文:http://www.cnblogs.com/rubylouvre/archive/2009/08/20/1550526.html#2583814 在进入正题前,我们看一下浏览器对于键盘的一些默 ...

  5. Maven项目的发布,发布到Nexus

    原文:http://blog.csdn.net/mexican_jacky/article/details/50277505 第一步: 配置信息如下: <!-- 发布项目的配置 -->  ...

  6. 【服务器环境搭建-Centos】jdk的安装

    1.查看是否已安装openjdk 使用rpm命令查看是否已安装openjdk[root@linuxidc ~]# rpm -qa | grep java tzdata-java-2012c-.el6. ...

  7. 解决Win7中第一次HttpWebRequest连接缓慢、超时等问题

    在使用HttpWebRequest的时候发现,第一次连接需要15S左右,我的系统是win7,很崩溃,除了我那个用户可以等待的了,但是第二次,就没有问题了,于是百度之...... http://www. ...

  8. Linux chmod命令修改文件与文件夹权限的命令附实例

    Linux chmod命令修改文件与文件夹权限的命令附实例 作者:佚名 字体:[增加 减小] 来源:互联网 时间:05-01 20:46:07我要评论 在linux中要修改一个文件夹或文件的权限我们需 ...

  9. LinuxShell脚本攻略--第六章 B计划

    tar -A或--catenate:新增文件到以存在的备份文件: -B:设置区块大小: -c或--create:建立新的备份文件: -C <目录>:这个选项用在解压缩,若要在特定目录解压缩 ...

  10. JavaScript window

    window -- window对象是BOM中所有对象的核心 window,中文"窗口" window对象除了是BOM中所有对象的父对象外,还包含一些窗口控制函数 全局的windo ...