@mrz1
2018-01-07T12:38:21.000000Z
字数 7426
阅读 1317
笔记
PKI(Public Key Infrastructure) | 简写 |
---|---|
签证机构 | CA (Certificate Authority) |
注册机构 | RA |
证书吊销列表 | CRL |
证书存取库 | -- |
X.509:定义了证书的结构以及认证协议标准
版本号 序列号 签名算法 颁发者
有效期限 主体名称 主体公钥 CRL分发点
扩展信息 发行者签名
获取证书两种方法:
SSL | Secure Socket Layer |
---|---|
TLS | Transport Layer Security |
1995 | SSL 2.0 Netscape |
1996 | SSL 3.0 |
1999 | TLS 1.0 |
2006 | TLS 1.1 IETF(Internet工程任务组) RFC 4346 |
2008 | TLS 1.2 当前使用 |
2015 | TLS 1.3 |
功能 | 机密性,认证,完整性,重放保护 |
两阶段协议,分为握手阶段和应用阶段
cert:Sca(Pserver)==证书:私钥(证书)
Pca[Sca(Pserver)]==公钥[私钥(证书)]
OpenSSL:开源项目
三个组件:
openssl: 多用途的命令行工具,包openssl
libcrypto: 加密算法库,包openssl-libs
libssl:加密模块应用库,实现了ssl及tls,包nss
openssl命令:
两种运行模式:交互模式和批处理模式
openssl version:程序版本号
标准命令、消息摘要命令、加密命令
标准命令:enc, ca, req, ...
openssl命令
对称加密:
工具:opensslenc, gpg
算法:3des, aes, blowfish, twofish
enc命令:
帮助:man enc
加密:openssl enc -e -des3 -a -salt -in file -out file.s
注释:-e -des3(加密算法) -a -salt(加颜料) -in(那个文件) file -out(输出文件的名字) file.s
解密:openssl enc -d -des3 -a -salt –in file.s -out file
单向加密:
工具:md5sum, sha1sum, sha224sum,sha256sum...openssl dgst
dgst命令:
帮助:man dgst
openssl dgst -md5 [-hex默认] /PATH/SOMEFILE
openssl dgst -md5 testfile
md5sum /PATH/TO/SOMEFILE
MAC: Message Authentication Code,单向加密的一种延伸应用,用于实现网络通信中保证所传输数据的完整性机制
CBC-MAC
HMAC:使用md5或sha1算法
生成用户密码:
passwd命令:
帮助:man sslpasswd
openssl passwd -1 -salt SALT(最多8位)
openssl passwd -1 –salt centos(把centos加密)
生成随机数:
帮助:man sslrand
openssl rand -base64|-hex NUM
NUM: 表示字节数;-hex时,每个字符为十六进制,相当于4位二进制,出现的字符数为NUM*2
公钥加密:
算法:RSA, ELGamal
工具:gpg, opensslrsautl(man rsautl)
数字签名:
算法:RSA, DSA, ELGamal
密钥交换:
算法:dh
DSA: Digital Signature Algorithm
DSS:Digital Signature Standard
RSA:
生成密钥对儿:man genrsa
生成私钥
openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
openssl genrsa -out centos6.key 2048 //文件生成后权限不安全
(umask 066; openssl genrsa –out test.key –des3 2048) //安全
openssl rsa -in test.key –out test2.key 将加密key解密
从私钥中提取出公钥
openssl rsa -in PRIVATEKEYFILE –pubout–out PUBLICKEYFILE
Openssl rsa –in test.key –pubout –out test.key.pub
例子:
生成私钥
(umask 066; openssl genrsa –out centos6.key –des3 2048)
注意:-des3设置口令
从私钥中提取出公钥
openssl rsa -in centos6.key -pubout -out centos6.key.pub
注意:提取公钥会输入口令
将加密key解密
openssl rsa -in centos6.key –out centos6.key1
随机数生成器:伪随机数字
键盘和鼠标,块设备中断
/dev/random:仅从熵池返回随机数;随机数用尽,阻塞
/dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞
-new: 生成新证书签署请求
-x509: 专用于CA生成自签证书
-key: 生成请求时用到的私钥文件
-days n:证书的有效期限
-out /PATH/TO/SOMECERTFILE: 证书的保存路径
具体的软件实现:
SSH协议版本
两种方式的用户登录认证:
OpenSSH介绍相关包:
工具:
客户端组件:
格式:
nm-connection-editor
centos6 ssh连接时+X 在执行nm-connection-editor
可以显示图形用xstart远程连接linux图形用户界面)允许实现对远程系统经验证地加密安全访问
/etc/ssh/ssh_host*key.pub(CentOS7默认是ssh_host_ecdsa_key.pub)文件中的公钥到客户机的~./ssh/know_hosts中。下次连接时,会自动匹配相应私钥,不能匹配,将拒绝连接
# port 22 //修改这一行 端口自己指定
systemctl reload sshd //修改文件后生效
基于用户名口令登录验证
基于密钥的登录方式
基于密钥的认证:
这里私钥必须要加密不加密,一旦丢失你方便他也方便
在SecureCRT工具—>创建公钥—>生成Identity.pub文件转化为openssh兼容格式(适合SecureCRT,Xshell不需要转化格式),并复制到需登录主机上相应文件authorized_keys中,注意权限必须为600,在需登录的ssh主机上执行:ssh-keygen-i-f Identity.pub >> .ssh/authorized_keys
[root@centos6 ~]#ssh-keygen -p //在客户端生成密钥对
Enter file in which the key is (/root/.ssh/id_rsa):
Key has comment '/root/.ssh/id_rsa'
Enter new passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved with the new passphrase.
You have new mail in /var/spool/mail/root
[root@centos6 ~]#ssh-copy-id -i .ssh/id_rsa root@172.18.101.118 //把公钥文件传输至远程服务器对应用户的家目录
root@172.18.101.118's password:
Now try logging into the machine, with "ssh 'root@172.18.101.118'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[root@centos6 ~]#ssh 172.18.101.118 //连接远程服务器
Enter passphrase for key '/root/.ssh/id_rsa': //这里输入的密码是自己私钥的密码
Last login: Sun Jan 7 19:48:09 2018 from 172.18.101.93
[root@centos6 ~]#ssh-agent bash
[root@centos6 ~]#ssh-add
Enter passphrase for /root/.ssh/id_rsa: //输入自己私钥的密码
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
[root@centos6 ~]#ssh 172.18.101.118
Last login: Sun Jan 7 19:49:50 2018 from 172.18.101.93
登陆成功
[root@centos7 ~]#
这里需要注意的的每次登录需要输入下密码 退出登录失效
#!/bin/bash
rpm -q expect &> /dev/null || yum -y -q install expect
ssh-kengen -P "" -f ~/.ssh/id_rsa &> /dev/null
while read ip passwd;do
user=root
expect <<EOF
set timeout 10
spawn ssh-copy-id $ip@$passwd
expect{
"yes/no" { send "yes\n";exp_continue }
"password" { send "$password\n" }
}
expect eof
EOF
done < host.txt
[root@centos6 ~]#vim /etc/ssh/sshd_config //找到下面两项改为no就ok
GSSAPIAuthentication no
UsePAM no