缘起
一度以为虚拟主机的配置是和http协议中的“Host”请求头有密切关系的,而ssl工作在http的下一层协议,先于http建立连接的,而在建立连接的时候是需要和“Host”相对应的证书的,再而且该证书在server端是配置在虚拟主机中的,所以,单个IP无法配置多个证书提供多个https的服务的,今天在阅读ssl的rfc时,一边也分析了ssl的握手过程,才发现host信息完全可以通过ssl的扩展字段告知server端该提供哪一份证书,于是,去百度google了一下,果然是可以这么做的。
相关概念
通配型ssl证书, 如: *.phpor.net , 适用于 a.phpor.net, b.phpor.net 等等
多域名ssl证书,即: 一个证书可以关联多个不相关的域名,为多个域名提供认证
1 |
Transport Layer Security (TLS) Extensions |
参考资料
http://coolerfeng.blog.51cto.com/133059/91736/
http://zhumeng8337797.blog.163.com/blog/static/1007689142011023102443424/ (参考其中的mod_gnutls)
http://tools.ietf.org/html/rfc6101
http://www.ietf.org/rfc/rfc3546.txt (参考其中的 server_name)