分类
知识中心

如何验证SSL证书公钥的正确性

公开密钥加密方式还是存在一些问题的。那就是无法证明公开密钥本身就是货真价实的公开密钥。比如,正准备和某台服务器建立公开密钥加密方式下的通信时,如何证明收到的公开密钥就是原本预想的那台服务器发行的公开密钥。或许在公开密钥传输途中,真正的公开密钥已经被攻击者替换掉了。

为了解决上述问题,可以使用由数字证书认证机构(CA,Certificate Authority)和其相关机关颁发的公开密钥证书。

数字证书认证机构处于客户端与服务器双方都可信赖的第三方机构的立场上。威瑞信VeriSign)就是其中一家非常有名的数字证书认证机构。我们来介绍一下数字证书认证机构的业务流程。首先,服务器的运营人员向数字证书认证机构提出公开密钥的申请。数字证书认证机构在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公钥证书后绑定在一起。

服务器会将这份由数字证书认证机构颁发的公钥证书发送给客户端,以进行公开密钥加密方式通信。公钥证书也可叫做数字证书或直接称为证书。

接到证书的客户端可使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证,一旦验证通过,客户端便可明确两件事:一,认证服务器的公开密钥的是真实有效的数字证书认证机构。二,服务器的公开密钥是值得信赖的。

此处认证机关的公开密钥必须安全地转交给客户端。使用通信方式时,如何安全转交是一件很困难的事,因此,多数浏览器开发商发布版本时,会事先在内部植入常用认证机关的公开密钥。

 

可证明组织真实性的EV SSL证书

证书的一个作用是用来证明作为通信一方的服务器是否规范,另外一个作用是可确认对方服务器背后运营的企业是否真实存在。拥有该特性的证书就是EV SSL证书(Extended Validation SSL Certificate)。

EV SSL证书是基于国际标准的认证指导方针颁发的证书。其严格规定了对运营组织是否真实的确认方针,因此,通过认证的Web网站能够获得更高的认可度。

持有EV SSL证书的Web网站的浏览器地址栏处的背景色是绿色的,从视觉上就能一眼辨别出。而且在地址栏的左侧显示了SSL证书中记录的组织名称以及颁发证书的认证机构的名称。

 

为了防止用户被钓鱼攻击(Phishing),但就效果上来讲,还得打一个问号。很多用户可能不了解EV SSL证书相关的知识,因此也不太会留意它。

用以确认客户端的客户端证书

HTTPS中还可以使用客户端证书。以客户端证书进行客户端认证,证明服务器正在通信的对方始终是预料之内的客户端,其作用跟服务器证书如出一辙。

但客户端证书仍存在几处问题点。其中的一个问题点是证书的获取及发布。

想获取证书时,用户得自行安装客户端证书。但由于客户端证书是要付费购买的,且每张证书对应到每位用户也就意味着需支付和用户数对等的费用。另外,要让知识层次不同的用户们自行安装证书,这件事本身也充满了各种挑战。

现状是,安全性极高的认证机构可颁发客户端证书但仅用于特殊用途的业务。比如那些可支撑客户端证书支出费用的业务。

例如,银行的网上银行就采用了客户端证书。在登录网银时不仅要求用户确认输入ID和密码,还会要求用户的客户端证书,以确认用户是否从特定的终端访问网银。

客户端证书存在的另一个问题点是,客户端证书毕竟只能用来证明客户端实际存在,而不能用来证明用户本人的真实有效性。也就是说,只要获得了安装有客户端证书的计算机的使用权限,也就意味着同时拥有了客户端证书的使用权限。

认证机构信誉第一

SSL机制中介入认证机构之所以可行,是因为建立在其信用绝对可靠这一大前提下的。然而,2011年7月,荷兰的一家名叫DigiNotar的认证机构曾遭黑客不法入侵,颁布了google.com和twitter.com等网站的伪造证书事件。这一事件从根本上撼动了SSL的可信度。

因为伪造证书上有正规认证机构的数字签名,所以浏览器会判定该证书是正当的。当伪造的证书被用做服务器伪装之时,用户根本无法察觉到。

虽然存在可将证书无效化的证书吊销列表(Certificate Revocation List,CRL)机制,以及从客户端删除根证书颁发机构(Root Certificate Authority,RCA)的对策,但是距离生效还需要一段时间,而在这段时间内,到底会有多少用户的利益蒙受损失就不得而知了。

由自认证机构颁发的证书称为自签名证书

如果使用OpenSSL这套开源程序,每个人都可以构建一套属于自己的认证机构,从而自己给自己颁发服务器证书。但该服务器证书在互联网上不可作为证书使用,似乎没什么帮助。

独立构建的认证机构叫做自认证机构,由自认证机构颁发的”无用”证书也被戏称为自签名证书

浏览器访问该服务器时,会显示”无法确认连接安全性”或”该网站的安全证书存在问题”等警告消息。

 

由自认证机构颁发的服务器证书之所以不起作用,是因为它无法消除伪装的可能性。自认证机构能够产生的作用顶多也就是自己对外宣称”我是○○”的这种程度。即使采用自签名证书,通过SSL加密之后,可能偶尔还会看见通信处在安全状态的提示,可那也是有问题的。因为就算加密通信,也不能排除正在和已经过伪装的假服务器保持通信。

值得信赖的第三方机构介入认证,才能让已植入在浏览器内的认证机构颁布的公开密钥发挥作用,并借此证明服务器的真实性。

中级认证机构的证书可能会变成自认证证书

多数浏览器内预先已植入备受信赖的认证机构的证书,但也有一小部分浏览器会植入中级认证机构的证书。

对于中级认证机构颁发的服务器证书,某些浏览器会以正规的证书来对待,可有的浏览器会当作自签名证书。

分类
知识中心

Symantec SSL证书工作原理是什么?

将防护范围扩展到 HTTPS 之外

Symantec SSL Certificates 提供了更多服务,可帮助您保护网站,发展在线业务。SSL、漏洞评估服务和每日网站恶意软件扫描功能三者的完美组合,不仅可帮助您为站点访问者提供更安全的在线体验,还可扩大保护范围,将面向公众的网页包括在内,使其不局限于 https。诺顿安全认证签章和赛门铁克 Seal-in-Search 技术可让您的客户确认您的站点是安全的,能够为其提供从搜索到浏览再到购买的全程保护。

浏览器遇到 SSL 会发生什么情况

浏览器尝试连接受 SSL 保护的网站。

浏览器要求网络服务器确认身份。

服务器向浏览器发送其 SSL Certificate 副本。

浏览器检查它是否要信任该 SSL Certificate。如果信任,则向服务器发送消息。

服务器发回以数字形式签名的确认,启动 SSL 加密的会话。

加密的数据在浏览器和服务器之间共享。

 

加密保护传输中的数据

网络服务器和网络浏览器依托安全套接字层 (SSL) 协议创建以独特方式加密的通道,以此保护通过公共互联网传输的私人通信,进而帮助用户保护传输中的数据。每个 SSL Certificate 都由密钥对以及经过验证的身份信息组成。当网络浏览器(或客户端)指向安全的网站时,服务器会与客户端共享公钥,以确立加密方法和唯一会话密钥。客户端确认它认可并信任该 SSL Certificate 的颁发机构。该过程就是大家所熟知的“SSL 握手”,然后,开启一个保护信息隐私性和消息完整性的安全会话。

128 位强大加密形成的组合,是 40 位加密组合的 288 倍。强度超过了万亿倍。按照目前的计算速度,有时间、工具和动机的黑客使用暴力攻击需要万亿年才能侵入由 SGC 证书保护的会话。要对大多数站点访问者实现强大的加密,请选择 SSL Certificate,请选择可以对 99.9% 的网站访问者实施最低128位加密的SSL证书

 

凭据确定在线身份

用于确定身份的凭据随处可见:驾照、护照、公司徽章等。而 SSL Certificates 是网上世界的凭据,颁发给特定的域和网络服务器,独一无二,并由 SSL Certificate 提供商进行验证。浏览器连接到服务器时,服务器就会向浏览器发送身份信息。

查看网站的凭据:

单击浏览器窗口中的锁定挂锁图标

单击信任标记(例如 Norton™ Secured Seal (诺顿安全认证签章))

查看扩展验证 (EV) SSL 触发的绿色地址栏

 

身份验证让凭据值得信赖

凭据的可信赖程度取决于凭据颁发机构的可信度,因为颁发机构为凭据的真实性担保。证书颁发机构使用各种身份验证方法来验证企业提供的信息。赛门铁克是浏览器供应商所熟知和信任的领先证书颁发机构,因为我们采用了严格的身份验证方法和高度可靠的基础架构。浏览器扩展了这种信任,将赛门铁克颁发的 SSL Certificates 包括在内。

 

分类
安全播报

遇到支付网址“http”开头时要当心 谨防上当

央视《新闻直播间》节目针对网络诈骗进行报道,曝光了一个网络诈骗团伙假冒购物网站进行诈骗,将受害者网银内的钱全部转走。天威诚信提醒网民,当网购支付页面的网址前缀不是“https”而是“http”时一定要注意,很可能已经被骗子盯上。

 

据央视报道,一个网络诈骗团伙,他们就是假冒购物网站,将受害者网银内的钱全部转走!提醒大家完成网购订单进入支付页面,网址前缀会变成”https”,表示已加密;若支付页面仍是”http”,一定提高警惕。

 

网站只有部署了ssl证书后,网址前缀才会变成”https”,同时还会在网站上呈现小金色锁、绿色地址栏等标识。

遇到支付网址“http”开头时要当心 谨防上当-1

 

SSL证书是一种加密传输协议,通过SSL认证之后,数据信息在网民和服务器之间的加密传输就得以保证,数据信息得以保护,同时用户也可以通过服务器证书验证自己访问的网站是否真实可靠。

 

现在网上出现了仿真度极高的假冒银行官网。假银行官网会诱骗消费者输入用户名和密码,骗子可以直接看到,随后将受骗者的银行存款席卷一空。提醒大家,网上支付一定要核对网址。认准网址前缀的”https”标识

分类
知识中心

HTTPS与SNI扩展,一个IP绑定多个SSL证书

在搭建支持HTTPS的前端代理服务器时候,通常会遇到让人头痛的证书问题。根据HTTPS的工作原理,浏览器在访问一个HTTPS站点时,先与服务器建立SSL连接,建立连接的第一步就是请求服务器的证书。而服务器在发送证书的时候,是不知道浏览器访问的是哪个域名的,所以不能根据不同域名发送不同的证书。用过GoAgent的人都知道需要给浏览器导入证书才能使用HTTPS正常登录Twitter等网站。

SNI(Server Name Indication)是为了解决一个服务器使用多个域名和证书的SSL/TLS扩展。一句话简述它的工作原理就是,在连接到服务器建立SSL链接之前先发送要访问站点的域名(Hostname),这样服务器根据这个域名返回一个合适的证书。目前,大多数操作系统和浏览器都已经很好地支持SNI扩展,OpenSSL 0.9.8已经内置这一功能,据说新版的nginx也支持SNI。

HTTPS与SNI扩展,一个IP绑定多个SSL证书-1

Github上有一个小巧的支持SNI的代理服务器,https://github.com/dlundquist/HTTPS-SNI-Proxy

我down下来,在一个VPS上编译(需要安装pcre的开发库),写了一个简单的配置文件,把所有访问443端口的HTTPS请求都进行代理。启动sni_proxy之后,修改本地的hosts文件,把twitter.com映射为服务器的IP地址,比如我的是

184.82.206.107 twitter.com

然后,在浏览器里访问 https://twitter.com/。

HTTPS与SNI扩展,一个IP绑定多个SSL证书-2

看到木有,这是活生生的twitter的证书。

HTTPS与SNI扩展,一个IP绑定多个SSL证书-3

分类
知识中心

如何开启Nginx TLS(SSL) SNI support

VPS上的多个站点都使用SSL加密,主要那些twitter api被墙怕了,还是加密好

但是看一个ip只能一个ssl证书,我不可能去多买几个ip吧,毕竟只是自己想玩玩,不是那种必须的

但是既然想了就折腾下,后来查了下资料,可以multiple SSL sites on a single IP address

而Nginx如果开启了TLS SNI support,就能支持多个SSL加密站点共同使用一个IP

方法也很简单,首先先看看你现在的Nginx是否enable了这个功能

/usr/local/nginx/sbin/nginx -V

nginx: nginx version: nginx/1.1.0

nginx: TLS SNI support disable

nginx: configure arguments: –user=www –group=www –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module –with-http_gzip_static_module –with-ipv6

 

如果是TLS SNI support disable那你需要重新编译下Nginx,如果enable了,你直接修改配置文件就行

这里的环境事先说明,这里使用LNMP一键安装包搭建的环境,其他方法的请自行查看需要修改地方

方法很简单,首先安装OpenSSL,不过一般都装好的,这里忽略

下载openssl源码包

wget http://www.openssl.org/source/openssl-1.0.0d.tar.gz

tar xvf openssl-1.0.0d.tar.gz

 

然后重新编译Nginx,需要在Configuare里多加一行参数,指明openssl的路径

我的openssl解压路径和nginx的目录在同级目录下,如果你的不在请自行修改

./configure –user=www –group=www –prefix=/usr/local/nginx \

–with-http_stub_status_module \

–with-http_ssl_module \

–with-http_gzip_static_module \

–with-ipv6 \

–with-openssl=../openssl-1.0.0d/

make

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

cp objs/nginx /usr/local/nginx/sbin/nginx

/usr/local/nginx/sbin/nginx -t

make upgrade

 

然后我们看下Nginx版本信息,确认下

/usr/local/nginx/sbin/nginx -V

nginx: nginx version: nginx/1.1.0

nginx: TLS SNI support enabled

nginx: configure arguments: –user=www –group=www –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module –with-http_gzip_static_module –with-ipv6 –with-openssl=../../openssl-1.0.0d/

 

搞定,TLS SNI support enabled,接下来就是修改vhost的配置,加上ssl证书配置了

分类
知识中心

如何实现Tomcat http自动跳转至https

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTPS,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面

与http区别:

一、https协议需要到ca申请证书,一般免费证书很少,需要交费。

二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。

三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

SSL协议:

SSL安全套接层协议(Secure Socket Layer)

为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。目前一般通用之规格为40 bit之安全标准,美国则已推出128 bit之更高安全标准,但限制出境。只要3.0版本以上之IE.或Netscape浏览器即可支持SSL。

当前版本为3.0。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。

SSL协议位于TCP/IP协议与各种应用层协议之间,是一种国际标准的加密及身份认证通信协议,为TCP提供一个可靠的端到端的安全服务,为两个通讯个体之间提供保密性和完整性(身份鉴别)。SSL协议可分为两层:SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

如何配置:

1、生成服务器端证书文件

可以使用Windows系统或者Linux系统

(1) Windows环境

条件:已经安装JDK

步骤:

l 进入%JAVA_HOME%/bin目录

l 执行命令

keytool -genkey -alias tomcat -keyalg RSA -keystore F:tomcat.keystore -validity 36500

参数简要说明:“F:tomcat.keystore”含义是将证书文件保存在F盘,证书文件名称是tomcat.keystore ;“-validity 36500”含义是证书有效期,36500表示100年,默认值是90天

l 在命令行填写必要的参数:

A、输入keystore密码:此处需要输入大于6个字符的字符串

B、“您的名字与姓氏是什么?”这是必填项,并且必须是TOMCAT部署主机的域名或者IP[如:gbcom.com 或者 10.1.25.251],就是你将来要在浏览器中输入的访问地址

C、 “你的组织单位名称是什么?”、“您的组织名称是什么?”、“您所在城市或区域名称是什么?”、“您所在的州或者省份名称是什么?”、“该单位的两字母国家代码是什么?”可以按照需要填写也可以不填写直接回车,在系统询问“正确吗?”时,对照输入信息,如果符合要求则使用键盘输入字母“y”,否则输入“n”重新填写上面的信息

D、输入<tomcat>的主密码,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以

l 完成上述输入后,直接回车则在你在第二步中定义的位置找到生成的文件

(2) Linux环境

条件:安装了JDK

步骤:

l 进入$JAVA_HOME/bin目录

l 执行命令

./keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/local/ac/web/tomcat.keystore -validity 36500

参数简要说明:“/etc/tomcat.keystore”含义是将证书文件保存在路径/usr/local/ac/web/下,证书文件名称是tomcat.keystore ;“-validity 36500”含义是证书有效期,36500表示100年,默认值是90天

l 在命令行填写必要的参数:

截图如下:

截图部分说明:

A、Enter keystore password:此处需要输入大于6个字符的字符串

B、“What is your first and last name?”这是必填项,并且必须是TOMCAT部署主机的域名或者IP[如:gbcom.com 或者 10.1.25.251],就是你将来要在浏览器中输入的访问地址

C、“What is the name of your organizational unit?”、“What is the name of your organization?”、“What is the name of your City or Locality?”、“What is the name of your State or Province?”、“What is the two-letter country code for this unit?”可以按照需要填写也可以不填写直接回车,在系统询问“correct?”时,对照输入信息,如果符合要求则使用键盘输入字母“y”,否则输入“n”重新填写上面的信息

D、Enter key password for <tomcat>,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以

l 完成上述输入后,直接回车则在你在第二步中定义的位置找到生成的文件

2、配置TOMCAT服务器

(1) 如果你是在Windows环境中生成证书文件,则需要将生成的证书tomcat.keystore拷贝到Tomcat将要引用的位置,假设tomcat的应用证书的路径是“/etc/tomcat.keystore”,则需要将证书文件拷贝到“etc/”下;如果是在Linux环境按照上述介绍的步骤生成证书文件的话,此时证书文件已经在“etc/”下。

(2) 配置Tomcat,打开$CATALINA_HOME/conf/server.xml,修改如下,

<Connector port=”8080″ protocol=”HTTP/1.1″

connectionTimeout=”20000″

redirectPort=”8443″ />

修改参数=>

<Connector port=”80″ protocol=”HTTP/1.1″

connectionTimeout=”20000″

redirectPort=”443″ />

 

<!–

<Connector port=”8443″ protocol=”HTTP/1.1″ SSLEnabled=”true”

maxThreads=”150″ scheme=”https” secure=”true”

clientAuth=”false” sslProtocol=”TLS”/>

–>

去掉注释且修改参数=>

<Connector port=”443″ protocol=”HTTP/1.1″ SSLEnabled=”true”

maxThreads=”150″ scheme=”https” secure=”true”

clientAuth=”false” sslProtocol=”TLS” keystoreFile=”/etc/tomcat.keystore” keystorePass=”www.gbcom.com.cn”/>

注释:标识为淡蓝色的两个参数,分别是证书文件的位置和<tomcat>的主密码,在证书文件生成过程中做了设置

<!–

<Connector port=”8009″ enableLookups=”false” protocol=”AJP/1.3″ redirectPort=”8443″ />

–>

修改参数=>

<Connector port=”8009″ enableLookups=”false” protocol=”AJP/1.3″ redirectPort=”443″ />

(3) 打开$CATALINA_HOME/conf/web.xml,在该文件末尾增加:

2.强制https访问

在tomcatconfweb.xml中的</welcome-file-list>后面加上这样一段:

Java代码

1. <login-config>

2. <!– Authorization setting for SSL –>

3. <auth-method>CLIENT-CERT</auth-method>

4. <realm-name>Client Cert Users-only Area</realm-name>

5. </login-config>

6. <security-constraint>

7. <!– Authorization setting for SSL –>

8. <web-resource-collection >

9. <web-resource-name >SSL</web-resource-name>

10. <url-pattern>/*</url-pattern>

11. </web-resource-collection>

12. <user-data-constraint>

13. <transport-guarantee>CONFIDENTIAL</transport-guarantee>

14. </user-data-constraint>

15. </security-constraint>

3、上述配置完成后,重启TOMCAT后即可以使用SSL。IE地址栏中可以直接输入地址不必输入“http://” 或者 “https://” ;也可以输入 “http:// ” 会跳转成为 “https://” 来登录

4、注意事项:

(1) 生成证书的时间,如果IE客户端所在机器的时间早于证书生效时间,或者晚于有效时间,IE会提示“该安全证书已到期或还未生效”

(2) 如果IE提示“安全证书上的名称无效或者与站点名称不匹配”,则是由生成证书时填写的服务器所在主机的域名“您的名字与姓氏是什么?”/“What is your first and last name?”不正确引起的

分类
知识中心

如何应用单个IP地址共享443端口配置多个SSL虚拟主机

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

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

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

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

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

可接受的域名格式

示例

国际顶级域名

www.domain.com、www.domain.net

CN顶级域名

www.domain.cn、www.domain.com.cn

其他顶级域名

www.seconddomain.com

子域名

server.domain.com、server.cn.domain.com…

服务器主机名

msexchange1

Intranet名称和内网域名

msautodiscovery、sercer.local

RFC 1597所规定的私有IP地址

192.168.0.0 – 192.168.255.255
10.0.0.0 – 10.255.255.255

至多一个公网IP地址

202.*.*.* …

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

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

2.开启SNI支持

SNI 是“Server Name Indication”的缩写,全称“主机名称指示”。

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配置文件中通过使用

Listen 443

NameVirtualHost *:443

<VirtualHost *:443>

……

ServerName www.example1.com

……

</VirtualHost>

<VirtualHost *:443>

……

ServerName www.example2.com

……

</VirtualHost>

开启虚拟主机配置

在Nginx中配置SNI

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

ssl_certificate common.crt;

ssl_certificate_key common.key;

server {

listen 443;

server_name www.example1.com;

ssl on;

}

server {

listen 443;

server_name www.example2.com;

ssl on;

}

开启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

NameVirtualHost *:443

<VirtualHost *:443>

ServerName www.example1.com

SSLEnable

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

</VirtualHost>

<VirtualHost *:443>

ServerName www.example2.com

SSLEnable

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

</VirtualHost>

SSLDisable

KeyFile /opt/IBM/HTTPServer/key.kdb