为编译安装的httpd。服务提供基于ssl的安全访问会话,即https,编译安装的httpd版本号为httpd-2.4.1
注意:确保selinux已经处于disabled和permissive状态
1.首先修改openssl的配置文件openssl.cnf,要为自己的服务器提供一个CA证书
#cd /etc/pki/tls/
#vim openssl.cnf 要修改的内容如下:
[ CA_default ]
dir = ../../CA # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt # database index file.
编辑它,将“dir = ../../CA ” 目录改为“ dir =/etc/pki/CA ” 目的是使用CA的绝对路径。
保存退出
2.生成CA密钥信息
#cd /etc/pki/CA
#(umask077; openssl genrsa 1024 > private/cakey.pem) --生成CA证书密钥
#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3656 --发出申请证书请求,会出现如下所示的提示信息
County Name (2 letter code) [GB]:CN
State or Province Name (full name) [Berkshire]:Henan
Locality Name (eg,city) [Newbury]:Zhengzhou
Organization Name (eg,company) [My Company Ltd]:magedu
Organization Unit Name (eg,section) []:tech
Common Name (eg,your name or your server's hostname) []:此处要写自己CA服务器的名字,比如ca.magedu.com
Email Address []:[email protected]
3.提供CA所需要的文件
#mkdir certs crl newcerts
certs 证书目录
crl 证书吊销列表目录
newcerts 新证书目录
生成两个空文件
#touch index.txt serial
index.txt 证书的索引文件
serial 证书的序列号文件
#echo 01 > serial 给其一个初始序列号01
此时CA已经完整了。
4.为httpd服务提供密钥和证书
#cd /etc/httpd
#mkdir ssl
#cd ssl
#(umask077;openssl genrsa 1024 > httpd.key) --为httpd生成一个密钥文件
#openssl req -new -x509 -key httpd.key -out httpd.csr --使用密钥向证书颁发机构请求证书(此处生成的文件为httpd.csr)
#openssl ca -in httpd.csr -out httpd.crt --让服务器自己生成的CA为自己的证书申请请求签发
输入两次y即可,表示同意证书申请请求
#ls 会出现以下三个文件,说明证书已经签发成功
httpd.crt httpd.csr httpd.key
5.修改httpd的配置文件:
#vim /etc/httpd/httpd.conf 启用如下所示的支持ssl的模块
LoadModule ssl_module modules/mod_ssl.so
6.修改httpd的基于ssl会话的配置文件:编译安装的http的,ssl的配置文件在/etc/httpd/extra/目录中,就是httpd-ssl.conf
#vim /etc/httpd/extra/httpd-ssl.conf 修改<VirtualHost _default_:443>中的内容为自己的web服务器ip地址
<VirtualHost 172.16.24.1:443>
# General setup for the virtual host
DocumentRoot "/var/www/html/www2" --修改提供的虚拟主机的网页路径,如果没提供虚拟主机默认路径/var/local/httpd/htdocs
ServerName www2.magedu.com:443 --修改为那个一虚拟主机提供https服务,因为ssl只能为一台主机提供https服务
ServerAdmin [email protected]
#ErrorLog "/usr/local/apache/logs/error_log" --定义错误日志路径
#TransferLog "/usr/local/apache/logs/access_log" --定义访问日志路径
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLCertificateFile "/etc/httpd/ssl/httpd.crt" --定义证书文件存放路径
SSLCertificateKeyFile "/etc/httpd/ssl/httpd.key" --定义证书密钥文件存放路径
#servive httpd restart
如果提示错误信息如下:
Syntax error on line 76 of /etc/httpd/extra/httpd-ssl.conf:
SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?).
就将/etc/httpd/extra/httpd-ssl.conf文件中的SSLSessionCache模块注释掉即可,如下所示:
#SSLSessionCache "shmcb:/usr/local/apache/logs/ssl_scache(512000)"
#service httpd restart
7.导入CA证书到测试https的浏览器中
#cd /etc/pki/CA
#ls
会有一个cacert.pem文件,这是服务器自己给自己颁发的CA证书,修改其后缀名为.crt,即cacert.crt,然后导入到浏览器的可信任证书列表中,以实现httpd的安全传输
在浏览器中进行测试:
https://www2.magedu.com:80 如果配置正确。则此网页是安全传输的。