web 服务进阶 httpd配置成https

web服务进阶 自建CA/https详解

一、SSL与https

1、引言

我们网上购物、网上订票,以及使用支付宝支付过程中都会在网上直接输入账号和密码。这些信息都是非常重要的,如何才能在输入的过程中,不被别人看见和窃取,就需要对你输入的信息进行加密处理。

早期的两主机通信之间是没有加解密程序,后来就在传输层与应用层之间加了一个SSL库,完成加密解密功能。

web 服务进阶  httpd配置成https

2、身份认证是怎么实现的?

A主机给B主机发了一个很重要的文件,B主机是怎么知道这个文件是A发的呢,万一是不法分子小C的阴谋,那我该不该相信这个信息呢?所以采用下面一种策略

首先发送方用自己的私钥加密数据特征码,接收方用对方的公钥去解密,如果接的开,就说明是对方发送的,密钥是成对出现的,私钥只有发送方自己有。其中发送方用自己的私钥加密数据的结果就叫数据签名。就相当于盖个章,这个东西是我的了。

3、加密过程:A发送给B信息

(1)A生成一组数据,为了保证数据安全保密的送给B,A先用单向加密算法计算出这段数据的特征码

(2)A会用自己的私钥加密这段特征码并将结果覆加在数据后面。

(3)A生成了一个临时的对称密钥,并使用这个对称密钥加密这整段数据。

(4)S会获取到B的公钥,并使用对方的公钥加密刚才那个对称密钥并覆加到整个后面,然后发送到B进行解密。

4、解密过程:B来解密

(1)B拿到报文以后,先用自己的私钥去解密这段加密的对称私钥

(2)用对称密钥解密整段加密的内容

(3)用A的公钥去解密特征码,能解密,A的身份得到验证

(4)在用同样的加密对称算法,去计算这段数据的特征码并与解密出来的进行比较,如果相同,数据完整性得到验证。

5、这中间缺一个环节,就是CA,帮助通信双方确认对方身份是否真伪。双方通信时要商量好:

(1)把CA颁发的公钥证书给我

(2)商议好用哪种方式加密

(3)B拿到A的公钥后要验证

6、ssl与http的关系

http本身不具备加密解密功能,所以通过ssl进行加密。使用ssl的http通信叫做https通信。

web 服务进阶  httpd配置成https


二、实例演示

1、自建CA(A主机:ip为192.168.1.118)

(1)生成私钥文件 mkdir -p /etc/pki/CA/private #创建私钥保存的目录

(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)

ll /etc/pki/CA/private/ # 私钥只能自己保存,对保密性要求高

web 服务进阶  httpd配置成https

(2)生成自签证书

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out cacert.pem -days 7300

web 服务进阶  httpd配置成https

(3)为CA提供所需的目录和文件

touch /etc/pki/CA/index.txt # 创建数据库文件

echo 01 > /etc/pki/CA/serial # 创建序列号文件并给明第一个证书的序列号码

ll /etc/pki/CA

web 服务进阶  httpd配置成https

至此,私有CA创建完毕。

2、证书申请:(在B主机上:ip:192.168.1.109)

(1)在证书申请的主机上生成私钥

cd /etc/httpd/

mkdir ssl #创建保存私钥的目录

cd ssl

(umask 077;openssl genrsa -out httpd.key 2048) #生成私钥

ll

web 服务进阶  httpd配置成https

(2)生成证书签署请求

openssl req -new -key httpd.key -out httpd.csr -days 365 # 在本地生成

web 服务进阶  httpd配置成https

(3)把请求发送给CA

scp httpd.csr root@192.168.1.118:/etc/pki/CA # 192.168.1.118为CA主机

web 服务进阶  httpd配置成https

(4)CA签发证书(在CA192.168.1.118主机上操作),cd到 /tmp下

openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365

web 服务进阶  httpd配置成https

cat /etc/pki/CA/index.txt #查看第一个签发的证书

web 服务进阶  httpd配置成https

(5)把签署好的证书发还给请求者

cd /etc/pki/CA

scp certs/httpd.crt root@192.168.1.109:/etc/httpd/ssl/

web 服务进阶  httpd配置成https

在请求主机上查看,证书已经颁发好了

web 服务进阶  httpd配置成https

3、配置httpd支持使用ssl,及使用的证书;

(1) yum install -y mod_ssl

(2)修改配置文件: vim /etc/httpd/conf.d/ssl.conf

<VirtualHost 192.168.1.109:443>
        ServerName www.a.com
        DocumentRoot /www/a.com/htdocs
        SSLengine ON
        SSLprotocol ALL -sslv2 -sslv3
        SSLcertificatefile /etc/httpd/ssl/httpd.crt
        SSLcertificatekeyfile /etc/httpd/ssl/httpd.key
</VirtualHost>

(3)配置虚拟主机vim /etc/httpd/conf.d/virt.conf

<VirtualHost 192.168.1.109:80>
              ServerName www.a.com
              DocumentRoot /www/a.com/htdocs
              <Directory "/www/a.com/htdocs">
                      Options None
                      AllowOverride None
                      Require all granted
</Directory>

检查

web 服务进阶  httpd配置成https

测试如下:

web 服务进阶  httpd配置成https

ok了,还要把CA证书下载到windows导入浏览器。就可以了。

原创文章,作者:N24_yezi,如若转载,请注明出处:http://www.178linux.com/63170

(0)
N24_yeziN24_yezi
上一篇 2016-12-10
下一篇 2016-12-11

相关推荐

  • bash脚本之函数及循环特殊用法

    一,概述 while的循环特殊用法(遍历文件的每一行)     while read line;do         循环体        &nbsp…

    Linux干货 2016-08-29
  • OpenSSL

    加密和解密技术 本章内容: 安全机制 对称加密 不对称加密 散列算法 PKI和CA 相关知识: 1)传输层协议:        TCP(面向连接),UDP(面向无连接),SCTP(流控协议) 2)port(端口):传输层协议都会提供端口,        端口(port)是标记进程…

    Linux干货 2016-09-29
  • 救援模式安装grub

    如果之前mbr没有备份,而后grub损坏进不了系统,只能用系统光盘或U盘开机进入救援模式安装grub,操作如下 1.光盘启动,进入救援模式 2.切换根目录 # chroot /mnt/sysimage 3.安装 grub # grub-install /dev/sda 4.重新启动        &…

    Linux干货 2017-01-13
  • N25第二周博客作业

    第二周博客作业: 1、linux上的文件管理命令都有哪些,其常用的使用方法及其相关示例演示。                    有  cp  mv&nbsp…

    Linux干货 2016-12-06
  • 系统管理之系统启动及内核编译

    CentOS 5和6的启动流程服务管理Grub管理自制Linux启动排错编译安装内核 系统启动流程:  POST –> 读取BootSequence (BIOS),决定引导次序 –>读取引导设备的Bootloader(MBR grubstage1–>stage1.5/boot…

    Linux干货 2016-09-13
  • 几个有意思的小脚本

    ①.用脚本画一个圣诞树 效果 ②.用脚本画一个类似国际象棋的棋盘 半成品效果 再像这样在下面多写几个循环,就可以了,我这个方法太笨,全写完要截图的太多,就放一部分意思下 ③.编写一个脚本,打印出九九乘法表 效果 ④.编写一个脚本,可接收一个 1-7 的数字作为参数,用 if 和 case 两种方法实现根据输入的数字输出对应星期的英文 用if的方法 用case…

    2017-05-11

评论列表(1条)

  • 马哥教育
    马哥教育 2016-12-14 14:21

    博客完成的非常好,有图有真现,有实验结果。加油!