泛域名ssl证书搭建全攻略
- 原创
- 2017-02-21 15:30:48
- 潘仙芝
- 3132
云禅道( www.zentaopm.com)原禅道无忧在线项目管理, 是禅道开发团队给大家提供的一款在线的项目管理服务,它提供了禅道软件专业版本的功能,同时内置了 subversion 和 git 的源码托管服务,这样创业型团队或者跨地域团队就可以异地办公,实现跨地域的协同管理。
在实际运营无忧在线过程中,安全是很多客户比较关心的问题。对于这个问题我们通过很多种手段来加以解决,比如操作系统层面,应用程序层面等等。最近 无忧在线项目管理 又上线了https 访问功能,进一步加强了无忧在线的安全性。
下面是笔者配置无忧在线https 访问的过程,谨供大家参考。
一、 https 协议简介
我们平常访问网站默认使用的是http 协议,但 http 协议是没有加密的,所有的内容都是以明文的方式在网络上进行传输,安全性无妨保证。 https 协议则很好的解决了这个问题。
根据维基百科( http://zh.wikipedia.org/wiki/HTTPS)的介绍,HTTPS 的主要思想是在不安全的网络上创建一安全信道,并可在使用适当的加密包和服务器证书可被验证且可被信任时,对窃听和中间人攻击提供合理的保护。
HTTPS 的信任继承基于预先安装在浏览器中的证书颁发机构(如 VeriSign 、 Microsoft 等)(意即“我信任证书颁发机构告诉我应该信任的”)。因此,一个到某网站的 HTTPS 连接可被信任,当且仅当:
- 用户相信他们的浏览器正确实现了 HTTPS 且安装了正确的证书颁发机构;
- 用户相信证书颁发机构仅信任合法的网站;
- 被访问的网站提供了一个有效的证书,意即,它是由一个被信任的证书颁发机构签发的(大部分浏览器会对无效的证书发出警告);
- 该证书正确地验证了被访问的网站(如,访问 https://example 时收到了给“ Example Inc. ”而不是其它组织的证书);
- 或者互联网上相关的节点是值得信任的,或者用户相信本协议的加密层( TLS 或 SSL )不能被窃听者破坏。
因此部署https 协议访问最为关键的就是证书。下面来看下 https 证书的分类。
二、 https( ssl ) 证书分类
2.1 从证书颁发机构来分
从证书的签发机构来分,可以分为自我签发和专业的CA 认证机构签发两种。如果只是公司内部使用,可以采用自我签发的方式来生成 ssl 证书,优势是完全免费的,部署也方便快捷。但缺点是浏览器默认认为这个自我签发的证书是不被信任的,会弹出警告页面,提示用户进行确认。比如 ie 下面这提示这样的页面:
这种方式给客户提供服务就非常不好。所以还是要购买专业CA 机构颁发的证书。
2.2 从证书认证等级来分
从证书认证的等级来分,ssl 证书可以分为 DV, OV 和 EV 三种:
l DV 是 Domain Validation 的缩写,意思就是对网站域名所有权进行验证。 CA 认证机构会向域名持有者的邮箱发送相应的邮件,以确认证书和域名的所有权关系。其特点是简单快捷,价格便宜,缺点是无法保证网站经营者的身份,因此一般仅用来提供数据加密的功能。
l OV 是 Organization Validation 的缩写,这种证书在颁发的时候会对网站所有单位的身份进行证实行验证,所以一般电子商务类的网站往往会做 OV 的认证。价格当然也会比较昂贵,证书颁发周期也会比较久。
l EV 是 Extended Validation 的缩写,也是最严格的身份验证,当用户在访问通过 EV 认证的网站时候,浏览器的显示为绿色,当然价格也是相当的昂贵。 :)
2.3 从证书适用域名个数来分
一个 ssl 证书都有其对应的域名,从其适用的域名个数来分可以分为单域名、多域名和泛域名证书。顾名思义,单域名证书只能适用于一个域名,多域名证书可以适用于多个域名。而泛域名证书,又称为通配符型(wildcard) 证书,可以匹配 *.domain.name 这种形式。
我们无忧在线给客户提供的访问路径都是subdomin.5upm.com 的形式,比如您申请一个 abc 的二级域名,那么访问无忧在线项目管理服务的网址就是 http://abc.5upm.com 。我们要解决的就是为每一位客户的二级域名提供安全的 https 访问服务,那么泛域名 ssl 证书就是我们的选择。
下面就是来选购ssl 证书了。 Ssl 证书不同的厂商价格都有不同,我们在网上搜索了之后,找到了一个 cheapssls.com 的网站,它专门代理各个厂商的 ssl 证书,价格比较实惠,下面我们是我们在 cheapssls.com 网站上面购买证书、激活证书的全过程。
三、 购买证书
3.1 注册用户
第一步是在cheapssls.com 网站注册用户。访问 cheapssls.com ,选择页面右上角的 "Sign in" 链接,按照提示注册一个帐号,过程不再赘述。
3.2 选择厂商
注册完帐号之后,就可以来选择要购买的证书和厂商了。我们要购买的是泛域名证书,所以选择wildcard ssl certificates ,如下图:
我们选择了R apidSSl 提供的证书:
3.3 下订单
确定好证书类型和厂商之后,就可以下订单了:
一般购买的年份越多,折扣越低。笔者购买的这一款价格是98.99$ ,算起来还是比较实惠的。
3.4 支付
因为国外网站都使用美元结算,国内用户购买的话,可以通过信用卡或者paypal 支付。信用卡需要带有 mastcard 或者 visa 标志的,这种信用卡是支持外币结算的。
笔者选择使用paypal 支付:
然后根据页面的提示到paypal 网站支付就可以了。支付成功之后,下一步的操作就是来激活证书了。
四、 激活证书
4.1 生成 csr 文件
激活证书之前需要在证书安装的服务器上面生成csr 文件, linux 下面可以 openssl 来创建下面的这些文件,基本的步骤和命令如下:
4.1.1 生成 server.key 文件。
首先调用openssl 命令来生成 server.key 文件。
其中需要注意的是加密强度要采用2048 ,同时命令还会让你输入一个保护 key 文件的密码。
去掉密码:
openssl rsa -in server.key -out server.nopass.key
mv server.nopass.key server.key
4.1.2 根据 server.key 文件,生成 server.csr 文件
有了server.key 文件之后,就可以来生成 server.csr 文件了。
这个命令里面需要注意的地方:
Country Name ,填写 CN ,代表中国。
State or Province Name ,填写汉语拼音的省份即可。
Locality Name ,填写所在城市的汉语拼音即可。
Organization Name ,填写公司的汉语拼音即可。
Organizational Unit Name, 填写所在的部门的汉语拼音。
Common Name ,这个是最关键的,需要填写 ssl 证书对应的域名,泛域名一定要写成 *.doomain.com 的形式。
Email Address ,填写联系人邮箱即可。
通过上面的命令,我们就可以生成server.csr 文件了,下面的步骤就是用这个文件来申请激活证书了。
4.2 申请激活
还是回到cheapssl 网站,登录系统,然后访问 my ssl ,选择购买的证书,激活:
会出现一个申请的表单:
在这个页面会让你选择服务器的类型,我们选择是apache + openssl 。然后下面的文本框里面将刚才生成的 server.key 里面的内容拷贝进来,然后点击下一步,验证域名的所有者身份:
可以有几种类型,一种是通过你所申请的域名的邮箱,比如笔者用的5upm.com ,那么就需要一个 @5upm.net 的邮箱,还有一种方式就是通过域名所有人的邮箱来进行验证。
选择了验证方式之后,,系统会提示已经激活成功,下面就是需要登录刚才填写的邮箱,确认这次申请。
这是收到的邮件的内容,点击里面的链接进行确认:
选择"I Approve" :
之后就会收到一封email ,里面包含了正式的 ssl 证书和INTERMEDIATE CA文件。
这是ssl 证书。
这是INTERMEDIATE CA文件。
下面就是配置apache 来使用证书了。
五、 配置证书
配置apache 证书之前,需要下打开 ssl 模块,并配置 apache 监听 443 端口,在此不再赘述,网上有很多资料可以参考。将刚才通过邮件拿到的 ssl 文件和 ca 文件分别保存成 server.crt 和 server.pem 。这样加上我们之前生成的 key 和 csr 文件,我们总共有四个文件, server.key, server.csr, server.crt, server.pem ,将这四个文件存放在一个目录下面,比如 /etc/apaches/ssl/ 下面,然后配置 apache 的虚拟机:
配置完成之后,重启apache ,顺利的话,就可以通过 https 来访问了。下面是我们无忧在线的访问,地址栏已经变成了黄色的加密栏 ( 不同浏览器显示不同 ) 。