HTTP + SSL/TLS = HTTPS
- SSL(Secure Sockets Layer,安全套接字协定)
- TLS(Transport Layer Security,传输层平安协定)
- HTTP(HyperText Transfer Protocol ,超文本传输协定),让计算机之间能够进行明文数据交换,默认端口80.
- HTTPS(HyperText Transfer Protocol Secure,超文本传输平安协定),用SSL/TLS对数据加密,再通过HTTP传输,保证数据的安全性,默认端口443.
SSL 与 TLS 区别
SSL与TLS都是用于互联网传输的加密协议。
SSL是有Netscape开发加密协议;
- SSL 1.0版本没有公开公布;
- SSL 2.0版本于1995年公布,简写成SSLv2, 于2011年被IETF废除;
- SSL 3.0版本于1996年公布,简写成SSLv3, 于2015年被IETF废除;
- TLS是基于SSL 3.0的一个新版本,原则上他的名字是SSL 4.0;只是IETF在把SSL标准化时把SSL名称改成了TLS。
CA及数字证书
证书颁发机构(CA, Certificate Authority)即颁发数字证书的机构,HTTP服务降级为HTTPS时,就须要数字证书来保障其通信链路的平安,Let's Encrypt 是收费提供此证书的公益机构。
申领证书流程:
- 服务器学生成一对密钥(私钥+公钥);
- 公钥+服务器信息(域名、ip等),发送给CA机构;
- CA机构会依据收到的信息,核实身份并加密生成证书,此证书也只有CA机构的私钥能力解密,这样也就保障了域名与服务器ip的一一对应关系,保障通信链路的安全性。
应用证书
- 客户拜访域名:「https://www.example.com」
从CA机构获取域名对应证书,客户浏览器依据证书中公钥给须要传输的数据进行加密。 - 服务器取得数据后,用本人的私钥来解密数据,如果公钥与私钥数据不匹配,就算第三方取得数据,也无奈解密。
- 客户拜访域名:「https://www.example.com」
数字证书组成部分有:
主体信息(域名、公司名、地址、国家等);
- 有效期;
- Public Key;
- CA的签名;
Telenet + SSH = ssh
SSH(Security Shell) 是专为近程登录和其余网络服务(Telnet、ftp等)提供安全性的协定。OpenSSH基于SSH协定实现了很多利用:ssh、scp、sftp等,ssh默认端口22。
OpenSSH是什么?
OpenSSH是实现了SSH协定的软件包,OpenSSH官方网站,蕴含以下工具:
- Remote operations are done using ssh, scp, and sftp.
- Key management with ssh-add, ssh-keysign, ssh-keyscan, and ssh-keygen.
- The service side consists of sshd, sftp-server, and ssh-agent.
1、ssh
ssh是OpenSSH实现近程登录的客户端软件,让近程服务器执行命令操作。
# 近程关机命令$ ssh -t user@ip 'sudo shutdown -h now'# 近程敞开多台服务器:$ ssh -t user@ip1 'sudo shutdown -h now';ssh -t user@ip2 'sudo shutdown -h now';# 近程重启命令$ ssh -t user@ip1 'sudo reboot'# 重启SSH$ /etc/init.d/ssh restart$ sudo service ssh restart# SSH配置目录/etc/ssh# 公钥的目录~/.ssh# 能够输入登录时log信息ssh -v [root@node1](mailto:user@ip)# 查看SSH的过程状况$ ps aux | grep ssh
2、ssh免密登录
$ ssh user@ip登录近程服务器,每一次都要输出明码,用密钥可免密登录。
# 零碎环境 : MAC# 创立SSH秘钥(ssh-keygen是生成和治理密钥工具)$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa# 把密钥退出到近程机器上(ssh-copy-id是装置密钥到近程服务器的工具)$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@ip# 间接登录,无需再输出明码$ ssh user@ip
3、scp
scp应用ssh与近程服务器互相传输文件,此通信过程也是加密的。
# 本地文件「test.txt」拷贝到服务器的「~/」目录下$ scp ~/test.txt user@ip:~/# 本地文件夹「test」拷贝到服务器「~/」目录下$ scp -r ~/test user@ip:~/# 服务器文件夹「test」拷贝到本地「~/」目录下$ scp -r user@ip:~/test ~/
4、ssh-copy-id
# MAC下装置ssh-copy-id$ brew install ssh-copy-id# 应用见「ssh免密登录」
问题与解决方案
1、WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
$ ssh pi@192.168.1.9# 呈现上面谬误:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!Someone could be eavesdropping on you right now (man-in-the-middle attack)!It is also possible that a host key has just been changed.The fingerprint for the ECDSA key sent by the remote host isSHA256:VrUX6WSrWP7GYk+9rjNfUitciAFE1DJPPR8lilyXq4Q.Please contact your system administrator.Add correct host key in /Users/liuhai/.ssh/known_hosts to get rid of this message.Offending ECDSA key in /Users/liuhai/.ssh/known_hosts:5ECDSA host key for 192.168.1.9 has changed and you have requested strict checking.Host key verification failed.# Mac下解决方案:第一步:$ sudo nano ~/.ssh/known_hosts第二步:删除ip对应哪一行数据(fn+delete)第三步:ctrl+x,保留退出!
参考文档
- SSL TLS HTTP HTTPS SSH 别离是什么意思?