配 置 HTTPS 详 解

系统环境
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等服务器中启动服务器时不会要求输入密码,同时也不会把私钥加密。

你可能感兴趣的:(配 置 HTTPS 详 解)