天威诚信:SSL虚拟主机解决方案(网络身份安全与信用认证服务商天威诚信)

由于全球互联网络的迅猛发展,IPv4资源逐渐成为一种稀缺资源。传统的SSL证书安装配置办法(也是目前最稳定的解决方法)就是为每个https主机使用不同的IP地址。

如果直接按照http主机的配置办法配置https主机,就会出现一个很普遍的问题:不论浏览器请求哪个主机,都只会收到默认主机(配置的第一个443端口的虚拟主机)的证书。这是由SSL协议本身的特性引起的——先建立SSL连接,再发送https请求(即加密主机头)。所以服务器端在与客户端建立SSL连接时不知道客户端所请求主机的名字,因此服务器端只会返回默认主机的证书。

目前已有两种可行的方案来实现多个 https 主机共享一个IP地址的443端口:

1. 使用支持多个域名的证书(多域名证书或通配符证书)

多域名SAN(SubjectAltName)证书能够在一张证书中最多支持绑定25个域名。当需要为同一台物理服务器上的多个不同域名的主机配置SSL证书时,可通配置一张共享的多域名证书来实现IP地址和端口的共享。只需将所有虚拟站点的域名绑定到这张多域名证书中即可。

赛门铁克(Symantec)通配符证书是在一个单一的证书中,通用名(域名)字段中包含一个“*”通配符字段(*.example.com)。这使得该证书可以支持无限制数量的多个子域名(主机)。这张Symantec通配符证书也可作为虚拟主机的共享证书,为所有归属于同一域名下的二级域名实现https虚拟主机的IP地址共享。

对比多域名证书和通配符证书的产品特征可知,多域名证书受到“SubjectAltName”字段的长度限制,最多支持25个域名。而通配符证书虽然支持的域名数量不受限制,但只能支持同一域名下的二级子域名。在证书的应用中需要根据证书产品特点加以合理选择。

多域名和通配符证书在配置文件中的配置:

IIS上配置https虚拟主机共享443端口,微软官方资料参考:

http://technet.microsoft.com/zh-cn/library/cc756897.aspx

cscript.exe adsutil.vbs set /w3svc/ <site identifier> /SecureBindings ":443 :<host header>”

1.先设置为Web服务器和按照一般SSL证书的要求安装成功;

2.为了安全起见,请以一般用户(Users组)登录Windows 2003 Server,运行:

runas /profile /user: MyComputer Administrator cmd

其中:MyComputer为服务器主机名,运行后会提示Administrator的密码,将以系统管理员身份运行DOS命令行。

3.在DOS命令行下运行:

cscript.exe adsutil.vbs set /w3svc/ <site identifier> /SecureBindings ":443:<host header> "

其中: 可能需要明确指出adsutil.vbs的目录,如:C:InetpubAdminScripts,而<site identifier> 就是IIS自动分配给每个网站的网站标识符(默认站点为1,其他站点可在控制台中查询),<host header> 就是需要安装多域型SSL证书和通配型SSL证书的Web服务器域名。

4.退出DOS后,重启Web服务器后就已经生效了,可以都使用https://访问测试。

Apache配置https虚拟主机共享443端口:

Listen 443

NameVirtualHost *:443

SSLCertificateFilecommon.crt;

SSLCertificateKeyFile common.key;

SSLCertificateChainFile ca.crt

<VirtualHost *:443>

……

ServerName www.example1.com

……

</VirtualHost>

ServerName www.example2.com

Nginx配置https虚拟主机共享443端口:

ssl_certificate common.crt;

ssl_certificate_key common.key;

server {

listen 443;

server_name www.example1.com;

ssl on;

...

}

server_name www.example2.com;

2.开启SNI支持

SNI 是“Server Name Indication”的缩写,全称“主机名称指示”。开启SNI,可以允许一个443端口共享给多个虚拟站点,并且每一个虚拟站点都允许独立配置其唯一的证书密钥对。其优点是每个站点独享唯一密钥对,更安全。缺点是SNI受客户端及服务端程序版本限制,部分客户端及服务端程序无法支持。

TLS主机名指示扩展(SNI,RFC6066)允许浏览器和服务器进行SSL握手时,将请求的主机名传递给服务器,因此服务器可以得知需要使用哪一个证书来服务这个连接。但SNI只得到有限的浏览器和服务器支持。

SNI 客户端支持

Firefox 2.0 及后续版本

Opera 8.0及后续版本

Internet Explorer 7.0及后续版本(要求Windows最低Vista系统)

Google Chrome 所有版本(Windows版要求最低Vista系统)

Safari 3.2.1及后续版本(Mac OS版要求最低X 10.5.6 ;Windows版要求最低Vista系统)

SNI 服务器端支持

Nginx 0.5.32及后续版本

Apache 2.2.12及后续版本

IBM Http Server 7.0及后续版本

Apache 、Nginx 要求安装 Openssl0.98f(0.98j开始默认支持SNI) 或更高版本的 Openssl 支持。

SNI的配置

在Apache中配置SNI

在Apache配置文件中通过使用为不同Web Server指定不同证书文件进行配置。

SSLCertificateFile www.example1.com.crt

SSLCertificateKeyFile www.example1.com.key

SSLCertificateFile www.example2.com.crt

SSLCertificateKeyFile www.example2.com.key

开启虚拟主机配置

在Nginx中配置SNI

Nginx 中通过 nginx -v 命令查询当前已安装的版本对 SNI 功能的支持。在配置文件中通过

ssl_certificate server1.crt;

ssl_certificate_key server1.key;

ssl_certificate server2.crt;

ssl_certificate_key server2.key;

开启SNI支持。

在IBM Http Server 7中配置SNI

IBM Http Server 7中配置SNI支持需要将多个证书密钥对合并到一个单独的kdb文件中来为不同虚拟站点配置使用不同证书。

使用 I Key Manager 工具打开 www.example1.com 的服务器证书 key.kdb 文件,切换到“个人证书”选项卡,选择“导入/导出”。然后选择证书导入密钥库,密钥库格式选择“CMS”格式,并选中 www.example2.com 的服务器证书 key.kdb 文件。将 www.example2.com 的服务器证书 key.kdb 中已存在的证书密钥对导入到 www.example1.com 的 key.kdb 文件中。导入过程中,修改导入的密钥对别名为 example2。

Listen *:443

SSLEnable

SSLServerCert example1 # example1 是在 kdb 文件中,为 www. example1.com 的服务器证书密钥对设置的证书别名

SSLServerCert example2 #example2是在 kdb 文件中,为 www. Example2.com 的服务器证书密钥对设置的证书别名

</VirtualHost>

SSLDisable

KeyFile /opt/IBM/HTTPServer/key.kdb

版权声明:

作者: freeclashnode

链接: https://www.freeclashnode.com/news/article-1163.htm

来源: FreeClashNode

文章版权归作者所有,未经允许请勿转载。

免费节点实时更新

热门文章

最新文章

归档