码迷,mamicode.com
首页 > 其他好文 > 详细

openssl 构建CA及加密解密

时间:2015-04-23 00:13:06      阅读:336      评论:0      收藏:0      [点我收藏+]

标签:应用程序   应用层   加密   密码   证书   

技术分享

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。主要通过在传输层与应用层间构建SSL安全套接字层实现安全传输。可选择通过SSL层进行加密传输,需要事先建立通信通道的层

加密算法和协议:

1、对称加密

   特性:

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

        2、将明文分隔成固定大小的块,逐个进行加密;

   缺陷:

1、       密钥过多;

2、        密码分发方式;

3、    常见算法:

DES:Data EncryptionStandard, 56bits

3DES:

AES: Advanced Encrpytion Standard, (128bits, 192, 256,384, 512bits)

Blowfish

Twofish

IDEA

RC6

CAST5


2公钥加密:非对称加密

因非对称加密的产出才使得互联网交易快速发展,更加安全。

      2个密钥称为密钥对儿:公钥和私钥

            私钥:secret key 仅允许个人使用

            公钥:public key 给所有人获取

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

 用处:

身份认证:公钥密码公开,用自己的私钥加密数据,对方用公钥能解密则身份确认。

技术分享

密钥交换:与被通信方通信之前,首先获取到对方的公钥,自己生成一个加密密码,用对方的公钥加密,并发送给对方;

技术分享


 

数据加密:加密效率低很少用非对称加密方式数据

算法:

RSA:既能做身份认证又能做数据交换

DSA:通常只用作身份认证(只用做数字签名)

ELGamal

特性:

1、密钥长度较大,例如512bits, 2048bits,4096bits

2、加密解密分别使用密钥对儿中的密钥相对进行;

3、常用于数据签名和密钥交换;

 

 

3、单向加密 :数据能加密但是不能解密,主要提取数据的特征码

 

特性:

1、    定长输出,无论原来数据是多大级别其加密结果长度一样。

2、    雪崩效应原数据微小改变,将会导致结果巨大改变;

3、    不可逆。

算法: MD5 128bits定长输出;/etc/shadow cents5 MD5

       SHA1 160bits定长输出;

       SHA256

       SHA384

       SHA512       /etc/shadow        Cents6/7      

        CRC32:奇偶校验

无需解密,在认证时只需要将用户输入的密码以相同的方式加密与数据库中存在的密码匹配

数字签名:

密钥交换机制:IKE (Internet Key Exchange)

首先通过IKE和对方取得联系,然后用对方的公钥加密(非对称加密)对称码给对方 对方通过自己的私钥解密获得对称码,然后就可以通过对称加密方式进行通信。

常用的密钥交换机制:

        公钥加密

         DH

技术分享


PKI:公钥基础设施

    1、CA 签证机构 (签名)

    2、RA 注册机构 (接收用户注册请求)

    3、CRL证书吊销列表(规整不正常的证书如私钥丢失等放入列表不在受信使用)

    4、证书存取

 

CA是PKI系统中通信双方都信任的实体,被称为可信第三方(Trusted Third Party,简称TTP)

数字证书:

CA:签证机构

功用:保证公钥信息安全分发;

 

数字证书的格式(x.509 v3):

版本号(version)

序列号(serial number):CA用于惟一标识此证书;

签名算法标志(Signature algorithmidentifier)

发行者的名称:即CA自己的名称;

有效期:两个日期,起始日期和终止日期;

证书主体名称:证书拥有者自己的名字

证书主体公钥信息:证书拥有者自己的公钥;

发行商的惟一标识:

证书主体的惟一标识:

扩展信息:

签名:CA对此证书的数字签名;

 

证书通常有两类用途:

用户证书

主机证书(httpd)

 

SSL:secure socket layer 安全套接字层

sslv1, sslv2, sslv3

 

数据安全传输完整性协议现在流行的为两种:

SSL 安全套接字层

TLS传输层安全协议

他们都是在传输层对网络连接进行加密

 

 

 

openssl

openssl的组成部分:

1、     libcrypto:算法库

2、     libssl:协议库

3、     openssl:应用程序

openssl:子命令分类

standard commands :标准命令

message digest commands:消息摘要命令

cipher commands :加密、解密相关的命令

 

加密文件(对称加密):

工具:openssl enc, gpg

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

 

enc工具:

# openssl enc -e -CIPHERNAME -a-salt -in /PATH/FROM/SOMEFILE -out /PATH/TO/SOMECIPHERFILE

e.g openssl enc -e –des3 -a -salt in /tmp/fstab out /tmp/fstab1

# openssl enc -d -CIPHERNAME -a-salt -in /PATH/FROM/SOMECIPHERFILE -out /PATH/TO/SOMEFILE

e.g openssl enc -d –des3 -a -salt in/tmp/fstab1 out /tmp/fstab

单向加密:

算法:md5, sha1

工具:openssl dgst, md5sum,sha1sum, sha224sum, sha256sum, sha384sum, sha512sum

 

# openssl dgst-CIPHER /PATH/TO/SOMEFILE...

#md5sum

#sha tab tab

#sha1sum, sha224sum,sha256sum, sha384sum, sha512sum

 

公钥加密

   工具:gpg,oppenssl rsautl

   数字签名

       算法: RSA ,DSA(只能用于数字签名) ,ELGamal

   密钥交换:

       算法:公钥加密,DH

 

因公钥是从私钥中提取出来的,所以公钥的生成操作是先创建私钥然后从私钥中提取公钥。

 

1、生成密钥对儿:

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

# openssl genrsa -out/PATH/TO/PRIVATE_KEYFILE NUM_BITS

因私钥信息比较敏感,可默认创建时可通过umask创建其默认权限例如

(umask 077 ;openssl genrsa –out/tmp/key/testkey 2048)

2、从私钥中提取公钥

# openssl rsa -in/PATH/FROM/PRIVATE_KEY_FILE -pubout

 

CA证书格式

技术分享

技术分享


CA用自己的私钥给每个用户发放的证书签名

用户通过CA证书里的公钥解密证书签名,

CA私钥用于签发证书时,向证书添加证书签名时使用

证书:用于通信时验证证书合法性验证。

 

 

 

 

 

 

构建私有CA

openssl默认配置文件:/etc/pki/tls/openssl.cnf及其相关配置字段

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

[CA_default]定义自己作为CA时的配置

dir  : 工作目录

certs:已颁发证书的存储位置

crl_dir:已吊销证书吊销列表位置

database:证书索引文件

new_certs_dir:放置新证书的位置

certificate:证书自己的证书位置

serial:序列号

crlnumber:证书吊销编号

crl:当前正在使用的吊销列表文件位置

private_key:CA自己的私钥文件

RANDFILE:随机数获取的位置

X509_extensions:证书扩展段

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

/etc/pki/CA目录中分别有certs,crl,newcerts,private

目录每个目录分别

certs:已颁发证书文件存放位置

crl:证书吊销文件存放

newcerts:新证书存放位置

 private:CA自己私钥存放位置

 

构建私立CA:

1、    生成私钥文件: /etc/pki/CA/private/cakey.pem

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

2、    生成自签署文件

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem-out /etc/pki/CA/cacert.pem

 

键入相关信息:

You are about to be asked to enter informationthat will be incorporated

into your certificate request.

What you are about to enter is what is calleda Distinguished Name or a DN.

There are quite a few fields but you can leavesome blank

For some fields there will be a default value,

If you enter ‘.‘, the field will be leftblank.

-----

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

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

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

Organization Name (eg, company) [DefaultCompany Ltd]:XU

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

Common Name (eg, your name or your server‘shostname) []:www.xuphoto.cn

Email Address []:xu@xuphoto.cn

 

给节点发证书:   web 位置一般在 /etc/httpd

1、节点申请证书

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

(1)       生成私钥;

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

(2)       生成证书签署请求;

openssl req -new -key httpd.key -out httpd.csr

                            技术分享

 

 

 

 2、CA签发证书

(1) 验正请求者信息

(2) 签署证书

#openssl ca -in /etc/httpd/httpd.csr-out /etc/httpd/http.crt -days 3650

技术分享

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

 

 

 




openssl 构建CA及加密解密

标签:应用程序   应用层   加密   密码   证书   

原文地址:http://nickxu.blog.51cto.com/1207271/1637364

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!