openssh
一、背景知识:
加密方式 |
缺点 |
加密算法 |
特性 |
对称加密 (加密算法+口令) |
1、口令传输 2、口令太多 |
DES(56bits),3DES, AES(128bits),Blowfish,Twofilsh IDEA,RC6,CAST5,Serpent |
1、加密/解密使用同一个口令 2、将燕文分隔成固定大小的数据块,对块进行加密ECB CBC 3、数据私密性 |
公钥加密 |
1、速度慢 |
RSA EIGamal DSA |
1、密钥加密(对方公钥) 2、数据加密(对方公钥) 3、身份认证(自己私钥) |
单向加密 |
MD5 SHA1 SHA512 CRC-32 消息认证算法(MAC) CBC-MAC HMAC |
1、完整性 2、雪崩效应 3、定长输出 |
|
非对称加密 |
1、密钥交换 2、身份认证 |
||
密钥交换 |
DH,公钥加密 |
2、 |
二、openssl一般概念
libcrypo:通用功能的加密库,能够被众多的加密解密软件调用
libssl:用于实现TLS/SSL的功能,
openssl:多功能命令工具(使用较多)
功能:生成密钥、创建数字证书、手动加密解密数据
enc |
对称加密 |
dgst |
单向加密 |
genrsa |
生成私钥 |
rsautl, |
|
req |
签署请求 |
ca |
签署证书 |
passwd |
用户认证,生成密码 |
speed |
测试加密算法速度 |
rand |
生成伪随机数# openssl rand -hex #,eg:# openssl rand -base64 6 # openssl passwd -1 -salt `openssl rand -hex 4` |
常见后缀
.key格式 |
私有的密钥 |
.crt格式 |
证书文件,certificate的缩写 |
.csr格式 |
证书签名请求(证书请求文件),含有公钥信息,certificate signing request的缩写 |
.crl格式 |
证书吊销列表,Certificate Revocation List的缩写 |
.pem格式 |
用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式 |
约定俗成的文件名称
cakey.pem |
ca私钥 |
cacert.pem |
ca自签证书 |
httpd.key |
服务用的私钥 |
httpd.csr |
证书请求文件 |
httpd.crt |
签署的证书 |
1、对称加密
加密、解密(enc算法)
# openssl enc -des3 -a -salt -in /path/to/input_file -out /path/to/cipher_file 加密 # openssl enc -d -des3 -a -salt -in /path/to/cipher_file -out /path/to/clear_file 解密 eg:# openssl enc -des3 -a -salt -in /etc/fstab -out /tmp/fstab.cipher
2、单向加密
one-way
collison-free(雪崩效应)
md5:128bits sha1 160bit sha512
工具:sha1sum md5sum cksum openssl dgst
# openssl dgst [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1] [-out filename] /path/to/somefile eg:# openssl dgst -sha1 fstab
3、消息摘要码,单向加密的延伸应用消息摘要码,单向加密的延伸应用
实现消息认证
应用:用于实现在网络通信中保证所传输的数据完整性;
机制:CBC-MAC
HMAC:使用md5和sha1算法;
4、用户认证
工具:passwd, openssl passwd
eg:# openssl passwd -1
5、公钥加密
公钥加密、私钥解密
密钥对儿:公钥:pkey
私钥:skey
算法:RSA, EIGamal(一般不用来加密数据,只用来进行密码交换和身份认证)
工具:gpg, openssl rsautl
6、数字签名
私钥加密、公钥解密
算法:RSA, EIGamal, DSA
DSA: Digital Signature Algorithm
DSS: Digital Signature Standard
7、密钥交换:IKE
算法:DH, 公钥加密,Diffie-Hellman
8、数字证书
PKI模型,下面介绍基于此模型的CA搭建
三、用openssl实现私有CA
服务器端自建CA
切换工作目录至/etc/pki/CA
配置文件:/etc/pki/tls/openssl.cnf,内容自动维护,不需要手动修改
1、生成密钥对儿
# (umask 077; openssl genrsa -out private/cakey.pem 2048)
openssl genrsa 生成私钥
在()中执行命令,在子shell中运行
查看公钥# openssl rsa -in private/cakey.pem -pubout -text-noout
2、生成自签证书
# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655
详细信息可以修改配置文件,默认显示。证书即可生成 cacert.pem
3、创建需要的文件
# touch index.txt serial crlnumber echo 01> serial
四、用openssl实现证书申请
客户端向服务器申请证书
1、在主机上生成密钥,保存至应用此证书的服务的配置文件目录下
# mkdir /etc/httpd/ssl # cd /etc/httpd/ssl # (umask 077; openssl genrsa -out httpd.key 1024)
2、生成证书签署请求
# openssl req -new -key httpd.key -out httpd.csr
3、将请求文件发往CA
[root@simon ssl]# scp httpd.csr 172.16.37.8:/tmp/
五、CA签署证书
1、签署
# openssl ca -in /path/to/somefile.csr -out /path/to/somefile.crt -days DAYS eg:# openssl ca -in /tmp/httpd.csr -out /tmp/httpd.crt -days 3655
回传证书
[root@localhost tmp]# scp httpd.crt 172.16.37.10:/etc/httpd/ssl/
2、吊销证书
# openssl ca -revoke /path/to/somefile.crt
总结:
这里比较重要的是了解PKI模型,以及自建CA的过程,在后续的httpd服务中都会使用。下面给出一般的建立CA的步骤,可以直接拿来使用。
服务器端 最好切换工作目录至/etc/pki/CA 1、生成密钥对 # (umask 077; openssl genrsa -out private/cakey.pem 2048) 2、生成自签证书 # openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655 3、创建额外文件 # touch index.txt serial crlnumber echo 01> serial 客户端 1、创建https为例,在httpd的配置文件目录下创建子目录 # mkdir /etc/httpd/ssl # cd /etc/httpd/ssl # (umask 077; openssl genrsa -out httpd.key 1024) 2、生成证书签署请求 # openssl req -new -key httpd.key -out httpd.csr 3、将请求文件发往CA [root@simon ssl]# scp httpd.csr 172.16.37.8:/tmp 服务器端 1、签署证书 # openssl ca -in /path/to/somefile.csr -out /path/to/somefile.crt -days DAYS eg:# openssl ca -in /tmp/httpd.csr -out /tmp/httpd.crt -days 3655 2、回传证书 [root@localhost tmp]# scp httpd.crt 172.16.37.10:/etc/httpd/ssl/ 3、吊销证书 # openssl ca -revoke /path/to/somefile.crt
Version:1.1