Apache2 + mod_ssl + php5 完全安装实录(1)

原创 2004年08月10日 10:06:00

原始地址:http://blog.njmars.com/myhan/archive/2004/07/16/210.aspx

环境:
RedHat 9.0
说明:
使用$ 开头的是普通用户身份执行的命令
使用# 开头的是root帐号执行的命令

第一步:安装apache
下载apache2: http://httpd.apache.org/download.cgi
我需要mod_ssl的支持,和apache1不同的是,mod_ssl不在是单独的模块,而是放在apache发行包里面了,默认是不启用的,config的时候选择上就可以了。
我使用DSO方式编译安装apache,同时将全部模块都编译好,以方便后来可能的需要。只要编辑httpd.conf,在里面去掉不想要的模块(注释或者删除对应模块的LoadModule行),就可以定制自己的apache咯。
$ tar zxvf httpd-2.0.50.tar.gz
$ ./configure --prefix=/usr/local/apache2 --enable-so --enable-ssl=shared --enable-mods-shared=all --with-ssl=/usr/local/ssl
$ make
$ su
# make install

Apache有两种使用模块的方法,其一是永久性包含进核心;
如果操作系统支持动态共享对象(DSO),而且能为autoconf所检测,则模块还可以被动态编译。
DSO模块的存储是独立与核心的,可以被核心使用由mod_so模块提供的运行时刻配置指令包含或排除。
如果编译中包含有任何动态模块,则mod_so模块会被自动包含进核心。如果希望核心能够装载DSO,而不实际编译任何动态模块,需要明确指定--enable-so
(http://kajaa.bbs.us/ApacheManual/install.html)

第一次按照上述方法编译的apache,启动的时候会报错:
# cd /usr/local/apache2
# ./bin/apachectl startssl
Syntax error on line 251 of /usr/local/apache/conf/httpd.conf:
Cannot load /usr/local/apache/modules/mod_ssl.so into server: /usr/local/apache/modules/mod_ssl.so: undefined symbol: X509_free

原因是什么呢?看 http://www.smartframeworks.com/qt-apache-ssl.html
因为按照下面的方法(参看:Apache2 + mod_ssl + php5 完全安装实录(2))安装的openssl默认是没有编译成动态链接库的,因为其文档说openssl的动态链接库还不成熟,可以使用 ./config shared 编译带动态链接库的openssl,但是还处于试验阶段。
解决这个问题的办法是:将mod_ssl静态的编译到apache里面。
请使用下面的方法重新来过:)
$ ./configure --prefix=/usr/local/apache2 --enable-so --enable-ssl=static --with-ssl=/usr/local/ssl --enable-mods-shared=all
$ make
$ su
# make install

这次启动apache的时候又发现一个错误:
# cd /usr/local/apache2
# ./bin/apachectl startssl
Syntax error on line 108 of /usr/local/apache2/conf/ssl.conf:
SSLCertificateFile: file '/usr/local/apache2/conf/ssl.crt/server.crt' does not exist or is empty

这又是什么原因呢?因为我们没有配置ssl,需要生成ssl需要的证书。
以前使用apache1+mod_ssl的时候,make之后有一个这样的步骤
$ make certificate
可以用来生成ssl所用到的证书。
现在没有这个工具了,只能自己动手生成了,对证书不熟悉的人,有一个工具可以使用:http://www.openssl.org/contrib/ssl.ca-0.1.tar.gz
# cd /usr/local/apache2/conf
# tar zxvf ssl.ca-0.1.tar.gz
# cd ssl.ca-0.1
# ./new-root-ca.sh                         (生成根证书)
No Root CA key round. Generating one
Generating RSA private key, 1024 bit long modulus
...........................++++++
....++++++
e is 65537 (0x10001)
Enter pass phrase for ca.key:              (输入一个密码)
Verifying - Enter pass phrase for ca.key:  (再输入一次密码)
......
Self-sign the root CA...                   (签署根证书)
Enter pass phrase for ca.key:              (输入刚刚设置的密码)
........
........                                   (下面开始签署)
Country Name (2 letter code) [MY]:CN
State or Province Name (full name) [Perak]:JiangSu
Locality Name (eg, city) [Sitiawan]:NanJing
Organization Name (eg, company) [My Directory Sdn Bhd]:Wiscom System Co.,Ltd
Organizational Unit Name (eg, section) [Certification Services Division]:ACSTAR
Common Name (eg, MD Root CA) []:WISCOM CA
Email Address []:acmail@wiscom.com.cn

这样就生成了ca.key和ca.crt两个文件,下面还要为我们的服务器生成一个证书:
# ./new-server-cert.sh server              (这个证书的名字是server)
......
......
Country Name (2 letter code) [MY]:CN
State or Province Name (full name) [Perak]:JiangSu
Locality Name (eg, city) [Sitiawan]:NanJing
Organization Name (eg, company) [My Directory Sdn Bhd]:Wiscom System Co.,Ltd
Organizational Unit Name (eg, section) [Secure Web Server]:ACSTAR
Common Name (eg,
www.domain.com) []:acmail.wiscom.com.cn
Email Address []:acmail@wiscom.com.cn

这样就生成了server.csr和server.key这两个文件。
还需要签署一下才能使用的:
# ./sign-server-cert.sh server
CA signing: server.csr -> server.crt:
Using configuration from ca.config
Enter pass phrase for ./ca.key:             (输入上面设置的根证书密码)
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'CN'
stateOrProvinceName   :PRINTABLE:'JiangSu'
localityName          :PRINTABLE:'NanJing'
organizationName      :PRINTABLE:'Wiscom System Co.,Ltd'
organizationalUnitName:PRINTABLE:'ACSTAR'
commonName            :PRINTABLE:'acmail.wiscom.com.cn'
emailAddress          :IA5STRING:'acmail@wiscom.com.cn'
Certificate is to be certified until Jul 16 12:55:34 2005 GMT (365 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
CA verifying: server.crt <-> CA cert
server.crt: OK
 (如果这里出现错误,最好重新来过,删除ssl.ca-0.1这个目录,从解压缩处重新开始。)

下面要按照ssl.conf里面的设置,将证书放在适当的位置。
# chmod 400 server.key
# cd ..
# mkdir ssl.key
# mv ssl.ca-0.1/server.key ssl.key
# mkdir ssl.crt
# mv ssl.ca-0.1/server.crt ssl.crt

然后就可以启动啦!
# cd /usr/local/apache2
# ./bin/apachectl startssl

对于这个提示:
httpd: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
只需要编辑httpd.conf,找到ServerName xxxx这一行,去掉前面的注释即可。

linux下apache+openssl配置记录

最近在研究linux下的apache-ssl配置,写点个人小心得,新人发博,敬请见谅。 软件环境 Apache Httpd 2.2.29 (http://httpd.apache.org ) ...
  • jiangheng0535
  • jiangheng0535
  • 2014-09-29 09:49:11
  • 1115

把ssl模块加入到已经编译好的apache中实现HTTPS

为了使Apache支持https访问,系统需要安有apache、openssl、mod_ssl.so 1、安装openssl: 基本上系统都已经安装了,在/usr/bin/openssl下...
  • CuiXiaoBo521
  • CuiXiaoBo521
  • 2017-09-19 12:28:57
  • 1206

CentOS 4.4 编译安装 apache 2.2.4(mod_ssl)+php 5.2.1 wi

v1.2 2007年2月12日 apache 更新为2.2.4版本,增加mod_ssl和openssl支持,增加apr和apr-util的编译, php更新为5.2.1,增加集成Suhosin补丁,m...
  • justin_hua
  • justin_hua
  • 2007-07-31 13:57:00
  • 1485

09-通过mod_php5支持PHP

Apache对PHP的支持是通过Apache的模块mod_php5来支持的。如果希望Apache支持PHP的话,在./configure步骤需要指定–with-apxs2=/usr/local/apa...
  • ghostlv
  • ghostlv
  • 2016-04-24 18:42:05
  • 1126

Windows2000 下apache+OpenSSL+ModSSL+获取证书

本文介绍了在Windows2000平台下安装Apahce,并配置SSL,和使用CGI的方式获取用户证书的方法,在其他平台下安装使用方法相似,请自行变通。这里我们用到的各种安装包的版本:apache  ...
  • jbboxcn
  • jbboxcn
  • 2007-08-21 21:51:00
  • 6950

linux Apache设置https访问以及加载mod_ssl.so模块

1.申请证书【阿里云免费证书】 1.1登陆阿里云进入控制台 1.2左侧选择安全 下拉框选择证书服务 1.3右上角选择购买证书 选择免费 然后立即购买-支付 1.4返回证书列表页面 选择补全-填写要配...
  • slyjit
  • slyjit
  • 2017-06-16 18:16:27
  • 4522

mod_ssl.so文件

  • 2014年12月27日 22:40
  • 129KB
  • 下载

WIN7解决 Wamp 开启SSL失败 modules/mod_ssl.so

wamp 开启SSL报错> ./httpd -X httpd.exe: Syntax error on line 174 of D:/wamp64/bin/apache/apache2.4.18/co...
  • default7
  • default7
  • 2016-09-09 14:44:35
  • 5402

apache的mod_ssl模块(添加)

转自:http://linux.chinaunix.net/techdoc/net/2008/01/18/977001.shtml 下载httpd2.2.6,以前用http2.2.4会出问题(出...
  • forest_boy
  • forest_boy
  • 2013-04-08 18:15:51
  • 8561

linux Apache设置https访问以及加载mod_ssl.so模块以及问题解决

开始之前的话: 1.配置好服务器防火墙的443端口规则; 2.增加阿里云服务器安全组的443端口规则。 1.申请证书【阿里云免费证书】 1.1登陆阿里云进入控制台 ...
  • dmt742055597
  • dmt742055597
  • 2017-11-08 21:50:18
  • 912
收藏助手
不良信息举报
您举报文章:Apache2 + mod_ssl + php5 完全安装实录(1)
举报原因:
原因补充:

(最多只允许输入30个字)