SSH、SSL、HTTPS 摘要
SSH配置:
1、在10.0.0.6机器创建SSH Key,生成公钥和私钥,执行:ssh-****** -t rsa -C "[email protected]" -f "root-06"
将10.0.0.6公钥拷贝到远程机器10.0.0.4,scp ~/.ssh/root-06.pub [email protected]:~/.ssh/root-06.pub
2、在远程机器10.0.0.4上将10.0.0.6机器的公钥加入authorized_keys
执行:cat root-06.pub >> authorized_keys,第一次创建authorized_keys,一定要执行chmod 600 authorized_keys
3、注意执行ssh-******,默认生成的是id_rsa,如果加上参数-f指定**的文件名,则需要配置config文件,否则老是提示用密码登录,是未找到公钥文件,困扰了我一天半时间,id_rsa不需要加入配置到config中,好像默认就认这个。
config配置样例:
Host 10.0.0.4
User root
Port 22
Hostname 10.0.0.4
IdentityFile ~/.ssh/root-06
4、在目标机器上打开RSA认证,即:
1.RSAAuthentication yes
2.PubkeyAuthentication yes
3.AuthorizedKeysFile .ssh/authorized_keys
以上配置完了,如果不能ssh,执行service sshd restart重试下
5、禁用用户的shell登陆
出于安全考虑,不允许用户登录shell,这可以通过编辑/etc/passwd文件完成。例如,禁用git用户,找到类似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
最后一个冒号后改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。
1、SSH:建立连接过程:客户端像服务端发送公钥,服务器收到后,寻找公钥,和客户端发过来的比较,如果一致,服务器用公钥加密“质询”(challenge),发给客户端,客户端用私钥解密质询后,再发给服务端校验。这种不需要在网络上传输口令,防止中间人***(因为他没有你的私匙)。耗时需要10秒左右
从编译依赖上看:openssh依赖于openssl,没有openssl的话openssh就编译不过去,也运行不了。
2、SSL协议:握手阶段用非对称加密(公钥)商定传输过程使用的对称加密算法和**
握手过程明细:客户端向服务器发送第一个随机数、服务器向客户端发送第二个随机数和证书,客户端验证服务器的证书,并用证书的公钥加密第二个随机数,客户端生成第三个随机数,将一、二、三随机数作为对称加密的秘钥,服务端收到公钥加密后的第二个随机数和第三个随机数,用私钥解密第二个随机数,并比较是否成功,同样将一、二、三随机数作为对称加密的秘钥,并执行一个加密串,由客户端解密,握手过程完成。
3、数字签名:私钥加密,公钥验签
发送方:
1、用哈希函数将报文明文生成报文摘要
2、将摘要用私钥加密,生成数字签名
3、将明文和数字签名一起发送
接收方:
1、用哈希函数将报文明文生成报文摘要
2、用公钥将数字签名解密,获取摘要
3、比较1和2步骤的摘要
注意,数字签名只能验证数据的完整性和防假冒,数据本身是否加密不属于数字签名的控制范围
4、数字证书:由权威CA,来统一发放包含:主机机构名称、公钥、CA的数字签名(CA用自己的私钥加密主机的公钥),防止公钥被冒充。
将证书放到服务端,当客户端访问服务端时,服务端就会把这个证书安装到客户端上。客户端用CA提供的CA自己的公钥来解密这个证书。
(当然这个CA是浏览器预装时嵌入的可信的CA,如果不是预装时嵌入的CA,此时就没有CA的公钥,就解不了,就会弹出告警。)解得开就说明这个证书是某个CA认证过了的,是可信的,解开后就会得到数据,而这个数据就是服务端的公钥,此时用这个公钥与服务端进行数据传输。
5、HTTPS
转载于:https://blog.51cto.com/netpeak/1895517