TCP/IP:安全
     机密性:明文传输(ftp,http,smtp,telnet)
             数据的完整性: 
             身份验证:
机密性:
       planitext-->转换规则-->ciphertext
       ciphertext-->转换规则-->plaintext
       对称加密:算法
       转换算法:密钥
数据完整性:
    单向加密算法:提取数据特征码
           输入一样,输出必然相同
           雪崩效应,输入的微小改变,将会引起结果的巨大改变
           定长输出:无论原始数据是多大,结果大小都是相同的
           不可逆的,无法用特征码还原原来的数据
协商生成密码:密钥交换(Internet Key Exchange ,IKE)支持的协议是Diffie-Hellman协议

公钥加密算法又叫非对称加密算法,特性:
     密钥是成对的,有公钥和私钥,公钥是任何人都能看到的,用P表示;私钥是自己知道,     用s表示;并且公钥是从私钥中生成的。它们是相互解密的。
    
     发送方用自己的私钥加密数据,可以实现身份验证
     发送方用对方的公钥加密数据,可以保证数据的机密性
     公钥加密算法很少用来加密数据:速度太慢  

CA:Certificate Authority 证书颁权威机构

数字证书格式流行的有x509
x509包含:
          公钥及其有效期限
   证书的合法拥有者
   证书该如何被使用
   CA的信息
   使用CA的签名的校验码

对称加密算法有:
    DES:Data Encrption Standard,56bit
    3DES:三倍DES
    AES:高级加密标准 Advanced Encrption Standard
      AES192,AES256,AES512
    BLOWFISH

加密工具:openssl,gpgssl

单向加密:
     MD4、MD5 128、SHA192,SHA256,SHA384,SHA1,
     CRC-32:循环冗余校验码是一种校验码的机构

非对称加密或公钥加密:(加密/签名)
     身份认证(数字签名)、数据加密、密钥交换
     RSA:即可加密有能签名
     DSA:只能签名但是不能加密
     ElGamal:商业算法

OpenSSL:即SSL的开源实现,openssl是个软件有三部分组成: 
        libcrypto:通用加密库
 libssl:TLS/SSL的实现
     基于会话的、实现身份认证、数据机密性和会话完整性的TLS/SSL库
 openssl:多用途命令行工具,实现私有证书颁发机构
查看openssl用rpm -q openssl

用openssl来特取特征码:openssl dgst -md5 inittad
生成跟用户一样的密码串openssl passwd -1 -salt tpsgh0st
rand伪生成数(随机数)的工具,openssl rand -base64 45

openssl实现私有CA:
1、生一对密钥:
      openssl genrsa 保存用重定向或用-out
      即生成有是600的权限:(umask 077;openssl genrsa -out server1024.key 1024)
      私钥中提取公钥:openssl rsa -in /PATH/TO/KEYFTLENAME -pubout
2、生成自签署证书
   REQ:生成自签证书的工具
   openssl req -new -x509 -key server1024.key -out server.crt -day 365生成证书
   openssl x509 -text -in server.crt 以文本的格式输出
   genrsa:私钥生成是600权限
CA 的配置文件/etc/pki/tls/openssl.cnf
申请证书;openssl req -new -key httpd.key -out httpd.csr

签证:openssl ca -in httpd.csr -out httpd.crt -days 365
查看用在ssl中cd /etc/pki/CA-->cat index.txt-->cat serial

OpenSSL:
     tenlent,TCP/23,远程登录的协议,但是他有两个缺点:
         认证是明文,数据传输明文;

SSH:Secure SHell,TCP/22,也是远程登录的协议。

SSH是客户端服务器端架构的软件
客户端软件:
     Linux:ssh
     Windows:putty,SecureCRT,SSHSecurShellClient,Xmanager
服务器端:
     sshd
openssh(ssh,sshd)

sshd:主机密钥    基于口令  基于密钥,一般情况是口令的
服务器端不允许管理员直接登录的,我们想基于ssh远程登录到服务器上,我们只能使用一个普通用户登录,然后在su到管理员。

netstat :查启动的服务
         -r:显示路由表的
  -n:表示用数字来表示IP和端口号
  -t:tcp connections表示跟TCP协议的会话
  -l:处于监听状态的服务
  -u:udp connections表示跟UDP协议的会话
  -p:表示被那个程序监听,process

客户端ssh:(/etc/ssh/ssh_config)配置文件显示配置信息
服务端sshd:(/etc/ssh/sshd_config)配置文件显示配置信息

sshd_config中的一些配置:
    Port:监听号,默认是22号
    protocol:协议版本
    AddressFamily:默认是只就行,any
    ListenAddress:监听的地址,只想给这个地址提供服务
    Hostkey:版本号的密钥
    KeyRegenerationInterval:密钥重新生成新密钥的间隔的时间
    serverKeuBits:服务器密钥的长度
    LoginGraceTime:登录的宽限期
    PermitRootLogin:是否允许管理员的直接登录
    StrictModes:是否使用严格限定模式
    MaxAuthTries允许输错密码的最大次数
    PubkeyAuthentication:基于密钥的认证
    PasswordAuthentication:是不是允许口令的认证
    Banner:欢迎标语,显示详细的信息
    PrintLastLog:是不是显示那个主机在啥时候登录的
    Subsystem:子系统

ssh的远程登录:
     -l USERNAME REMOTE_HOST ['command']
  ssh USERNAME@REMOTE_HOST
  -p指定端口
 -X:登录远程服务器并且执行窗口命令,本地是图形的,远程不一定是。
 -Y:跟-X一样

基于密钥的认证:
 一台主机为客户端(基于某个用户实现):
 1、生成一对密钥
     ssh-keygen
      -t{rsa|dsa}
   -f/path/tokeyfile
   -N‘password’
 2、将公钥传输至服务器端某用户的家目录下的.ssh/authorized_keys文件中
 使用文件传输工作传输(ssh-copy-id,scp)
 ssh-copy-id -i /path/to/pubkey USERNAME@REMOTE_HOST
 例如:ssh-copy-id -i .ssh/id_rsa.pub root@172.16.100.2
 单向的
 3、测试登录

scp:基于ssh的远程复制命令,可以实现现在主机之间传输数据
scp[options] SRC DEST
  -r:复制目录
例如:scp root@172.16.100.2:/etc/fstab ./
远程主机:REMOTE_MACHINE 
      USERNAME@HOSTNAME:/path/to/somefile
复制到远程主机上例子:scp fstab root@172.16.100.2:/root


openssl实现私有CA服务器一般规范步骤:
CA服务器:
1、vim /etc/pki/tls/openssl.cnf
dir=/etc/pki/CA

2、cd /etc/pki/CA
# make certs newcerts crl
# touch index.txt
# echo 01 > serial

3、自签证书
# (umask 077; openssl genrsa -out private/cakey.pem 2048)
# openssl req -x509 -new -key private/cakey.pem -out cacert.pem -days 3650

证书申请方:
1、为某服务生成密钥:
# cd /etc/vsfptd/
# mkdir ssl
# cd ssl
# (umask 077; openssl genrsa 1024 > vsftpd.key)
# openssl req -new -key vsftpd.key -out vsftpd.csr

2、将此请求通过某方式传递给CA服务器

3、CA签署证书(在CA服务器上操作)
# openssl ca -in vsftpd.csr -out vsftpd.crt -days N

总结A--B的会话
A发送方:
1、计算数据的特征码(单向加密);
2、用自己的私钥加密特征码,并附加在数据后面
3、生成一个临时对称密钥
4、用此密钥结合某算法加密数据及加密后的特征码
5、对接收方的公钥加密此对称密钥,并附加加密后的数据后面
6、发送至接收方
B接收方
1、用自己的私钥解密加密的对称密钥
2、用对称密钥解密数据
3、用对方的公钥解密加密的特征码
4、用同样的算法计算数据的征码。并与解密而来的征码进行比较