FortiGate对于SSL×××客户端可以让客户端提供×××书,如果不能提供授权的证书,则不能接入,从而大大提高安全性,即便是用户名和密码被泄露,没有证书也无法登陆。设定很简单,就是在虚拟专用网->SSL->设置->要求客户端认证的项目选上。但是不是这里选上就可以的。这个选了只是要求客户端提供证书,但是这个证书可不可确认身份,才是重要的。
我以前已经发文,SSL×××的用户效验是利用域的,那么我们就继续利用windows 2008 R2 的Active Directory证书服务,来组建这一认证系统。
建立Active Directory证书服务非常简单,依照提示一步步的就可以了,不过我们为了给FortiGate也颁发证书,需要安装证书的web服务模块。
安装完了证书,立刻就可以得到根证书,这是认证次级子证书的关键。根证书的导出不需要私钥,所以在任何一台加入到域的PC上都可以得到,我们输入certmgr.msc命令就打开了证书管理界面,在第二项的信赖的认证机构里面找到自己建立的域的根证书,并把它导出成一个*.cer的文件。在FortiGate里面把这个根证书导入。
在系统管理->证书->CA证书->导入证书,然后选择刚才导出的那个根证书就可以。如果有吊销证书的话,也同时需要导出,并导入到CRL里面。有了根证书就可以认证客户端的证书了,但是客户端不信任FortiGate自己签发的证书不完美。我们也要为FortiGate颁发证书。
在系统管理->证书->本地证书->生成证书
其中,证书名称只是为了好记,主题信息里,ID类型,正式运行我们一般不用IP,而是域名,当然这个域名是在域名机构注册的,合法的。域名项目就填你已经配置好公开DNS的那个域名,这个域名一定要对应FortiGate提供服务的公网IP,可选信息,不填也罢;密钥大小可以随意,2008R2的证书服务是可以支持到2048位的类型,注册方法选基于文件;然后回到本地证书,会看见一个新的状态是未确定的证书,下载它。
然后用文本编辑器打开,不要用word什么的哦 。会看到
-----BEGIN CERTIFICATE REQUEST-----
MIIBbTCB1wIBADAbMRkwFwYDVQQDExBzc2x2cG4ubWJwanAuY29tMIGfMA0GCSqG
-----END CERTIFICATE REQUEST-----
这样的类似内容,拷贝中间的一段,就是
-----BEGIN CERTIFICATE REQUEST-----和
-----END CERTIFICATE REQUEST-----不要,然后拷贝。用这个去到域的证书服务那里申请证书,在浏览器里面输入https://机器名/certsrv,需要身份效验,使用域管理员身份登录,
选申请证书,刚才不会导出根证书的,这里也可以下载CA证书,就是根证书。
因为不是为用户的,所以要选高级证书申请。
下面要选择使用Base64编码的CMC链接,
 
在保存的申请栏里把刚才拷贝的东西贴进去,证书模版选web服务器,然后就可以了,下载申请好的证书,进入FortiGate里,在系统管理->证书->本地证书->导入证书,导入之后会自动和申请的那个证书配对,使申请的那个状态未确定变成正常。
然后在虚拟专用网->SSL->设置->服务器证书选择刚才做好的那个证书就好。
客户端嘛,用域策略申请一个用户类的就可以证书就行,访问SSL×××界面的时候,自然就会提示你选择证书,选那个域颁发的就行。如果用ssl***客户端直接登录的话,需要选择那个域颁发的证书。