一、SSL的配置及用法:

1、openssl简介:

 OpenSSL: SSL的开源实现
 libcrypto: 通用加密库
 libssl: TLS/SSL的实现
  基于会话的、实现了身份认证、数据机密性和会话完整性的TLS/SSL库、
 openssl: 多用途命令行工具
  实现私有证书颁发机构
  子命令:

2、openssl命令的用法:


 openssl ?     查看子命令

 openssl speed  测试各种加密算法的速度 ( 默认测试所有算法)
 openssl speed des3  只显示des3的    (数据先分块再加密)
 openssl enc
  -e  加密
  -d  解密
  -salt 支持salt
 whatis passwd 查看命令信息
 man sslpasswd 查看帮助信息

对文件加密:
   openssl enc -des3 -salt [-a] -in inittab -out inittab.des3
                加密算法 支持salt  加密文件    加密后保存为
对文件解密
   openssl enc -des3 -d -salt -a -in inittab.des3 -out inittab
  
 md5sum FILENAME  计算文件的特征码  md5 128bit    sha1 160bit
 sha1sum (····)FILENAME  计算文件特征码
 sha1sum inittab  md5sum inittab
 openssl dgst -md5 inittab  提取特征码
 
 openssl passwd -1 [ -salt ] 用MD5算法生成密码串
    -1 指定使用MD5算法  -salt指定salt
    
 openssl rand -base64 NUM   生成随机数

3、openssl实现私有CA:

先编辑SSL配置文件/etc/pki/tls/openssl.cnf,修改相关属性

 1)生成一对密钥

openssl genrsa -out /PATH/TO/KEYFILENAME NUMBITS 生成私钥
openssl rsa -in /PATH/TO/KEYFILENAME -pubout 提取公钥

私钥生成后将其权限改为700,亦可使用如下命令

(umask 077;openssl genrsa -out path/to/somewhere NUM)


 2)生成自签署证书
 

openssl req -x509 -new -key private/cakey.pem -out cacert.pem -days 3650 生成自签署证书

openssl x509 -text -in server.crt  显示证书内容

创建相关目录和文件:

  [root@ns1 CA]# mkdir certs newcerts crl
  
  [root@ns1 CA]# touch index.txt serial

  [root@ns1 CA]# echo 01 > serial

3)客户端申请证书

以为httpd服务申请证书为例:

 [root@ns1 CA]# cd
 [root@ns1 ~]# mkdir /etc/httpd
 [root@ns1 ~]# cd /etc/httpd/
 [root@ns1 httpd]# ls
 [root@ns1 httpd]# mkdir ssl
 [root@ns1 httpd]# cd ssl/
 [root@ns1 ssl]# (umask 077;openssl genrsa -out httpd.key)    创建私钥
 [root@ns1 ssl]# openssl req -new -key httpd.key -out httpd.csr  申请证书

4)服务器颁发证书

openssl ca -in httpd.csr -out httpd.crt 颁发证书

大致步骤如下:

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

二、ssh配置及其用法

ssh服务器端配置文件:/etc/ssh/ssh_config

部分选项含义:

  port 端口号
  protocol 协议版本号
  addressfamily 使用哪类地址(IPv4,IPv6)默认都使用
  listenaddress  监听哪个IP 默认监听所有
  #KeyRegenerationInterval 1h 密钥重新生成的时间间隔
  #ServerKeyBits 768 服务器端密钥长度
  #PermitRootLogin yes 是否允许管理员直接登录
  #MaxAuthTries 6 最多允许错误登录次数
  #PasswordAuthentication yes 是否启用口令认证

ssh客户端配置文件:/etc/ssh/sshd_config

查看帮助:man sshd_config

ssh连接远程主机命令:

ssh -l USERNAME REMOTE_HOST ['command']在本地停过命令操作远程主机

ssh -l USERNAME REMOTE_HOST

ssh USERNAME@REMOTE_HOST

ssh REMOTE_HOST

退出远程控制:exit

基于密钥认证的远程控制实现:

一台主机为客户端(基于某个用户实现):
1、生成一对密钥
ssh-keygen ssh-keygen -t rsa 访问控制查看帮助命令
-t {rsa|dsa} 指定加密算法
-f /path/to/keyfile 密钥保存文件
-N 'password' 指定密码

2、将公钥传输至服务器端某用户的家目录下的.ssh/authorized_keys文件中
使用文件传输工具传输(ssh-copy-id, scp)
ssh-copy-id -i /path/to/pubkey USERNAME@REMOTE_HOST
-i 指定公钥文件路径
ssh-copy-id -i .ssh/id_rsa root@192.168.0.7
3、测试登录

scp用法:

scp: 基于ssh的远程复制命令,可以实现在主机之间传输数据
scp [options] SRC DEST 
 -r  递归复制
 -p  保留原有文件权限

REMOTE_MACHINE
            USERNAME@HOSTNAME:/path/to/somefile
scp root@192.168.0.7:/etc/fstab ./
scp /etc/fstab root@192.168.0.7:/
sftp root@192.168.0.7 基于ssh的ftp登录远程主机