实验目标:基于同一IP的不同端口访问不同的网站(可以通过域名去访问) ip+port1 -> 对应一个域名 ip+port2 -> 对应一个域名 使用域名1我应该访问到 ip+port1对应的内容 使用域名2我应该访问到 ip+port2对应的内容
作业: 你知道的hash算法有哪些 对称加密算法有哪些 非对称加密的算法有哪些
添加一个IP地址,每个人的私有网段个有不同:
nmcli c modify ens160 +ipv4.addresses 192.168.73.148/24
nmcli connection up ens160 # 查看
安装http服务器
yum install -y httpd
查看httpd文件结构:
├── conf # 存放的主配置文件
│ ├── httpd.conf
│ └── magic
├── conf.d # 存放额外的配置文件: 必须以.conf为后缀才生效
│ ├── autoindex.conf # 额外的参数文件
│ ├── README # 额外的参数文件
│ ├── userdir.conf # 额外的参数文件
│ └── welcome.conf # 默认首页得配置文件
├── conf.modules.d # 存放有关模块的配置文件, 必须以.conf后缀才生效
│ ├── 00-base.conf
│ ├── 00-dav.conf
│ ├── 00-lua.conf
│ ├── 00-mpm.conf
│ ├── 00-proxy.conf
│ ├── 00-systemd.conf
│ └── 01-cgi.conf
├── logs -> ../../var/log/httpd # logs: 日志存放的位置
├── modules -> ../../usr/lib64/httpd/modules # modules: 指定httpd相关模块存放的路径
└── run -> /run/httpd # run: 运行的一些信息
└── state -> # state: 状态的一些信息
创建两个不同页面目录,用于存放html等网页信息;并创建首页信息
mkdir /var/www/host1
echo this is port1 > /var/www/host/index.html
mkdir /var/www/host3
echo this is other port of host1 > /var/www/host/index.html
查看端口使用情况,确保不会有端口占用:
ss -tnl
修改虚拟主机配置文件:
vim /etc/httpd/conf.d/host.conf
# 内容
<Directory "/var/www">
AllowOverride None # 是否允许额外配置文件
require all granted # 设置客户端的访问权限
</Directory>
Listen 192.168.73.148:500
<VirtualHost 192.168.73.148:500>
DocumentRoot "/var/www/host1" # 主机上被访问网站的主目录
</VirtualHost>
Listen 192.168.73.148:1000
<VirtualHost 192.168.73.148:1000>
DocumentRoot "/var/www/host3"
</VirtualHost>
7.安装nginx
yum install -y nginx
8.使用nginx实现根据域名进行转口转发
vim /etc/nginx/conf.d/host.conf
# 内容
upstream host1 { # 自定义名称host1的模块
server 192.168.73.148:500; # 访问的真实IP地址+端口号
}
server {
listen 192.168.73.148:80; # 绑定的域名
server_name www.qv147.com; # 绑定的域名
client_max_body_size 1024m;
location / {
proxy_pass http://host1; # # host1和upstream host1模块相对应
}
}
upstream host3 {
server 192.168.73.148:1000;
}
server {
listen 192.168.73.148:80;
server_name www.qv258.com;
client_max_body_size 1024m;
location / {
proxy_pass http://host3;
}
}
重启httpd服务和nginx服务
systemctl restart httpd
systemctl restart nginx
修改windows下的C:\Windows\System32\drivers\etc\hosts的文件
192.168.73.148 www.qv147.com
192.168.73.148 www.qv258.com
注意:hosts文件不认192.168.73.148:8090的写法,只认IP绑定域名
9.浏览器访问:
实验结束
对称加密算法
也叫私钥加密算法,其特征是收信方和发信方使用相同的密钥,即加密密钥和解密密钥是相同或等价的。
非对称加密算法
也叫公钥加密算法。其特征是收信方和发信方使用的密钥互不相同,而且几乎不可能从加密密钥推导解密密钥。
用公钥加密的过程叫加密
用私钥解密的过程叫解密
用私钥加密的消息称为签名,只有拥有私钥的用户可以生成签名
用公钥解密签名这一步称为验证签名(验签),所有用户都可以验证签名(因为公钥是公开的)
一旦签名验证成功,根据公私钥数学上的对应关系,就可以知道该消息是唯一拥有私钥的用户发送的,而不是随便一个用户发送的。
由于私钥是唯一的,因此数字签名可以保证发送者事后不能抵赖对报文的签名。由此,消息的接收者可以通过数字签名,使第三方确信签名人的身份及发出消息的事实。当双方就消息发出与否及其内容出现争论时,数字签名就可成为一个有力的证据。
证书
证书是第三方机构颁发的,包含服务器的公钥信息,用第三方机构的私钥加密,而第三方的公钥是公开的。
服务器把证书发给客户端,客户端用第三方机构的公钥解密证书就可以获得服务器的公钥,客户端不用自己存储服务器的公钥。
如果不使用证书,客户端就必须存储服务器的公钥A,客户端必须保证存储的服务器公钥A不被篡改,否则就不能解密服务器信息。
如果客户端存储的服务器公钥A被篡改成B,篡改者拥有B所对应的私钥BB,篡改者向客户端发送数据,客户端就能解密,认为篡改者发的消息是服务器发的。
哈希算法
散列算法,又称哈希函数,是一种单向加密算法。在信息安全技术中,经常需要验证消息的完整性,散列(Hash)函数提供了这一服务,它对不同长度的输入消息,产生固定长度的输出。这个固定长度的输出称为原输入消息的"散列"或"消息摘要"(Message digest)。散列算法不算加密算法,因为其结果是不可逆的,既然是不可逆的,那么当然不是用来加密的。
对某个数据包进行散列算法计算得到一个数字,称这个数值为摘要
具体算法种类
对称性加密算法有:AES、DES、3DES
用途:对称加密算法用来对敏感数据等信息进行加密
DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。
3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;AES是一个使用128为分组块的分组加密算法,分组块和128、192或256位的密钥一起作为输入,对4×4的字节数组上进行操作。众所周之AES是种十分高效的算法,尤其在8位架构中,这源于它面向字节的设计。AES 适用于8位的小型单片机或者普通的32位微处理器,并且适合用专门的硬件实现,硬件实现能够使其吞吐量(每秒可以到达的加密/解密bit数)达到十亿量级。同样,其也适用于RFID系统。
非对称性算法有:RSA、DSA、ECC
RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的。RSA在国外早已进入实用阶段,已研制出多种高速的RSA的专用芯片。
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准),严格来说不算加密算法。
ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。ECC和RSA相比,具有多方面的绝对优势,主要有:抗攻击性强。相同的密钥长度,其抗攻击性要强很多倍。计算量小,处理速度快。ECC总的速度比RSA、DSA要快得多。存储空间占用小。ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多,意味着它所占的存贮空间要小得多。这对于加密算法在IC卡上的应用具有特别重要的意义。带宽要求低。当对长消息进行加解密时,三类密码系统有相同的带宽要求,但应用于短消息时ECC带宽要求却低得多。带宽要求低使ECC在无线网络领域具有广泛的应用前景。
散列算法(签名算法)有:MD5、SHA1、HMAC
用途:主要用于验证,防止信息被修。具体用途如:文件校验、数字签名、鉴权协议
MD5:MD5是一种不可逆的加密算法,目前是最牢靠的加密算法之一,尚没有能够逆运算的程序被开发出来,它对应任何字符串都可以加密成一段唯一的固定长度的代码。
SHA1:是由NISTNSA设计为同DSA一起使用的,它对长度小于264的输入,产生长度为160bit的散列值,因此抗穷举(brute-force)性更好。SHA-1设计时基于和MD4相同原理,并且模仿了该算法。SHA-1是由美国标准技术局(NIST)颁布的国家标准,是一种应用最为广泛的Hash函数算法,也是目前最先进的加密技术,被政府部门和私营业主用来处理敏感的信息。而SHA-1基于MD5,MD5又基于MD4。
HMAC:是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。也就是说HMAC是需要一个密钥的。所以,HMAC_SHA1也是需要一个密钥的,而SHA1不需要。
CRC:(Cyclic Redundancy Check,循环冗余校验)算法出现时间较长,应用也十分广泛,尤其是通讯领域,现在应用最多的就是 CRC32 算法,它产生一个4字节(32位)的校验值,一般是以8位十六进制数,如FA 12 CD 45等。CRC算法的优点在于简便、速度快,严格的来说,CRC更应该被称为数据校验算法,但其功能与数据摘要算法类似,因此也作为测试的可选算法。