自娱自乐

   简单来说,ssl协议是工作在传输层和应用层间用于保护应用层数据的安全协议。关于ssl协议的细节参阅《ssl & tls》,在此主要总结下如何开启Apache的ssl功能。

   /etc/apache2/目录下有两个子目录:sites-available、sites-enabled。可以发现sites-enabled中的文件都是到sites-available的软连接,其中sites-avaliable中存放的都是真正的配置文件,每一个配置文件对应一个“虚拟主机”。可以理解为在一个IP地址上构建多个网站,每个网站对应一个配置文件。

      1、 为启动ssl功能,首先第一步是加载apache ssl模块:

           a2enmod ssl

      2、用openssl分别生成CA证书、服务器证书,用CA给服务器签名,并将CA证书导入到浏览器中。

生成根秘钥:

Openssl genrsa –des3 –out rootca.key 1024

根自签名证书,目的为了给其它证书签名和根证书之间信任关系:

Openssl req –new –x509 –days 3650 –key rootca.key –out rootca.crt

   生成服务器证书密钥:

     Openssl genrsa –des3 –out server.key 1024

生成服务器根证书请求:

     Openssl req –new –key server.key –out server.csr

  生成服务器证书,并由根证书签名:

    Openssl ca –in server.csr –outserver.crt –cert rootca.crt –keyfile rootca.key –config openssl.cnf

3、修改sites-avaliable中的default-ssl文件,将其中服务器证书和密钥存放位置改掉

4、ssl站点设为可运行

    a2ensite ssl

5、重启apache,在浏览器中输入https://127.0.0.1,即可实现通过ssl访问服务器,抓包可以发现原本是明文的部分变成了乱码。