|
发表于 2007-7-10 20:31:25
|
显示全部楼层
在redhat 9.0下一步一步编译安装Apache 1.3.27+mod_ssl的过程
安装过程:
1 下载所需的软件包
apache_1.3.31.tar.gz http://apache.linuxforum.net/dist/httpd/apache_1.3.31.tar.gz
mod_ssl-2.8.19-1.3.31.tar.gz http://www.modssl.org/source/mod_ssl-2.8.19-1.3.31.tar.gz
openssl-0.9.7d.tar.gz http://www.openssl.org/source/openssl-0.9.7d.tar.gz
2 安装openssl
openssl 是mod_ssl 必需的软件包
tar zxvf openssl-0.9.7d.tar.gz
cd openssl-0.9.7d
./config (请看清楚,不是一般的configure 它自己的是config)
make
make install
将openssl安装到/usr/local/ssl
3 将mod_ssl 配置进apache
tar zxvf mod_ssl-2.8.19-1.3.31.tar.gz
tar zxvf apache_1.3.31.tar.gz
cd mod_ssl-2.8.19-1.3.31
[root@host5 mod_ssl-2.8.19-1.3.31]# ./configure --with-apache=../apache_1.3.31 --with-ssl=/usr/local/ssl/ --prefix=/usr/local/apache
Configuring mod_ssl/2.8.19 for Apache/1.3.31
+ Apache location: ../apache_1.3.31 (Version 1.3.31)
+ OpenSSL location: /usr/local/ssl/
+ Auxiliary patch tool: ./etc/patch/patch (local)
+ Applying packages to Apache source tree:
o Extended API (EAPI)
o Distribution Documents
o SSL Module Source
o SSL Support
o SSL Configuration Additions
o SSL Module Documentation
o Addons
Done: source extension and patches successfully applied.
Configuring for Apache, Version 1.3.31
+ using installation path layout: Apache (config.layout)
Creating Makefile
...........................................
Creating Makefile in src/main
Creating Makefile in src/modules/standard
Creating Makefile in src/modules/ssl
Now proceed with the following commands:
$ cd ../apache_1.3.31
$ make
$ make certificate
$ make install
[root@host5 mod_ssl-2.8.19-1.3.31]#
当大家看到以上的东西后,mod_ssl 已经加到了apache的源代码中,按照提示本来就应该直接到apache_1.3.31下面编译就可以使用apache 了,但是我发现这样编译后的apache 不具有动态模块加载(DSO)功能,那么来说,你的apache1.3.31只具备静态网页的功能(当然,你也可以用perl 来写CGI程序实现动态网页)其实DSO有很多好处,比如你可以加装PHP......等
4、编译和安装Apache 1.3.31
刚才提到为什么我们不按照指示去做呢,就是因为我们要把Apache 1.3.31编译成DSO模式。如果你单单想编译成静态模式的话,就直接在apache 1.3.27 目录下make 就OK了。
下面是把apache 1.3.31 编译成DSO模式。
./configure --prefix=/usr/local/apache --enable-module=so --enable-module=ssl --enable-shared=max --enable-module=rewrite
so模块用来提供DSO支持的apachehe核心模块,rewrite是地址重写的模块,如果不需要可以不编译 enable-shared=max是指除了so以外的所有标准模块都编译成DSO模块,ssl就是我们今天最重要的东西mod_ssl 模块
make
到此,apache 1.3.31+mod_ssl 已经编译完成,下面的是生成CA证书。
make certificate TYPE=custom,此处应该选一种生成证书的类型,我选custom,自己定义)
make install
启动并测试/usr/local/apache/bin/apachectl startssl
5 安装自己的证书
虽然在安装MOD_SSL时已经使用 make certificate 命令建立了服务器的证书签名,但是有时你可能需要改变它。
当然有很多自动的脚本可以实现它,但是最可靠的方法是手工签署证书.
1、先建立一个 CA 的证书
首先为 CA 创建一个 RSA 私用密钥。
cd /usr/local/apache
mkdir ssl 建立临时的目录
cd ssl
/usr/local/ssl/bin/openssl genrsa -des3 -out ca.key 1024
系统提示输入 PEM pass phrase,也就是密码,输入后牢记它。生成 ca.key 文件,将文件属性改为400,并放在安全的地方。
你可以用下列命令查看它的内容,
/usr/local/ss/bin/openssl rsa -noout -text -in ca.key
2、利用 CA 的 RSA 密钥创建一个自签署的 CA 证书(基于X.509协议)
/usr/local/ssl/bin/openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
然后需要输入下列信息:
Country Name: cn 两个字母的国家代号
State or Province Name: An Hui 省份名称
Locality Name: Bengbu 城市名称
Organization Name: Family Network 公司名称
Organizational Unit Name: Home 部门名称
Common Name: Chen Yang 你的姓名
Email Address: sunstorm@263.net Email地址
生成 ca.crt 文件,将文件属性改为400,并放在安全的地方
你可以用下列命令查看它的内容,
/usr/local/ssl/bin/openssl x509 -noout -text -in ca.crt
3、接着创建服务器证书签署请求,
为 Apache 创建一个 RSA 私用密钥:
/usr/local/ssl/bin/openssl genrsa -des3 -out server.key 1024
4、用 server.key 生成证书签署请求 server.csr 文件
/usr/local/ssl/bin/openssl req -new -key server.key -out server.csr
这里也要输入一些信息,和前面的内容类似
A challenge password []: ? (这两个地方不用输入,直接敲回车)
An optional company name []:?(同上)
5、签署证书
需要用到脚本 sign.sh
sign.sh是MOD_SSL源代码中的一个脚本,它在MOD_SSL的
源代码目录树下的pkg.contrib目录中,文件名为 sign.sh。
将它拷贝到 /usr/local/ssl/bin 中
/usr/local/ssl/bin/sign.sh server.csr
就可以得到server.crt
至此,证书生成完毕。
现在需要做的工作是把server.crt 和server.key 拷贝到httpd.conf 里mod_ssl指定的位置,分别是/usr/local/apache/ssl.crt/server.crt 和/usr/local/etc/apache/ssl.key/server.key
注意检查一下httpd.conf中关于ssl的设置
SSLCertificateFILE usr/local/apache/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/etc/apache/ssl.key/server.key
可以 apachectl startssl 试一下了
由于安全的原因,Web服务器的私钥是口令加密了的,每次重新起动HTTPD或Linux时,都会要求输入Web服务器的私钥的口令。
如果要解除HTTPD起动时的口令输入,可以这样
# cd /usr/local/apache/conf/ssl.key
# cp server.key server.keyold
# openssl rsa -in server.keyold -out server.key
# chmod 400 server.key
此时,Web服务器的私钥已经没有口令加密,一定要确保server.key文件除root外,任何用户均无权读取它。
参考资料:
http://www.cnfug.org/journal/archives/000029.html
http://www.cnfug.org/journal/6/04.html
http://www.fanqiang.com/a6/b8/20010722/1305001004.html
另外一种使用自己认证的SSL证书进行认证的方法
首先,我们要有进行简单SSL认证的三个要件:
私钥、公钥、经认证的证书
上述三个要件的创建,需要用到此命令 /usr/local/ssl/bin/openssl
第一步:创建私钥文件 privkey.pem 和证书签署请求文件 server.csr
# openssl req -new -out server.csr ↙
按提示输入初始的私钥密码(>4字节)两次输入确认无误
再按提示输入证书签署请求的主要信息:国家、省、市、公司、部门、通用名等......
注意:通用名项必填
Common Name ( eg, your name or your server's hostname) []:
可在:号后填写我们的服务器主机名 mypage.com.cn
通用名项后面几项可以直接↙不填
通过上步后,在当前目录下产生了 privkey.pem 和 server.csr 两个文件
第二步:创建公钥文件 every.key
# openssl rsa -in privkey.pem -out every.key ↙
按提示输入第一步中我们自己设定的私钥密码,正确则显示 ‘writing RSA key'
通过上步后,在当前目录下又产生了 every.key 文件
第三步:对认证签署请求进行认证,得到认证证书 zheng.crt
# openssl x509 -in server.csr -out zheng.crt -req -signkey every.key - days 365 ↙
经过此步,我们最终得到了最后一个文件,经认证的证书 zheng.crt
最后,我们要将公钥文件 every.key 和 证书文件 zheng.crt 的完全路径分别写在Apache 配置文件中的 Server Private key: 下 sslcertificatekeyfile 项和 Server Certificate:下 sslcertificatekeyfile 项中。
重新启动Apache 后,从443端口登录服务器主页时,
在弹出的授权认证对话框中点击 ‘检查证书'。便可看到发行者标识为 mypage.com.cn 的证书说明。接受此证书,就完成通过我们自己认证的SSL证书查看主页内容了。 |
|