配置httpd工作于https模型下具实现步骤:使用的httpd服务器IP为192.168.1.132。
(1) 安装mod_ssl模块
# yum install -y mod_ssl
安装该模块后生成的主要文件有:
# rpm -ql mod_ssl
其中/etc/httpd/conf.d/ssl.conf为配置文件。
(2) 为服务端生成私钥,并为其提供证书;
因为是模拟测试使用https的,需要自建CA服务器为httpd服务器下发服务器端证书,所以需要先建立CA服务器,并建立私钥:
# cd /etc/pki/CA
#( umask 077;openssl genrsa –out private/cakey.pem2048 )
CA服务器自身生成的私钥文件为cakey.pem:
然后生成自签证书:
# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3000
可以在/etc/pki/CA目录下看到生成的自签证书文件:
为httpd服务器端生成签署证书文件,步骤:
# mkdir /etc/httpd/ssl && cd /etc/httpd/ssl
# (umask 077; openssl genrsa -out httpd.key 1024);生成私钥;
# openssl req -new -key httpd.key -out httpd.csr;生成证书签署请求文件
CA服务器为httpd服务器签署证书:
# openssl ca -in httpd.csr -out httpd.crt -day 1000
签署后的证书为:/etc/httpd/ssl/httpd.crt
(3) 配置使用https的虚拟主机,假定我们的虚拟主机名称为www2.stuX.com;
修改配置文件/etc/httpd/conf.d/ssl.conf
# vim /etc/httpd/conf.d/ssl.conf
指定SSLCertificateFile和SSLCertificateKeyFile文件所在的具体路径:
在<VirtualHost IP:443>段中添加需要使用https模型的主机名称和对应的文档根目录:
(4) 重新装载配置 # service httpd restart
(5) 将CA服务器的公钥/etc/pki/CA目录下的cacert.pem文件导出到其他系统中,比如window操作系统中,将文件的后缀改为crt,然后导入到浏览器中测试:
可以看到httpd服务器已经工作于https模型下,而且证书出于认证状态。
另外我们可以使用Linux系统自带的openssl s_client工具来测试,需要将公钥文件复制到测试机上:
# scp 192.168.1.132:/etc/pki/CA/cacert.pem ./
# openssl s_client -connect 192.168.1.132:443 -CAfile /root/cacert.pem
可以看到,返回的结果说明,我们的服务器工作在https模型下工作正常。
注:如果在httpd的主配置文件中设置同一虚拟主机工作在http模型下也是可以的,两种模式共存,使用http和https都可以访问站点的资源,如果只在监听了443端口基于ssl模式工作的虚拟主机定义中定义了该虚拟主机,那么只能使用https方式访问。
在一个物理主机中如果同时运行多个虚拟主机,由于ssl会话是基于IP地址建立的,所以物理主机有几个IP地址,相应的就只能有几个虚拟主机使用ssl功能。
配置http使用mod_ssl模块工作于https模型,布布扣,bubuko.com
原文:http://9164364.blog.51cto.com/9154364/1538327