加密、解密,以及OpenSSL建立私有CA

加密的算法和协议:

对称加密:加密和解密同一个密钥,依赖于算法和密钥。

算法:des,3des,aes,blowfish,idea,rc6,cast5

特性:

1,加密,解密使用同一密钥;

2,讲明问分割成固定大小的块,逐一进行加密;

缺陷:

1,密钥过多;

2,密钥分发;

非对称加密:公钥加密

密钥对儿:私钥和公钥

公钥是从私钥中提取出来的,使用公钥加密的数据,只能使用与此公钥配对儿的私钥解密, 反之亦然。

算法:Rsa,Dea,Elagmal

特性:

  1. 钥匙长度较大。
  2. 加密解密分别使用密钥对儿中的密钥进行。
  3. 常用于数据签名和密钥交换。

单向加密:提出数据的特征码

特征:

  1. 定长输出。
  2. 雪崩效应。
  3. 不可逆。

算法:md5,sha1,sha256,sha384,sha512

Pki:Public Key Infrastructure 由四部分组成

签证机构:CA

注册机构:RA

证书吊销列表:CRL

证书存取库

OpenSsl的组成部分

Libcrypto:加密,解密库文件;

Libssl:ssl协议实现

Openssl:多用途命令行工具。每种功能都使用专用的子命令来实现。

 

Openssl子命令分类:

标准命令

消息摘要命令

加密,解密相关命令

Openssl加密解密:

   对称加密:(加密文件)

工具:openssl enc ,gpg

算法:des,3des,aes,blowfish,twofish,idea,cast5

 

enc工具:

#openssl  enc -e -加密类型 -a -salt in /oldfile -out /newfile

#openssl  enc -d -加密类型 -a -salt in /newfile -out /oldfile

加密文件:# openssl  enc -e -des3 -a -salt  -in test -out test.1

enter des-ede3-cbc encryption password:

Verifying - enter des-ede3-cbc encryption password:

解密文件:# openssl  enc -d -des3 -a -salt  -in test.1 -out test.2

   单向加密:dgst

算法:md5,sha1

工具:openssl dgst,md5sum,sha1sum,sha256,sha224sum,sha348sum

    #man dgst

  #openssl gdst -md5 file..

  #md5sum fstab.new

# openssl  dgst -md5 test1 

MD5(test1)= d41d8cd98f00b204e9800998ecf8427e

# md5sum test1 

d41d8cd98f00b204e9800998ecf8427e  test1

 

   生成用户密码:passwd

  #openssl passwd -1 -salt 8bits随机数

 

# openssl   passwd -1 -salt  8

Password: 

$1$8$nQ0Ea2HVPqTv.j9k/i.SP1

 

   生成随机数:rand

  #openssl  rand -hex | base64 num 

   [hex:16进制|base64 :任意字符]

 

# openssl  rand -hex 8

a6c957bd6e37ec55

# openssl rand -base64 8

PY4eGLDY+RU=

 

公钥加密:工具,gpg,openssl rsautl

Genrsa 生成。

Whatis genrsa

    生成密钥对:

操作过程,生成私钥,从私钥中提取公钥。

 openssl  genrsa  -out  test.key 2048

(umask  077;openssl genrsa -out testkey 2048)

#在bash中命令在小括号里执行的是通过打开一个子shell进程进行的。

以上两条命令的区别在与最后的权限

# ls -ll

总用量 8

-rw-------. 1 root root 1675 4月  21 19:58 test2.key

-rw-r--r--. 1 root root 1675 4月  21 19:58 test.key

从私钥中提取公钥:

# openssl  rsa  -in  test2.key  -pubout

writing RSA key

-----BEGIN PUBLIC KEY-----

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5mnpGK3HlENliGdgwknF

mOqV1q/3rY0vAHxp9hch4EZ/XY7U1OlBK0Z/UfEU8BM8xJHday/3BUJxiaMzqbJ0

SsHS9QrGYcamwRQihkI8NWtmSPbmd4ptg5WoCExgQwdTsIfIJd+YN0Wab/4fbf4c

RYL66Yp8vld6W1QsgZ0p+xNXK78T3higfienolWTnS2n4bmH7R8kPW1q/xsg2uT1

dh7ooOBs4HYknkSQq1YceKIEp9NMPZNtNJVS7hNniXHCLKbIIjQM2eAlzXGI0XcN

l6xLCq+Z4sxygMfhUnkt8gKAmKVBUTif2uoLdy4fw9MDf63y9iWePylerLNMUmg3

XQIDAQAB

-----END PUBLIC KEY-----

 

Openssl建立私有CA:

1、生成私钥;

2、生成自签署证书;

(1) 私钥用于签发证书时,向证书添加数字签名使用;

(2) 证书:每个通信方都导入此证书至“受信任的证书颁发机构”;

 

配置文件路径/etc/pki/tls/openssl.cnf 

工作目录:/etc/pki/CA/

certs证书  crl 吊销列表  newcerts新证书  private 私钥位置

建立私有CA

1,生成私钥文件

#(umask 077; openssl genrsa  -out /etc/pki/CA/private/sicakey.pem 2048)

Generating RSA private key, 2048 bit long modulus

.....................+++

........................................................+++

2,生成自签证书

#openssl req -new -x509 -key /etc/pki/CA/private/sicakey.pam -out /etc/pki/CA/cacert.pem -days 80
     -new: 生成新的证书签署请求;

-key:私钥文件路径,用于提取公钥;

-days N: 证书有效时长,单位为“天”;

-out:输出文件保存位置;

-x509:直接输出自签署的证书文件,通常只有构建CA时才这么用;

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [XX]:CN

State or Province Name (full name) []:HN

Locality Name (eg, city) [Default City]:ZZ

Organization Name (eg, company) [Default Company Ltd]:GO

Organizational Unit Name (eg, section) []:LL

Common Name (eg, your name or your server's hostname) []:EDU

Email Address []:ADMIN@163.COM
3,提供辅助文件

# touch /etc/pki/CA/index.txt

# echo 01 > /etc/pki/CA/serial

给节点发证书:

1,节点申请证书

在证书申请的主机上进行如下步骤:

  1. 生成私钥;

#(umask 077; openssl genrsa -out ssl.key  1024)

Generating RSA private key, 1024 bit long modulus

................++++++

e is 65537 (0x10001)

  1. 生成证书签署请求;

#openssl  req -new -key ssl.key  -out ssl.csr (crs结尾,跟主CA的信息一致)

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [XX]:CN       

State or Province Name (full name) []:HN

Locality Name (eg, city) [Default City]:ZZ

Organization Name (eg, company) [Default Company Ltd]:GO

Organizational Unit Name (eg, section) []:LL

Common Name (eg, your name or your server's hostname) []:EDU

Email Address []:HONGMAO@163.COM

 

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

注意:a,其中subject信息部分,要与Ca保持一致;

 B,common name要是用此主机在通信真实使用的名字;

  1. 把请求发给CA;

申请完毕之后,发送给CA服务器。审核,测试因为在同一服务器,所以不用发。

2,CA签发证书

  1. 验证请求者信息
  2. 签署证书

#openssl  ca -in /ssl/ssl.csr  -out /ssl/ssl.crt -days 180 

 crt 签署之后的证书后缀,-days 签发时间

(3)把签署好的证书发给请求者。


发表评论

登录 后发表评论.