HTTPS,是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS和HTTP的区别
一、https协议需要到服务器具有合法的证书。
二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,因此比HTTP协议要安全。
由此可知,要让apache提供https服务,则必须要服务器上具有证书:
但由于申请一个证书,很少有免费的,所以现在我们要自己给自己颁发一个证书:
规划:要求apache提供https访问页面,网页内容存放在/www/phpmyadmin中,但要求使用别名/pma可以访问的到,服务器IP地址为:172.16.4.1
注:网路数据传输加密详解和CA的配置详解详见:
http://grass51.blog.51cto.com/4356355/798505
http://grass51.blog.51cto.com/4356355/797995
第一步:将本服务器配置为CA服务器,并为本机web服务签发一个证书:
1)、配置CA服务器:
# /etc.pki/tls/openssl.cnf
定位至dir = ../../CA 将其相对路径修改为绝对路径/etc/pki/CA,保存退出
#cd ../CA/
# (umask 077;openssl genrsa 2048 > private/cakey.pem)
为自己生成一个私钥,保存在cakey.pem中
#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3560
为CA服务器提供必要的三个目录和两个文件:
#mkdir certs crl newcerts
#touch index.txt serial
#echo 01 > serial
2)、为web服务申请一个证书,存放在/etc/httpd/ssl中:
#mkdir /etc/httpd/ssl
#cd /etc/httpd/ssl
#(umask 077;openssl genrsa 1024 > httpd.key)
生成私钥,保存至httpd.key文件中
#openssl req -new -key httpd.key -out httpd.csr
申请一个为签发的证书httpd.csr
3)、签发证书:
切换到存放为签发的证书存放的目录
#cd /etc/httpd/ssl
#openssl ca -in httpd.csr -out httpd.crt
第二步:
1、为apache提供新的网页存放位置:
新建一个分区,并将其挂载至/www下,这里不在给出具体步骤。
2、修改apache的配置文件,修改网页存放目录:
#mkdir /www/htdocs
#vim /etc/httpd/httpd.conf
定位到DocumentRoot “/usr/local/apache/htdocs”处,将其后面的路径修改为“/www/htdocs”
定位到<Directory "/usr/local/apache/htdocs ">处,将其路径修改为“/www/htdocs“
定位到<Directory />处,将Require deny修改为Require all granted实现每个用户都可访问网页。
3、开启httpd-2.4.1的https功能:
编辑httpd的主配置文件
#vim /etc/httpd/httpd.conf
启用以下选项:
Include /etc/httpd/extra/httpd-ssl.conf
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
全部开启后保存退出。
注:在apache-2.4.1以前的版本中开启https功能时,在其主配置文件中只需要开启:Include /etc/httpd/extra/httpd-ssl.conf
4、编辑httpd-ssl.conf文件:
#vim /etc/httpd/extra/httpd-ssl.conf
定位至<VirtualHost _defaults_:443>处,添加内容如下:
- Alias /pma "/www/phpmyadmin"
- <Directory /www/phpmyadmin>
- Options none
- Require all granted
- </Directory>
定位至SSLCertificateFile 将其证书存放的路径修为"/etc/httpd/ssl/httpd.crt"
定位至SSLCertificateKeyFile 将其私钥存放路径修改为"/etc/httpd/ssl/httpd.key"
5、重新启动httpd服务
#service httpd restart
访问https://172.16.4.1/pma 进行测试