系统环境:
Linux 2.6.18-238.el5 #1 SMP Thu Jan 13 16:24:47 EST 2011 i686 i686 i386 GNU/Linux
源码包:
httpd-2.2.3.tar.gz
openssl-1.0.1c.tar.gz
PHP版本:
PHP 5.1.6 (cli)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
由于httpd-2.2.3.tar.gz中已自带ssl模块内容,故不需要再安装mod_ssl模块插件;
只需当apache安装完成后,在其配置文件httpd.conf中,
将Include conf/extra/httpd-ssl.conf的注释去除,即可开启https,
但需要注意的是,当去除注释,重启:service httpd restart后,会提示需要证书文件及key;
此时则需要我们利用工具openssl来制作证书及key:
openssl最好选用较高版本,因为较低版本的openssl存在证书有效期年限的设定限制,个人觉得也算是一个BUG,
本人在使用OpenSSL 0.9.8e版本时,当有效期设定超过15年,就会发现证书截止日期被改写成了1901年,但在高版本中这一问题似乎已解决;
详细安装步骤可参考:
http://www.centos.bz/2011/10/centos-install-apache-ssl/
[关于apache无法正常显示php页面问题]
一、配置httpd.conf文件:
1、vi /etc/httpd/conf/httpd.conf
2、在DirectoryIndex index.html 后面添加 index.php (默认PHP主页)
3、AddType application/x-httpd-php .php (设置php文件后缀)
4、AddType application/x-httpd-php-source .phps
二、打开PHP配置文件php.ini:
1、vi /etc/php.ini
2、将register-golbals = Off (设置为On)
三、重启apache服务:
service httpd restart
[apachectl startssl启动apache自动运行输入密码]
问题现象:
安装了一台服务器,开放了https,
把启动命令/usr/local/bin/apachectl startssl写到/etc/rc.local里,重启服务器。
发现apache并没有自动运行。
手动运行:
[root@localhost]# /usr/local/bin/apachectl restart
httpd not running, trying to start
Apache/2.2.0 mod_ssl/2.2.0 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.
Server www.example.com:443 (RSA)
Enter pass phrase:
OK: Pass Phrase Dialog successful.
发现原来是要输入pass phrase的原因
解决方案有3种:
(1):去掉/usr/local/bin/apachectl startssl启动的pass phrase,用空pass phrase启动apache
(while preserving the original file):
$ cp server.key server.key.org
$ openssl rsa -in server.key.org -out server.key
确认server.key 文件为root可读
$ chmod 400 server.key
参考 http://www.chinaunix.net/jh/13/599604.html
(2):编辑
vi /usr/local/apache2/conf/extra/httpd-ssl.conf
注释掉:
SSLPassPhraseDialog builtin
然后在其后添加:
SSLPassPhraseDialog exec:/usr/local/apache2/conf/apache_pass.sh
vi /usr/local/apache2/conf/apache_pass.sh
#!/bin/sh
echo "password"
chmod +x /usr/local/apache2/conf/apache_pass.sh
然后重启apache
service httpd restart
(3):制作无需输入密码的证书
使用128位rsa算法生成密钥server.key文件,
这种密钥文件所生成的证书在apache等服务器中启动服务器时不会要求输入密码,同时也不会把私钥加密。