html5之keygen标签
2015-06-17 11:46
441 查看
首先<keygen>标签会生成一个公钥和私钥,私钥会存放在用户本地,而公钥则会发送到服务器。那么<keygen>标签生成的公钥/私钥是用来做什么用的呢?很多朋友在看到公钥/私钥的时候,应该就会想到了非对称加密。没错,<keygen>标签在这里起到的作用也是一样。
<keygen>标签所期望的是在收到SPKAC(SignedPublicKeyAndChallenge)排列后,服务器会生成一个客户端证书(Client Certificate),然后返回到浏览器让用户去下载保存到本地。之后,用户在需要验证的时候,使用本地存储的私钥和证书后通过TLS/SSL安全传输协议到服务端做验证。
以下是使用<keygen>标签的优点:
1. 一个是可以提高验证时的安全性;
2. 同时如果是作为客户端证书来使用,可以提高对MITM攻击的防御力度;
3. keygen标签是跨越浏览器实现的,实现起来非常容易;
4. 另外就是可以不用考虑操作系统的管理员权限问题。例如操作系统对不同用户设置了不同的浏览器权限,IE或者其他浏览器可以在设置里面禁用key的生成,这种情况下,可以通过keygen标签来生成和使用没有误差的客户端证书。
<keygen>标签的不足之处有很多:
1. 证书(Certificates)在不同的系统里不是容易方便的(但是对于某些系统,这又是一个优势)。
2. 没有在一个标准的位置存储私钥。
3. 在html页面看到<keygen>标签生成的内容总是让人困惑和难以理解。
4. <keygen>标签会让用户从一个列表里选择适当的key,但是大多数用户不知道该如何选择。
5. 很多用户并不清楚是否该根据提示下载证书(Certificate)。
6. <keygen>标签不提供一个能管理证书让其失效的机制。
7. 没有标准的key长度或者hash来实现浏览器无关性。
8. 不支持算法(RSA, DSA, ECC等)。
9. key的大小选择只能来源于<keygen>标签生成的表单内容,而不是用户可以选择的。
10. 签名只能基于MD5,而不能使用其他的加密算法。
11. <keygen>标签没有“不可输出(Non-Exportable)”的提示。(这里的标记我没有搞明白是什么作用。)
12. <keygen>标签没有“硬件保护(Hardware protected)”的标记。(这里的标记我没有搞明白是什么作用。)
13. <keygen>标签没有采取不可见的保护,类似于密码框。
14. 证书(Certificate)受限与只有基于RSA的应用程序。
15. 可以修改<keygen>标签生成的本地的表单内容,从而直接降低了key的安全成。
16. 如果加入微软的认证服务器(Microsoft Certificate Server),只能通过DCOM API的方式,并且支持"server"的证书类型。
17. <keygen>标签生成的内容没有使用标准格式,并且只支持已有协议的一部分,例如PKCS10,CMC和CRMF。
原文地址点击打开链接
<keygen>标签所期望的是在收到SPKAC(SignedPublicKeyAndChallenge)排列后,服务器会生成一个客户端证书(Client Certificate),然后返回到浏览器让用户去下载保存到本地。之后,用户在需要验证的时候,使用本地存储的私钥和证书后通过TLS/SSL安全传输协议到服务端做验证。
以下是使用<keygen>标签的优点:
1. 一个是可以提高验证时的安全性;
2. 同时如果是作为客户端证书来使用,可以提高对MITM攻击的防御力度;
3. keygen标签是跨越浏览器实现的,实现起来非常容易;
4. 另外就是可以不用考虑操作系统的管理员权限问题。例如操作系统对不同用户设置了不同的浏览器权限,IE或者其他浏览器可以在设置里面禁用key的生成,这种情况下,可以通过keygen标签来生成和使用没有误差的客户端证书。
<keygen>标签的不足之处有很多:
1. 证书(Certificates)在不同的系统里不是容易方便的(但是对于某些系统,这又是一个优势)。
2. 没有在一个标准的位置存储私钥。
3. 在html页面看到<keygen>标签生成的内容总是让人困惑和难以理解。
4. <keygen>标签会让用户从一个列表里选择适当的key,但是大多数用户不知道该如何选择。
5. 很多用户并不清楚是否该根据提示下载证书(Certificate)。
6. <keygen>标签不提供一个能管理证书让其失效的机制。
7. 没有标准的key长度或者hash来实现浏览器无关性。
8. 不支持算法(RSA, DSA, ECC等)。
9. key的大小选择只能来源于<keygen>标签生成的表单内容,而不是用户可以选择的。
10. 签名只能基于MD5,而不能使用其他的加密算法。
11. <keygen>标签没有“不可输出(Non-Exportable)”的提示。(这里的标记我没有搞明白是什么作用。)
12. <keygen>标签没有“硬件保护(Hardware protected)”的标记。(这里的标记我没有搞明白是什么作用。)
13. <keygen>标签没有采取不可见的保护,类似于密码框。
14. 证书(Certificate)受限与只有基于RSA的应用程序。
15. 可以修改<keygen>标签生成的本地的表单内容,从而直接降低了key的安全成。
16. 如果加入微软的认证服务器(Microsoft Certificate Server),只能通过DCOM API的方式,并且支持"server"的证书类型。
17. <keygen>标签生成的内容没有使用标准格式,并且只支持已有协议的一部分,例如PKCS10,CMC和CRMF。
原文地址点击打开链接
相关文章推荐
- H5+ a页面打开b页面,b页面加载成功后关闭当前页面,闪屏的规避解决方案
- html5 编辑
- HTML5学习-Day1
- H5版俄罗斯方块(1)---需求分析和目标创新
- html5语法
- h5关于选择器以及class的小加强
- Server-sent Events---HTML5 服务器推送事件(Server-sent Events)实战开发
- HTML5 Input 类型
- 那些年优秀的HTML5活动页面
- Web Workers---html5 Web Workers
- Storage---Html5 Web的5中离线存储方式之localStorage
- Geolocation---HTML5调用百度地图API进行地理定位实例
- 低信噪比的HTML5优化
- Canvas---HTML5 Canvas API详解
- Html5 Viewport学习
- Audio--- HTML5环形音乐播放器
- 后HTML5时代
- sqoop 1.4.4-cdh5.1.2快速入门
- Audio---HTML5音频audio详解
- Video--- HTML5视频video开发demo例子