当前位置:Linux教程 - Linux - 用SSL实现Internet安全

用SSL实现Internet安全

安装好Certificate Server后,给自己的Web Server发一张证书,你的安全站点已经建立起来了,在IIS管理器中打开安全通道(先不要接受客户证书验证,如果你没有浏览器证书的话),把http改为https后访问你的站点,怎么系统提示服务器证书有问题?记得在浏览器中安装你的根证书了?要不就是你的服务器证书过期了。如果你没有在浏览器中安装你的根证书,你需要安装它,同时,其他人通过Internet访问你的站点如果没有安装根证书,你需要将你的根证书放在网上让别人下载。用IE安装根证书很简单,浏览器提示用户打开或保存时选择打开,你会看到你的根证书信息然后按安装证书就可以了。但你可能会发现Netscap无法安装你的根证书,SSL协议是由Netscape首先提出并实现的,Netscape使用MIME类型application/x-x509-ca-cert来表示CA证书,IE3.1以后开始支持SSL,起初Windows系统的数字证书文件(.crt和.cer)也采用相同的MIME类型,IE5.0以后MIME类型被改为application/pkix-cert这就造成Netscape安装根证书困难。不过这个问题好解决,只要在IIS里新注册application/x-x
509-ca-cert的MIME类型就可以了。刚发的证书浏览器有时也会显示证书过期,这是因为浏览器判断证书有效是从证书有效起始时间的后一天开始,此外数字证书中的日期大都是GMT时间而不是本地时间,所以通常将本机时间向后调整一天这个问题就能解决,所以证书过期不仅仅可能表示太晚也可能表示太早。 一切都已经就绪,进入你的安全网页了,在你的IE的状态栏里应该有一个小锁,双击这个小锁你能看到你的站点证书信息,同时你也能看到整个证书链。现在你或许会问 “那么现在我怎么用SSL加密
我的数据呢?”,实际上现在你的浏览器和你的Web服务器之间交换的所有信息都已经被加密,SSL是工作在网络层与会话层之间的协议,它在TCP/IP和 HTTP之间增加了一个加密层,所以对于工作在HTTP协议以上的用户而言,加密是完全透明的,所以请忘记“用SSL加密“这句话,除非你直接在Socket上开发,比如写个网络蚂蚁之 类的。


现在我想用SSL实现更多的东西,不仅仅是加密。是申请浏览器(客户)证书的时候了,申请客户证书过程也不复杂,除了相同的名称,国家之类的还多一个EMail地址,如果用IE申请证书可能会有许多选项,其中有两个比较有意义,”允许私钥被导出“对与不在固定机器上网的人比较有用,如果你在一台机器上申请了证书,导出证书和私钥并安装到其他机器上就可以在其他机器上使用了。”用户保护“会让浏览器在使用你的私钥时提示你,这通常发生在加密和签名过程之前。证书安装过程通常都是
自动的,安装完成后你可以自己先欣赏一下,在IE中打开Internet选项,选择内容一栏,按”证书“按钮”,在个人一栏内应该有你的客户证书。

现在在IIS管理器中设置你的站点要求客户证书,然后访问你的站点,浏览器会弹出一个对话 框,让你选择要使用的客户证书,然后就进去了,也没什么不同。那么怎么样利 用SSL实现身份 认证呢?首先你可以在IIS管理器中启用客户证书映射,将客户证书影射到你NT帐 号,你可以映射某张证书,也可以映射所有由你的根证书所签发的客户证书,如果在签发者列表中找不到你的根证书,你需要运行SSLCA.exe(IIS4.0以上),以后的事就属于NT管理员的范畴了。如果你不想用NT的安全机制,你就需要获取对方客户证书的信息,然后进行判断。通常客户证书的信息HTTPS_开头的服务器变量提供,如Apache Server,Domino等,可以查看文档或者写一个小的CGI 程序列出所有的服务器变量。如果是IIS就更简单了:

用 Request.ClientCertificate( Key[SubField] )可以访问你想要的内容:
如可显示客户证书的国家代码 。具体参数请在 MSDN搜索ClientCertificate