首页 > IT > 虚拟主机使用免费的自签SSL证书并应用到子域名

虚拟主机使用免费的自签SSL证书并应用到子域名

2010年1月8日 发表评论 阅读评论

好多朋友的网站都是使用虚拟主机的。在一些网站后台管理程序登录上需要用到SSL加密,已确保登录密码不会在网络传输中外泄。但是单单为了登录网站后台管理的时候使用ssl而向空间租用商购买SSL证书,明显不太划算,每年要多付出45美元。其实大家都知道,SSL证书不一定要购买,可以自己生成。然后配置到服务器即可以。只是使用的时候浏览器会弹出对话框告诉你这个SSL证书不是专业机构颁发的。只要确认通过就可以。其它使用上没有太大区别的。
由于我们虚拟主机用户不能修改apache的http.conf文件,所以大家不能通过ssh登录主机进行操作。只能通过cPanel操作。我是hostmonster用户,只能按照hostmonster说明给大家。这里是hostmonster的操作指南SSL Installation Instructions

首先要确认你的主机是否符合要求,首先你的主机需要有独立ip才可以使用SSL.如果没有独立ip只能使用共享SSL证书https://secure.hostmonster.com/~yourunixusername。

安装SSL几个步骤。

1、在cpanel 进入 SSL/TLS manager 。
2、生成Private Keys (KEY),生成的时候需要选择你的主域名(PRIMARY domain)
3、生成Certificate Signing Requests (CSR)
4、生成Certificates (CRT)证书(这里的证书你可以自己生成,也就是自签证书,不要钱的。你也可以吧CSR等资料交给ssl证书生成商生成,这个是要钱的,有时候会有些免费1个月的免费证书)
5、通知hostmonster管理人员帮助你安装证书到服务器。这个只要你提交工单(Open A Ticket)给hostmonster就可以了。

当管理员完成安装后,你就可以通过https的链接访问你的网站了(例如:https://www.yourDomain.com)。如果你使用的证书是自签证书,浏览器提示证书有问题,点击继续就可以了。如果你比钱买了证书就当然没有这个提示啦。

这下爽了吧。不给钱都可以使用SSL证书,哈哈。不过你还别开心的太早,因为这个证书只是对主域名有效,如果你有使用子域名,那样对于用https访问子域名是没有效的。其实这也是正常的,因为根据https的协议一个ip只能对应一个域名。但是我有点不死心,因为我的blog是使用子域名访问的。我需要https可以访问到子域名。而且我知道一个网站的证书可以用到别的网站上的。最多浏览器提示你的证书来源是别的网站,对于我来说只是为了后台登陆使用ssl。这提示并没有问题,只要添加例外就可以了。于是我发出工单向hostmonst提出我想应用https到我的子域名的问题。不过给出的答复是不可以。

Unfortunately, there is no change we can make on the server that will make the SSL certificate work for the subdomain (https://daozhao.goflytoday.com ); the SSL certificate will work for the domain root ( https://goflytoday.com ) and www subdomain (https://www.goflytoday.com ) only.

当我看到这个回复的时候比较无奈,不过我还是不死心,根据我的知道的https和ssl的原理,应该可以结合apache的mod_rewrite来实现对于这个子域名支持的。经过思考和尝试,终于可以通过mod_rewrite实现https对子域名的支持。

#daozhao.goflytoday.com
#把下边的daozhao.goflytoday.com域名改成你的域名
RewriteCond %{HTTP_HOST} ^daozhao.goflytoday.com$
#daozhao 改成你的子域名工作的目录
RewriteCond %{REQUEST_URI} !^/daozhao/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#daozhao 改成你的子域名工作的目录
RewriteRule ^(.*)$ /daozhao/$1

#把下边的daozhao.goflytoday.com域名改成你的域名
RewriteCond %{HTTP_HOST} ^daozhao.goflytoday.com$
#daozhao 改成你的子域名工作的目录
RewriteRule ^(/)?$ daozhao/ [L]

对于子域名的访问,浏览器第一次访问肯定会弹出证书有问题的说明,无论你是自签证书还是购买的证书。只有添加例外就可以了。
对于这种自签证书和通过上边的mod_rewrite方式去支持子域名的方法,不太适合对于公众服务的登录和其他加密页面。浏览器弹出个对话框提示挺吓人的。但是对于一些只是网站内部管理的登录部分使用该方法还是不错的,没有必要花费每年45美元。

Bookmark and Share
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.