twistman的技术日志

专业系统工程师打杂,副业Linux geek

IHS配置多域名的SSL证书

SSL v2的设计顺应经典的公钥基础设施PKI(public key infrastructure)设计,后者认为一个服务器只提供一个服务从而也就只使用一个证书。这意味着服务器可以在TLS启动的早期阶段发送或提交证书,因为它知道它在为哪个域服务。HTTP服务器开启虚拟主机支持后,每个服务器通过相同的地址可以为很多域提供服务。服务器检查每一个请求来决定它在为哪个域服务。这个信息通常从HTTP请求头获得。不幸的是,当设置了TLS加密,服务器在读取HTTP请求里面的域名之前已经向客户端提交了证书,也就是已经为默认域提供了服务。因此,这种为虚拟主机提供安全的简单途径经常导致使用了错误的数字证书,从而导致浏览器对用户发出警告。 以上描述摘自OpenWares。详细了解请到:服务器名字指示SNI(Server Name Indication) 即访问www.buyberry.net会读取到beta.buyberry.net的证书,这样浏览器会报证书错误。 因此需要Server Name Indication (RFC 4366)这个扩展协议来修正。标准apache是支持Name Based SSL VHosts With SNI 。前提需要 OpenSSL 0.9.8f 之后才能支持。但是IHS并不支持这个扩展协议。

导出IHS的SSL服务器证书私钥的方法

在项目实施的过程中需要把IHS上面的SSL证书导出,去申请CDN,或者把证书导入到F5等负载均衡设备做SSL off load的工作。以下为到处IHS 的ssl服务器证书私钥的方法: 1) 用Ikeyman打开Key文件。 2) 选择personal certificate,点export. 3) 选择PKCS12文件类型,输入文件名,点OK. 4) 输入PKCS12文件的password,点OK. 5) 安装OpenSSL,在AIX上需要另外安装。找台Linux服务来做会比较方便。 6) 用OpenSSL从p12文件解开私钥:

iOS 5 连接IHS TLS兼容问题

开发人员反映iphone的app无法与IHS建立SSL,查阅了一下资料发现:IHS 7.0以前的版本只支持TLS 1.0,但是IOS 5以后默认是使用TLS 1.2建立SSL连接,所以当IOS 5的应用使用连接到IHS 7或以前版本,需要与IHS重新协商SSL连接。使用TLS 1.0协议建立连接。 解决问题的方法: