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:使用md5sha1算法;

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、数字证书


Linux入门之openssl--CA搭建_自建CA


Linux入门之openssl--CA搭建_自建CA_02


PKI模型,下面介绍基于此模型的CA搭建


三、openssl实现私有CA

服务器端自建CA

切换工作目录至/etc/pki/CA

配置文件:/etc/pki/tls/openssl.cnf,内容自动维护,不需要手动修改

Linux入门之openssl--CA搭建_自建CA_03

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