标签:https实现
多种应用层协议,例如http,ftp,smtp等都是明文协议,而这些服务在互联网通信中是不可或缺的,而有时安全显得特别重要,例如网购的时候,所以出现了ssl/tls的技术,那么现在就来实现以下基于ssl搭建https服务
查看当前httpd服务器是否安装了mod_ssl模块
httpd -M
一般在使用rpm包安装的时候,不会安装该模块,在编译安装httpd的时候,在./configure --enable-ssl编译该模块
如果单独使用rpm安装mod_ssl,可以看到安装这个模块生成的文件
首先 ,会在/etc/httpd/conf.d目录下生成一个ssl.conf,这就是用于配置ssl的配置文件,还会生成一个动态加载模块,用于实现该功能。
使用另一台虚拟机创建成为一个私有CA(过程不再赘述),本地切换至/etc/httpd目录下创建一个ssl目录,用于存放自己的私钥,以及由CA签署后等到的证书
可以看到,私钥已经创建完毕,并生成了签署请求apache.csr,我们假设已经被CA 签署,并其人证书就保存在该目录下,名为apache.crt
https的会话建立过程于http不同,因为https会话在tcp的三次握手之后要建立ssl会话,由于ssl会话是基于ip地址的,所以单个ip地址之上只能有一个https服务,如果使用了基于域名的虚拟主机,那么就只有其中一台,该台主机名应在生成证书签署请求的时候指定
编辑/etc/httpd/conf.d/ssl.conf文件
该文件中需要特别注意的:
<VirtualHost _default_:443>,这一项应该修改为我们提供https服务的主机名,例如
<VirtualHost www.abc.com:443>
启用这两项,DocumentRoot,应该和使用http访问相同网站时一致
ServerName,定义主机名
注意,https的错误日志定义与http一致,访问日志是使用Transferlog指令,然后定义访问日志格式时仍使用Customlog定义
要使用ssl功能,SSLEngine 必须为on
将证书以及私钥文件的路径修改为正在使用的,一般放在服务的配置文件目录下就可以,例如此处就是/etc/httpd/ssl目录下的两个文件
同时注意主配置文件中使用http访问该主机时的目录访问配置<Directory>,如果只是提供https服务,可在该文件中直接定义
启动httpd服务,查看443端口是否已经监听,可将CA自签署证书导入浏览器进行测试。
本文出自 “zxcvbnm玄烨” 博客,请务必保留此出处http://10764546.blog.51cto.com/10754546/1704634
标签:https实现
原文地址:http://10764546.blog.51cto.com/10754546/1704634