配置Apache和OpenSSL

来源:互联网 发布:radium mac 编辑:程序博客网 时间:2024/06/11 00:56

环境:Fedora 12,OpenSSL 0.9.8l,httpd 2.3.5,假设,机子上没有安装openssl和httpd。

  这篇日志描述了在Fedora 12上编译并安装ApacheWeb服务器,并打开433号端口,提供HTTPS服务。要说明的是,不用在mod_ssl的官网上再下载mod_ssl了,因为现在httpd已经把mod_ssl做为一个模块放到它自己的源码里,只需要在配置时添加一个选项就行了。
  从www.openssl.org下载openssl-0.9.8l.tar.gz到/home/MaChi/Apache_OpenSSL/
  从www.apache.org下载httpd-2.3.5-alpha.tar.bz2到/home/MaChi/Apache_OpenSSL/

解压:
  cd /home/MaChi/Apache_OpenSSL/
  tar xvf openssl-0.9.8l.tar.gz
  tar xvf httpd-2.3.5-alpha.tar.bz2
  
安装OpenSSL:
  cd openssl-0.9.8l
  如果在配置时没有指定prefix,则openssl会安装到/usr/local/ssl/目录下,现在,我要把openssl安装到/usr/local/目录下:
  ./config --prefix=/usr/local --openssldir=/usr/local/openssl
  make
  make test
  sudo make install
  openssl version
  输出:OpenSSL 0.9.8l 5 Nov 2009
OpenSSL安装完毕。
  
安装Apache:
  cd ..
  cd httpd-2.3.5-alpha
  svn co http://svn.apache.org/repos/asf/apr/apr/trunk srclib/apr
  cd srclib/apr/
  ./buildconf
  ./configure
  cd ../../
  ./configure --prefix=/usr/local/apache2 --enable-ssl=static --with-ssl=/usr/local
  make
  sudo make install
Apache安装完毕。
  sudo /usr/local/apache2/bin/apachectl start
现在,就可以通过在firefox的地址栏中输入127.0.0.1,就可以看到Apache的默认页面。
  sudo /usr/local/apache2/bin/apachectl stop
现在,Apache的Web服务器就停止了。

配置Apache SSL:
  因为在编译时,已经将mod_ssl静态编译到httpd中,所以现在只需要把ssl的配置文件添加到httpd的配置里就可以了。
  修改文件/usr/local/apache2/conf/httpd.conf,在文件最后添加一句"Include /usr/local/apache2/conf/extra/httpd-ssl.conf"

  sudo /usr/local/apache2/bin/apachectl start
  我这里会出现:
  Syntax error on line 56 of /usr/local/apache2/conf/extra/httpd-ssl.conf:
  SSLSessionCache: 'shmcb' session cache not supported (known names: )
  修改文件/usr/local/apache/conf/extra/httpd-ssl.conf(如果没有出上面的错,就不用改了),
  将文件第56行:SSLSessionCache        "shmcb:/usr/local/apache2/logs/ssl_scache(512000)"
  改为:SSLSessionCache         nonenotnull

  sudo /usr/local/apache2/bin/apachectl start
  此时,又会出错:
  Syntax error on line 95 of /usr/local/apache2/conf/extra/httpd-ssl.conf:
  SSLCertificateFile: file '/usr/local/apache2/conf/server.crt' does not exist or is empty
  这是因为在启动https时,需要一个证书,而我们还没有为这个网站生成一个证书,为了测试,下面将用openssl生成一个自签名的证书:
  cd /usr/local/apache2/conf/
  sudo openssl req -new -x509 -nodes -out server.crt -keyout server.key
  下面openssl会要求为证书输入一些相关信息:
  Country Name (2 letter code) [XX]:CH
  State or Province Name (full name) []:Shannxi
  Locality Name (eg, city) [Default City]:Baoji
  Organization Name (eg, company) [Default Company Ltd]:XD
  Organizational Unit Name (eg, section) []:CS
  Common Name (eg, your name or your server's hostname) []:MaChi
  Email Address []:machi1271@126.com
  这时,在目录/usr/local/apache2/conf/下生成了两个文件:server.key,server.crt
  在firefox的地址栏输入:https://127.0.0.1,就可以通过SSL访问我们自己的网站了。
  当然,这些只是一些简单的配置,更多的配置可以看Apache的官方文档:http://httpd.apache.org/docs/trunk/ssl/ssl_howto.html.