全部用startssl生成的证书,配置Apache使其支持SSL

Apache的编译安装见这篇:

http://www.cnblogs.com/yjken/p/3921840.html

 

网上查阅了一大批资料,得知自己生成的证书是会被浏览器提示“证书不安全”的,我也就没有去生成证书,而是直接去了startssl 申请了一个免费的证书,据说startssl也是全球唯一的一个可以申请免费ssl证书的地方,并且是被主流浏览器(firefox,chrome,IE,safari)认可的,所以,对于安全性要求不高的情景,免费的证书已经完全满足需求了,当然,如果你的安全性要求比较高,startssl也是有更高级的安全证书支持的,不过,这些更安全的证书可就是收费的了。

简单说下申请证书的步骤:

1. 去www.startssl.com注册一个帐号

2. 因为startssl不是那种常见的帐号密码登录的模式,而是不需要密码,甚至也不需要帐号,而是安装一个startssl的个人证书到你的浏览器上,下次进入这个网站,直接在弹出的证书上点确认就可以了,所以,第一次注册后,根据它的引导,会生成一张个人证书,安装至你的浏览器上,这个证书只是用来登录startssl网站用的,没有其它用处。

 

3. 验证邮箱,验证域名,startssl需要确认你确实是某域名的所有者,所以它会首先要求验证域名的所有权,验证步骤也很简单,假设你的域名是abc.com , 那么它会将验证字符串发送到诸如webmaster@abc.com这样的邮箱,你打开这个邮箱,把验证字符串拷贝并粘贴过去,就算成功了,很简单。

4. 生成证书,首先会生成一张顶级域证书,再生成一张二级域证书(整个步骤根据它的向导来,就可以了),期间有个密码,是必须要记住的,不然生成的证书,就会没法用了。

最终会得到下面几个文件:

ca.pem  ,   ssl.crt    ,   ssl.key   ,   sub.class1.server.ca.pem

其实这张ssl.key是加密过的,直接配置到apache上也是可以的,只是这样很不方便,因为,每次启动apache都必须输入一遍密码,所以,你可以直接在线解密这个私钥的.

这样生成的私钥,配置到Apache上,就不需要启动Apaceh时输入密码短语了。

 

配置如下:

<VirtualHost *:443>
    SSLEngine On
    SSLCertificateFile certificate/ssl.crt
    SSLCertificateKeyFile certificate/ssl.key
    SSLCertificateChainFile certificate/sub.class1.server.ca.pem
    SSLCACertificateFile certificate/ca.pem

    ServerAdmin  jken@abc.com
    DocumentRoot "~/www/abc"
    ServerName www.abc.com:443
    ErrorLog "logs/error/abc_error_log"
    CustomLog "logs/custom/abc_log" common
</VirtualHost>

主要是这几行:

    SSLEngine On
    SSLCertificateFile certificate/ssl.crt
    SSLCertificateKeyFile certificate/ssl.key
    SSLCertificateChainFile certificate/sub.class1.server.ca.pem
    SSLCACertificateFile certificate/ca.pem

这个服务器名称需要增加443,端口号:

ServerName www.abc.com:443

这样,配置就完成了,不过,如果你这个时候重启Apache,你会发现用https访问不了网站,我当时配置的时候,就忽略了这一点,结果找了一大堆资料,还是不行,没办法,只好自己研究了,去服务器上,用netstat命令查看,发现,完全没有开启433监听端口,也就是说Apache的配置上还漏了一条,我在“Listen 80”下面,又加了一行“Listen 443”

Listen 80
Listen 443

这样,再重启Apache,使用https方式,打开网站,畅通无阻,问题解决。

 

对了,如果你的Apache不是我的安装方式,可能还会出问题,就是,你可能压根就没有安装ssl,我在安装Apache的时候,是有这条的:

with-ssl=/usr/include/openssl

这样,安装了ssl功能,如果不是编译成静态的,而是动态库的话,还得去掉下面这行的注释:

LoadModule ssl_module modules/mod_ssl.so

好了,这样,一般是不会有什么问题的了。

posted @ 2015-07-15 10:55  yJken的博客  阅读(2881)  评论(4编辑  收藏  举报