1、详细说明https的原理

WEB服务存在http和https两种通信方式,http默认采用80作为通讯端口,对于传输采用不加密的方式,https默认采用443,对于传输的数据进行加密传输。目前主流的网站基本上开始默认采用HTTPS作为通信方式。它其实就是HTTP+加密+身份认证+完整性保护。HTTPS并不是一种新的协议,在通信接口使用了SSL和TLS协议而已。HTTP通常直接和TCP通信,而HTTPS中HTTP先和SSL通信,再由SSL和TCP进行通信。模型如下

centos 系统开机system initializing centos开机过程_非对称

需要注意的是,SSL协议并不是一个应用层协议,它是介于应用层和传输层协议之间的一个安全协议。

对称密钥加密
SSL采用对称密钥进行加密,所谓的对称密钥,就是加密和解密都用同一个密钥,因此也叫做共享密钥加密。但是这种方法也有一个弊端,一旦密钥被第三方获得了,就可以对数据进行解密并窃取,因此这并不是一个完全安全的方法。事实上,如果加密解密方法十分简单,是很容易被第三方截取的。所以这种方法的缺陷就在于,如果一方不发送密钥,对方就无法利用密钥解密。另外,如果发送了密钥,但是密钥被第三方截取了,数据就容易被窃取。因此,需要一种方式,能够保证该密钥能够确保送到对方手中并且还不能够让第三方截取。

非对称密钥加密
SSL还采用了一种技术就是非对称密钥加密,所谓的非对称密钥,就是这是一对密钥,一个是私钥,一个是公钥。私钥不能让其他任何人知道,而公钥可以随意发布,任何人都可以获得到,因此这种加密方式也叫公开密钥加密。
它的原理是这样的:
客户端向服务器发起请求,服务器创建一对非对称密钥,将公有私钥返回给可客户端,自己保留着这个私钥而不发送。
客户端收到了来自服务器的公钥,于是将自己的数据通过公钥加密,并返回给服务器
服务器接收到了客户端的数据,因为使用自己发送的公钥加密的,因此用自己的私钥对其进行解密,拿到数据
即使第三方拿到了加密后的数据,因为没有私钥,因此也无法获取到真实的数据。假如想要破解这个解密方式,是十分困难的。
HTTPS使用两种加密方式的混合加密
对称密钥加密方式的优缺点:
优点:处理速度快
缺点:但是容易被第三方盗取
非对称密钥加密方式的优缺点:
优点:更加安全,不容易被盗取
缺点:处理效率相比对称密钥加密要慢,如果在通信时用这种方式加密,效率很低
于是HTTPS采用了两者的优点,使用了混合加密的方式,使用非对称密钥加密的方式安全地交换再稍后对称密钥加密中要使用的密钥。确保交换的密钥是安全的之后,放弃非对称密钥加密,使用对称密钥加密来进行通信,保证传输效率

2、详细叙述centos7开机流程

CentOS7和CentOS6启动流程差不多,只不过到init程序时候,改为了systemd,因此详细解释一下systemd后的启动流程

1.uefi或BIOS初始化,开始post开机自检
2.加载mbr到内存
3.GRUB阶段
4.加载内核和inintamfs模块
5.内核开始初始化,使用systemd来代替centos6以前的init程序
(1)执行initrd.target
包括挂载/etc/fstab文件中的系统,此时挂载后,就可以切换到根目录了

(2)从initramfs根文件系统切换到磁盘根目录
(3)systemd执行默认target配置
centos7表面是有“运行级别”这个概念,实际上是为了兼容以前的系统,每个所谓的“运行级别”都有对应的软连接指向,默认的启动级别时/etc/systemd/system/default.target,根据它的指向可以找到系统要进入哪个模式
模式:

0 ==> runlevel0.target, poweroff.target
 1 ==> runlevel1.target, rescue.target
 2 ==> runlevel2.target, multi-user.target
 3 ==> runlevel3.target, multi-user.target
 4 ==> runlevel4.target, multi-user.target
 5 ==> runlevel5.target, graphical.target
 6 ==> runlevel6.target, reboot.target


(4)systemd执行sysinit.target
有没有很眼熟?是的,在CentOS6上是被叫做rc.sysint程序,初始化系统及basic.target准备操作系统

(5)systemd启动multi-user.target下的本机与服务器服务
(6)systemd执行multi-user.target下的/etc/rc.d/rc.local
6.Systemd执行multi-user.target下的getty.target及登录服务
getty.target我们也眼熟,它是启动终端的systemd对象。如果到此步骤,系统没有被指定启动图形桌面,到此就可以结束了,如果要启动图形界面,需要在此基础上启动桌面程序

3、用shell脚本实现自动配置rsync服务

1.脚本内容

#!/bin/bash
. /etc/rc.d/init.d/functions
Dir=/var/run/rsyncd.pid
if [ $# -ne 1 ];then
        echo "Error:$0 start|restart|stop"
        exit 1
fi
case $1 in
start)
        num=`netstat -lntup|grep 873|wc -l`
        if [ "$num" -ne 0 ];then
                 echo "rsync running ...."
        else
                /usr/bin/rsync --daemon 
                action "rsync start ..." /bin/true
        fi
;;
restart)
        num=`netstat -lntup|grep 873|wc -l`
        if [ "$num" -ne 0 ];then
                kill `cat $Dir` >/dev/null 2>&1
                sleep 1
                /usr/bin/rsync --daemon 
                action "rsync restart ..." /bin/true
        else
                /usr/bin/rsync --daemon
                action "rsync restart ..." /bin/true
        fi
;;
stop)
        num=`netstat -lntup|grep 873|wc -l`
        if [ "$num" -eq 0 ];then
                action "rsync stop ..." /bin/true
        else
                kill `cat $Dir` >/dev/null 2>&1
                sleep 1
                action "rsync stop ..." /bin/true
        fi
;;
*)
       echo "Error:$0 start|restart|stop"
;;
esac

2.设成开机自启动脚本

[root@centos6 ~]# cp /scritp/rsyncd /etc/init.d/
[root@centos6 ~]# cd /etc/init.d/
[root@centos6 init.d]# chmod +x rsyncd 
[root@centos6 init.d]# chkconfig --add rsyncd 
[root@centos6 init.d]# chkconfig --list rsyncd
rsyncd          0:off   1:off   2:off   3:on    4:off   5:off   6:off
[root@centos6 init.d]# chkconfig rsyncd on
[root@centos6 init.d]# chkconfig --list rsyncd
rsyncd          0:off   1:off   2:on    3:on    4:on    5:on    6:off

4、使用natcat实现从一台机器直接登录到另外一台机器

netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。使用netcat命令所能完成的事情令人惊讶。netcat所做的就是在两台电脑之间建立链接并返回两个数据流。

5、用shell脚本实现自动登录机器

#!/usr/bin/expect
spawn ssh root@192.168.22.194
expect "*password:"
send "123456\r"
expect "*#"
interact