若何实现多https主机共享一个IP地址的443端口(转载)
因为全球互联收集的迅猛开展,IPv4资本逐步成为一种稀缺资本。传统的SSL证书安拆设置装备摆设办法(也是目前最不变的处理办法)就是为每个地址。
假设间接根据毗连时不晓得客户端所恳求主机的名字,因而办事器端只会返回默认主机的证书。
目前天威诚信(微信公家账号:itruschina)已有两种可行的计划来实现多个 端口:
1. 利用撑持多个域名的证书(多域名证书或通配符证书)
多域名SAN(SubjectAltName)证书可以在一张证书中最多撑持绑定25个域名。当需要为统一台物理办事器上的多个差别域名的主机设置装备摆设SSL证书时,可通设置装备摆设一张共享的多域名证书来实现IP地址和端口的共享。只需将所有虚拟站点的域名绑定到那张多域名证书中即可。
赛门铁克(Symantec)通配符证书是在一个单一的证书中,通用名(域名)字段中包罗一个“*”通配符字段(*.example.com)。那使得该证书能够撑持无限造数量的多个子域名(主机)。那张Symantec通配符证书也可做为虚拟主机的共享证书,为所有回属于统一域名下的二级域名实现地址共享。
比照多域名证书和通配符证书的产物特征可知,多域名证书遭到“SubjectAltName”字段的长度限造,最多撑持25个域名。而通配符证书固然撑持的域名数量不受限造,但只能撑持统一域名下的二级子域名。在证书的利用中需要根据证书产物特征加以合理抉择。
多域名和通配符证书在设置装备摆设文件中的设置装备摆设:
IIS上设置装备摆设端口,微软官方材料参考:
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:\\Inetpub\\AdminScripts\\,而site identifier 就是IIS主动分配给每个网站的网站标识符(默认站点为1,其他站点可在掌握台中查询),host header 就是需要安拆多域型SSL证书和通配型SSL证书的Web办事器域名。
4.退出DOS后,重启Web办事器后就已经生效了,能够都利用://拜候测试。
Apache设置装备摆设端口:
Listen 443
NameVirtualHost *:443
SSLCertificateFilecommon.crt;
SSLCertificateKeyFile common.key;
SSLCertificateChainFile ca.crt
VirtualHost *:443
ServerName
/VirtualHost
VirtualHost *:443
ServerName
/VirtualHost
Nginx设置装备摆设端口:
ssl_certificate common.crt;
ssl_certificate_key common.key;
server {
listen 443;
server_name ;
ssl on;
server {
listen 443;
server_name ;
ssl on;
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 及后续版本
Apache 、Nginx 要求安拆 Openssl0.98f(0.98j起头默认撑持SNI) 或更高版本的 Openssl 撑持。
SNI的设置装备摆设
在Apache中设置装备摆设SNI
在Apache设置装备摆设文件中通过利用为差别Web Server指定差别证书文件停止设置装备摆设。
Listen 443
NameVirtualHost *:443
VirtualHost *:443
ServerName
SSLCertificateFile
SSLCertificateKeyFile
SSLCertificateChainFile ca.crt
/VirtualHost
VirtualHost *:443
ServerName
SSLCertificateFile
SSLCertificateKeyFile
/VirtualHost
开启虚拟主机设置装备摆设
在Nginx中设置装备摆设SNI
Nginx 中通过 nginx -v 号令查询当前已安拆的版本对 SNI 功用的撑持。在设置装备摆设文件中通过
server {
listen 443;
server_name ;
ssl on;
ssl_certificate server1.crt;
ssl_certificate_key server1.key;
server {
listen 443;
server_name ;
ssl on;
ssl_certificate server2.crt;
ssl_certificate_key server2.key;
开启SNI撑持。
在IBM
IBM 文件中来为差别虚拟站点设置装备摆设利用差别证书。
利用 I Key Manager 东西翻开 。
Listen *:443
NameVirtualHost *:443
VirtualHost *:443
ServerName
SSLEnable
SSLServerCert example1 # example1 是在 kdb 文件中,为 的办事器证书密钥对设置的证书别号
/VirtualHost
VirtualHost *:443
ServerName
SSLEnable
SSLServerCert example2 #example2是在 kdb 文件中,为 的办事器证书密钥对设置的证书别号
/VirtualHost
SSLDisable
KeyFile /opt/IBM/