最近须要搭建一个基于apache上的https安全服务支持,因没有接触过,因而在网上搜了些资料,因而总结便于后人更加容易搭建。linux
最近在研究linux下的apache-ssl配置,写点我的当心得,新人发博,敬请见谅。apache
如下是基于网上的文章:http://honghuihun.iteye.com/blog/1137204浏览器
我只在此针对遇到的问题作些补充。安全
====================================================
软件环境
1)Apache Httpd 2.2.15 (http://httpd.apache.org ) 服务器
httpd2.x以上的版自带mod_ssl模块。
dom
2)OpenSSL 0.9.8r (http://www.openssl.org/source )
3)SSL-Tools (http://www.openssl.org/contrib/ssl.ca-0.1.tar.gz )
1. OpenSSL
#tar zxvf openssl-0.9.8r.tar.gz
#cd openssl-0.9.8r
#./config
#make
#make install
此举将安装最新的OpenSSL到/usr/local/ssl目录中,无需理会系统中已有版本的OpenSSL,也不要去卸载它,不然会致使不少的应用程序没法正常执行,例如X窗口没法进入等错误。工具
2. Apache Httpd
#tar zxvf httpd-2.2.15.tar.gz
#cd httpd-2.2.15
#./configure --prefix=/usr/local/apache/httpd --enable-ssl=static --with-ssl=/usr/local/ssl
#make
#make install
此步骤在/apache/httpd目录中安装httpd服务(经过参数--prefix指定),同时使用--with-ssl指定刚才所安装OpenSSL的路径,用于将mod_ssl静态的编译到httpd服务中。测试
可能遇到的问题:
ui
./configure --prefix=/ytxt/apache2/ --enable-ssl --enable-rewrite --enable-so --with-ssl=/usr/local/openssl/
spa
报错:
configure: error: ... Error, SSL/TLS libraries were missing or unusable
解决:
执行以下一句设置环境变量:
export LDFLAGS=-ldl
3.制做证书 (这是可选部分)
咱们必须手工来生成SSL用到的证书,对证书不熟悉的人,有一个工具可使用:http://www.openssl.org/contrib/ssl.ca-0.1.tar.gz 。下面是如何经过这个工具来生成证书的过程:
#cp ssl.ca-0.1.tar.gz /usr/local/apache/httpd/conf
#cd /usr/local/apache/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]:GanSu//随你喜欢
Locality Name (eg, city) [Sitiawan]:LanZhou//随你喜欢
Organization Name (eg, company) [My Directory Sdn Bhd]:lzu//随你喜欢
Organizational Unit Name (eg, section) [Certification Services Division]:lzu//随你喜欢
Common Name (eg, MD Root CA) []:dslab//随你喜欢
Email Address []:sunyanmeng@gmail.com//随你喜欢
这样就生成了ca.key和ca.crt两个文件,下面还要为咱们的服务器生成一个证书:
# ./new-server-cert.sh server (这个证书的名字是server)
......
......
Country Name (2 letter code) [MY]:CN
State or Province Name (full name) [Perak]:GanSu
Locality Name (eg, city) [Sitiawan]: LanZhou
Organization Name (eg, company) [My Directory Sdn Bhd]:lzu
Organizational Unit Name (eg, section) [Secure Web Server]:lzu
Common Name (eg, www.domain.com) []:localhost
Email Address []:sunyanmeng@gmail.com
这样就生成了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:'GanSu'
localityName:PRINTABLE:'LanZhou'
organizationName:PRINTABLE:'lzu'
organizationalUnitName:PRINTABLE:'lzu'
commonName:PRINTABLE:'localhost'
emailAddress :IA5STRING:'sunyanmeng@gmail.com '
Certificate is to be certified until Jan 19 21:59:46 2011 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.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
ssl.conf的配置文件为httpd-ssl.conf 此文件是在apache_dir/conf/extra下。
1)httpd-ssl.conf主要修改的信息为:
SSLCertificateFILE /usr/local/apache/httpd/conf/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache/httpd/conf/ssl.key/server.key
2)httpd.conf 须要放开ssl支持:
Include conf/extra/httpd-ssl.conf前面的注解去掉。
文件目录以下:
root@mengfh-virtual-machine:/usr/local/apache/httpd/conf# ls
extra httpd.conf magic mime.types original ssl.ca-0.1 ssl.ca-0.1.tar.gz ssl.crt ssl.key
root@mengfh-virtual-machine:/usr/local/apache/httpd/conf# ls -tRl extra/
extra/:
总计 56
-rw-r--r-- 1 root root 11659 2014-03-18 14:52 httpd-ssl.conf
-rw-r--r-- 1 root root 1503 2014-03-18 11:43 httpd-vhosts.conf
-rw-r--r-- 1 root root 817 2014-03-18 11:43 httpd-userdir.conf
-rw-r--r-- 1 root root 2201 2014-03-18 11:43 httpd-multilang-errordoc.conf
-rw-r--r-- 1 root root 3789 2014-03-18 11:43 httpd-mpm.conf
-rw-r--r-- 1 root root 928 2014-03-18 11:43 httpd-manual.conf
-rw-r--r-- 1 root root 5078 2014-03-18 11:43 httpd-languages.conf
-rw-r--r-- 1 root root 1103 2014-03-18 11:43 httpd-info.conf
-rw-r--r-- 1 root root 2344 2014-03-18 11:43 httpd-default.conf
-rw-r--r-- 1 root root 1743 2014-03-18 11:43 httpd-dav.conf
-rw-r--r-- 1 root root 2855 2014-03-18 11:43 httpd-autoindex.conf
root@mengfh-virtual-machine:/usr/local/apache/httpd/conf#
-----------------------------------------------------------------------------------------------而后就能够启动啦!# cd /usr/local/apache注意,apache2.2以后不支持startssl,因此只用start便可# ./bin/apachectl start4. 测试HTTP服务使用浏览器打开地址:https://127.0.0.1 完毕!!