1、简述常见加密算法及常见加密算法原理,最好使用图例解说
加密算法类型
- 对称加密:加密和解密同一密钥;
- 非对称加密:加密和解密使用一对儿密钥;通信的人是我们期望通信的人;
- 单向加密:只能加密不能解密:提取数据的特征码: 人–>指纹;指纹–>人? 完整性检验;
加密算法特性
一、对称加密
特性
- 加密、解密使用同一密钥;
- 将原始数据分割成固定大小的块,以块为单位进行加密;
缺陷
- 密钥过多;服务器需要为每个人生成一个密钥;
- 密钥分发困难;服务器如何安全的给每个人发送密钥;
加密:openssl enc -e 加密算法 -a -salt -in fstab -out fstab.ciphertext [-k PASS] 解密:openssl enc -d 加密算法 -a -salt -in fstab -out fstab.ciphertext [-k PASS] 加密算法列表获取:openssl ? --> Cipher commands 下的所有;引用时需要在其前加 -
二、非对称加密
特性
- 密钥分为公钥和与之配对的私钥;
- 私钥:通过工具创建,自己留存,必须保证其私密性;secure key
- 公钥:从私钥中提取产生;可公开给所有人;pubkey
- 用公钥加密的数据,只能使用与之配对的私钥解密;反之亦然;
用途
- 数字签名:服务端私钥加密指纹的结果,用于让对方确认自己的身份;完整性检验、身份认证
- 密钥交换:客户端用对方公钥加密一个对称密钥,并发送给对方;
- 数据加密:密钥长度过长一般不用;
工作逻辑
Server 单向加密 –> 数字签名 –> 密钥加密数据 –> 对方公钥加密密钥
Client 自己私钥解密密钥 –> 密钥 –> 对方公钥 –> 单向加密
生成私钥:(umask 077; openssl genrsa -out private.key NUM_BITS) 从私钥中提取公钥:openssl rsa -in private.key -pubout (): bash中特殊含义:在括号中运行的命令在当前shell的子shell进程中运行。若在子shell中定义的特性仅在子shell的生命周期中有效; NUM_BITS:密钥长度:2^n;
三、单向加密
特性
- 定长输出:提取数据特征码长度固定,与数据大小无关;
- 雪崩效应:初始条件纤微改变,结果发生巨大变化,避免比对;
- 避免密码存储文件中相同密码出现结果相同;在密码中加入salt;在下次登陆时,用给定的密码和salt进行加密后的结果与密码存储文件中的字符比较;
- 完整性验证;
加密格式:工具 文件 openssl dgst -md5 file md5sum file sha1sum file ...
2、搭建apache或者nginx并使用自签证书实现https访问,自签名证书的域名自拟
apache https
nginx https
附上脚本
#!/bin/bash # openssl version || exit ntpdate 0.centos.pool.ntp.org # ---------------------------- private CA --------------------------------- dir='/etc/pki/CA' mkdir -p ${dir}/{certs,crl,newcerts,private} [ -f ${dir}/private/cakey.pem ] || (umask 077; openssl genrsa -out ${dir}/private/cakey.pem 2048) [ -f ${dir}/cacert.pem ] || openssl req -new -x509 -key ${dir}/private/cakey.pem -out ${dir}/cacert.pem -days 7300 sleep 2 [ -f $dir/index.txt ] || touch $dir/index.txt [ -f $dir/serial ] || echo "01" > $dir/serial read -p 'nginx or httpd or haproxy? ' prog [ -n "$prog" ] || exit [ "$prog" == "nginx" -o "$prog" == "httpd" -o "$prog" == "haproxy" ] || exit echo -e "\033[1;31mInstall $prog ssl\033[0m" # ----------------------------- $prog ssl ---------------------------------- ssl_dir="/etc/$prog/ssl" # mkdir -pv $ssl_dir [ -f $ssl_dir/$prog.key ] || (umask 077; openssl genrsa -out $ssl_dir/$prog.key 2048) [ -f ${ssl_dir}/$prog.csr ] || openssl req -new -key ${ssl_dir}/$prog.key -out ${ssl_dir}/$prog.csr -days 365 [ -f ${ssl_dir}/$prog.crt ] || openssl ca -in ${ssl_dir}/$prog.csr -out ${ssl_dir}/$prog.crt -days 365
http和nginx分别填入内容
CN HA MageEdu Ops ca.magedu.com caadmin@magedu.com
CN HA MageEdu Ops www.magedu.com webadmin@magedu.com
CN HA ZZ Ops nginx.magedu.com webadmin@magedu.com
3、简述DNS服务器原理,并搭建主-辅服务器
专业术语
- 协议:是一种规范,http, ftp, smtp(邮件传输), pop3/imap4(邮件收取)
- 规范;由特定具体的软件来实现
- 域:无形的,逻辑的概念;正向解域区域 + 反向解析区域
- 区域:物理,一个一个的解析库对应的主机; 正向解析区域 或 反向解析区域;
- 递归请求:发起一次查询,就会有结果;
- 迭代查询:发起N次查询,才有结果;缓存DNS;
- 转发:非我所负责的域,就转发;注意:接收请求的主机,应该为转发的主机递归;
- 区域转发:解析非我所负责的域的主机,且解析此域内的主机才转发;
- 全局转发:解析非我所负责的域的主机,统统转发;
DNS工作逻辑
- dns程序库扮演客户端;
- 查询本机/etc/hosts文件;
- 根据/etc/resolv.conf中nameserver指令指向的IP(运营商缓存DNS),从上向下;向第一个DNS服务器发起 递归查询请求;
- 运管商DNS 迭代查询 查找根域,返回顶级域某个DNS的IP;
- 运营商DNS 迭代查询 查找顶级域,返回三级域某个DNS的IP;
- 运营商DNS 迭代查询 查找三级域,返回其域内某个主机的IP;
- 运营商DNS 返回递归请求
- dns程序库返回给某进程其域名解析结果
- 真正的通信
域名注册
在Top Level Domain的DNS服务器主机的解析库中添加子域条目;子域指向的主机(IP)即为解析 子域 的dns服务器;子域DNS服务器:需要一个有公网IP的主机;
搭建主从服务器
4、搭建并实现智能DNS
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/91336
评论列表(2条)
总结的很赞~DNS解析过程可以用图来说明会清楚点;另外DNS智能解析遇到的问题、解决思路和实验结果最好能描述的更细一点哈~加油~
@马哥教育:好的,老师!我加一个图。