php5+ssl,Apache2+mod_ssl+php5完全安装实录

转自: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这一行,去掉前面的注释即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值