SSL:Secure Socket Layer
特点:
保密性:数据保密性,隐私性
完整性:数据完整性,系统完整性
可用性:加密能够解密。
OSI:x.800定义了安全攻击机制
现代互联网安全服务的基础安全框架叫做PKI机制:Public Key Infrastructure
PKI:
签证机构:CA
注册机构:RA
证书吊销列表:CRL
证书存取库:
DSS:Digital Siganature Standard
加密协议种类
对称加密:加密解密用同一个密钥:3des,aes
公钥加密:密钥成对出现:公钥-私钥,加密速度慢,常用于数字签名和密钥交换。
RSA,DSA(DSS)
单向加密:主要用于提取数据指纹或特征码。
MD5,sha1
密钥交换:DH:Deffie-Hellman算法
SSL是一种库,是TCP/IP协议层中的半层,基于TCP实现的,必须要有虚拟电路支持。
请求服务器中的数字证书:其中是使用者的公钥
CA:证书签证机构
数字证书格式:
版本号version:
序列号serial number:CA用于唯一标识此证书
签名算法标识:
发行者名称:CA自己名称
有效期:起止日期
证书主体名称:证书拥有者的名称:
证书主体公钥信息:证书拥有者自己的公钥
发行商的唯一标识:
证书主体的唯一标识:
扩展信息:
签名:CA对此证书的数字签名
证书的用途:
用户证书:用户之间通信用的
主机证书 (httpd):服务器的进程间通信用的
Open SSL 的组成部分:
libcrypto:加密解密库文件
libssl:ssl协议实现
openssl:多用途命令行工具,每种功能都使用专用的子命令来实现
openssl:子命令分类:
标准命令
消息摘要命令
加密,解密相关命令
加密 openssl enc -e加密 -a以文本模式输出 -salt:加些随机数进来 -in加密哪个文件 -out放在哪 -des3密码
解密 openssl enc �Cd
加密前
加密中
加密后
单向加密 openssl dgst �CCIPHER file
生成用户密码:openssl passwd �C1 �Csalt 8bit 随机数
不知为啥生出了一堆
生成随机数:openssl rand �Chex|-base64 NUM
公钥加密
数字签名:RSA/DSA
密钥交换DH:
操作过程:私钥能提取出公钥
openssl genrsa �Cout 文件 位数
(umask 077;openssl genrsa �Cout 文件 位数)在括号中运行的表示在子shell中运行
私钥中提取公钥
openssl rsa �Cin 私钥文件 �Cpubout
公钥加密为了完成密钥交换
私钥机密为了完成身份验证
随机数生成器:
random,urandom
熵池:保存硬件中断产生的随机数
/dev/random:从熵池中取随机数,熵池里的随机数耗尽,取随机数的进程会被阻塞
/dev/urandom:从熵池中取随机数,熵池里的随机数耗尽,会用伪随机数生成器替代,不安全。
构建私有CA
1、生成私钥;
2、生成自签署证书;
查看CA_Default
dir:定义CA工作目录
certs:$dir引用dir的值:为客户端发放的证书存取库
crl_dir:吊销文件
database:数据库
new_certs_dir:刚生成的证书
certificate:CA自己的证书
serial:会不断加一
crlnumber:吊销编号
private_key:存放私钥的
步骤:
自己生成
1、在CA工作目录里生成自己的私钥, 私钥的位置是private_key
2、生成自签证书:
openssl req �Cnew �Cx509 �Ckey /etc/pki/CA/private/cakey.pem �Cout /etc/pki/CA/cacert.pem �Cdays
-new 生成新证书的签署请求
-key私钥文件路径,提取公钥用的
-days N:证书有效时长,单位是天
-out输出文件保存位置:
-x509:直接输出自签署的证书文件,通常只有构建CA才这么用
3、提供辅助文件
touch /etc/pki/CA/index.txt
echo 01> serial
1
2、3
给节点发证书:
1、节点申请
2、CA签发证书:openssl ca �Cin file �Cout file �Cdays N
3、把签署好的证书发还给请求者
建立文件夹
生成证书
发送请求
之后就过不去了,不知为什么
OpenSSH:
CS架构协议:
Server需要sshd: /stc/ssh/sshd_config
Client需要ssh,xshell,putty /stc/ssh/ssh_config
scp:安全跨主机复制工具,基于ssh实现
sftp
sshsecure shell,用来取代telnet(23/tcp)
telnet是有xinetd这个超级守护进程来管理的:
打开telnet,他是明文的,容易被盗
chkconfig telnet on
![]()
service xinetd restart
ss �Ctnl 查找23tcp端口
iptables -F清空防火墙规则
ssh protocol
v1不安全 v2安全
两种方式认证:
基于口令认证:
基于密钥认证:基于DH
在客户端生成一对密钥,私钥自己留着,公钥通过私密方式保存到远程服务器某用户的家目录专用于ssh通信的文件中
命令行用法:
ssh [选项] �Cl user host,不指定用户名就以自己当前用户名代入
ssh [选项] user@host
也可以通过ssh一次执行一条命令然后返回
私钥登录:
1、创建私钥
ssh [选项] [user]@[local] -p指明端口号
2、复制到服务器上
scp:远程复制文件:
push:scp �Cr(目录递归) �Cp(权限)自己的文件 user@host:/path -P指明端口号
pull:scp user@host:/path 位置
服务器端配置sshd:/etc/ssh/sshd_config
1、port默认是22,尽量不使用默认,大家都爱用22022
2、protocol 2,1不安全
3、限制可登录用户:禁用root登入,
PermitRootLogin,默认是yes
AllowUsers user1 user2,白名单
AllowGroups grp1
DenyUsers user1黑名单
4、仅监听需要监听的ip地址:
ListenAddress
5、强密码策略:
建议随机数
6、禁止使用空密码登入:
7、限制登入频度:默认是6次