首页 > 服务器运维 > 关于SSL证书与CDN加速的选择

关于SSL证书与CDN加速的选择

2014年1月12日 Terence 781 次阅读 发表评论 阅读评论

      一直以为能被各大浏览器所承认的SSL证书都是要收费的,最近看到一篇文章谈到了一家证书服务商StartSSL。它的根证书能被所有平台的浏览器所承认,在它下面可以免费申请二级SSL证书(Class 1)。不过免费的总是有些限制的:1、只能拥有带一个子域名和其根域名的证书;2、不支持通配符子域名;3、证书有效期为一年,但届时可以续期。当然,等交了59.9刀/2yr升级到Class 2等级证书后就没这些限制了。申请方法见此链接

      然后我就按教程的方法成功申请到了本博客域名对应的SSL证书,其实apache的配置还算容易,获取完相应的证书文件后,在CentOS上安装mod_ssl模块,配置ssl.conf文件为如下形式即可:

NameVirtualHost 11.22.33.44:443
 
<VirtualHost 11.22.33.44:443>
    ServerName 11.22.33.44
    <Location />
        Order allow,deny
        Deny from all
    </Location>
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
    SSLCertificateFile /etc/httpd/ssl.crt
    SSLCertificateKeyFile /etc/httpd/ssl.key
    SSLCertificateChainFile /etc/httpd/sub.class1.server.ca.pem
    SSLCACertificateFile /etc/httpd/ca.pem
</VirtualHost>
 
<VirtualHost 11.22.33.44:443>
    ServerName www.terence2008.info
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
    SSLCertificateFile /etc/httpd/ssl.crt
    SSLCertificateKeyFile /etc/httpd/ssl.key
    SSLCertificateChainFile /etc/httpd/sub.class1.server.ca.pem
    SSLCACertificateFile /etc/httpd/ca.pem
    RewriteEngine on
    RewriteRule ^(.*)$ https://terence2008.info/$1 [R=301,L]
</VirtualHost>
 
<VirtualHost 11.22.33.44:443>
    DocumentRoot "/var/www/html"
    ServerName terence2008.info
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
    SSLCertificateFile /etc/httpd/ssl.crt
    SSLCertificateKeyFile /etc/httpd/ssl.key
    SSLCertificateChainFile /etc/httpd/sub.class1.server.ca.pem
    SSLCACertificateFile /etc/httpd/ca.pem
</VirtualHost>

      可以看到我设置了三个VirtualHost,由于本博客是经过CDN加速的,所以我不想让服务器本身的ip提供Web访问服务,所以和之前的apache虚拟主机配置类似,把ServerName为ip的那个设为全局Deny,这样就只能通过域名访问了,而且这样设置还有一个优点,就是杜绝了第三方域名的恶意A记录绑定。另外,为了SEO上的考虑,我把www的SSL子域名全部301转向到了根域名上。

      关于Apache中多个HTTPS虚拟主机的实现可以参考这个链接,我就不再详述。主要的问题就是Apache在单网卡且基于域名的虚拟主机配置下只能使用同一个证书,或者说即使有不同的证书,最终使用的都是排在前面的默认的第一个。解决的办法只能是:1、采用多网卡,每块网卡绑定一个证书;2、采用通配符子域名证书(*.domain.com),但限制就是旗下所有的网站都是在同一个域名下;3、采用mod_gnutls模块,达到单一IP为多个域名提供SSL服务的目的,但它用的不是OpenSSL库,取而代之的是GnuTLS库,而且不支持SSL2.0和1.0。另外CentOS官方源没有这个模块安装包,具体说明以及安装方法可以参考这个链接,我猜测大名鼎鼎的cPanel之所以能做到让用户随意绑定域名和配置其对应的SSL证书,八成也是用了这个模块的缘故吧。

      搞定了SSL,接下来就是CDN了,其实之前没搞过还不知道,原来绝大多数的CDN服务商是不提供SSL加速服务的,可能是由于成本上的考虑吧,据说需要硬件上的支持。目前在网上转了一大圈发现免费支持SSL加速的也就Google的PageSpeed了,真是业界良心啊,链接在此,但仔细一瞧发现它的要求是必须要带子域名,像我的域名是不带www就杯具了,而且还有一个关键的因素,它的加速点没有一个是设立在中国大陆内的,所以对于一个国内博客来说等于没用啊。还有一个国内的CDN服务商是安全宝,是创新工场扶直出来的一个创业小团队,号称支持SSL加速,结果我过去一看,好家伙,需要额外定制,而且费用不菲,链接在此,最讨厌把收费项目当作广告噱头了。

      搞了半天原来发现对于一个小穷站长来说,SSL和CDN是鱼与熊掌不可兼得的啊。。否则本来我还打算在启用CDN加速的情况下,博客前台HTTP和HTTPS能同时访问,后台强制使用HTTPS呢,设置方法见此链接。也罢也罢,通过这次学习好歹基本上了解了HTTPS的工作原理,SSL我看还是放弃吧 :|





  1. 本文目前尚无任何评论.