zoukankan      html  css  js  c++  java
  • 全部用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

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

  • 相关阅读:
    使用libcurl POST数据和上传文件
    Google Protocol Buffer 的使用和原理
    curl如何处理cookie
    volatile语义及线程安全singleton模式探讨
    OpenCV 入门级一
    SEBank银行项目实施说明
    SEBank银行项目文件编写规范
    SEBank银行项目体系结构设计报告
    SEBank银行项目体系结构设计报告
    SEBank银行项目第一个星期的进度安排
  • 原文地址:https://www.cnblogs.com/yjken/p/4647639.html
Copyright © 2011-2022 走看看