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服务器端配置文件:/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 [email protected]
3、测试登录
scp用法:
scp: 基于ssh的远程复制命令,可以实现在主机之间传输数据
scp [options] SRC DEST
-r 递归复制
-p 保留原有文件权限
REMOTE_MACHINE
USERNAME@HOSTNAME:/path/to/somefile
scp [email protected]:/etc/fstab ./
scp /etc/fstab [email protected]:/
sftp [email protected] 基于ssh的ftp登录远程主机