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

OpenSSL以及私有CA的创建

时间:2015-09-19 19:50:22      阅读:297      评论:0      收藏:0      [点我收藏+]

标签:加密基础   ssl以及私有ca的创建   

  SSL中文名称安全套接层是为网络通信提供安全及数据完整性的一种安全协议。其继任者为TLS中文名称传输层安全。SSLTLS在传输层对网络连接进行加密。

 

加密主要是保密性,完整性和可用性这个三个方面。保密性包括数据保密性,隐私性;完整性包括数据完整性,系统完整性

加密算法和协议有对称加密,公钥加密,单向加密,认证协议

对称加密:加密和解密使用同一个密钥;常见的算法有DES,3DES,AES,Blowfish

特性:

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

    2、将原始数据分割成固定大小的块,逐个进行加密;

缺陷:

 1、密钥过多;

      2、密钥分发;

  公钥加密:密钥是成对儿出现

      公钥:公开给所有人;pubkey

      私钥:自己留存,必须保证其私密性;secret key

     特点:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然;

     功能:

 数字签名:主要在于让接收方确认发送方身份;

        密钥交换:发送方用对方的公钥加密一个对称密钥,并发送给对方;

        数据加密:

     算法:RSA, DSA,ELGamal

  单向加密:只能解密,不能解密;提取数据指纹;常见的算法:md5,sha1,sha256

 

现在常见的加密过程是上面所述的所有加密协议

例如:两个主机之间进行通信,首先使用单向加密算法,提取文件数据的特征码,然后用自己的私钥加密这段特征码,然后附加在文件的后面,然后用对称密钥把所有的数据进行加密,然后再用对方的公钥加密这个私钥附加在文件后面,然后对方收到后进行层层解密。但这个公钥交换很重要,这就得由第三方认证机构来做。

第三方机构对一方进行认证签名,然后两方开始通信前,一方先把签证发给另一方,然后另一方去认证机构去验证签名的可信度,如果没问题,就验证通过了,这个签名里包含对方的公钥,这就实现了公钥的交换。

但是你要拿到第三方机构的公钥,才能解密对方的签名,如何确定这就是第三方的公钥,这就需要PKI来实现。

PKI

签证机构CA

注册机构:RA

证书吊销列表:CRL

证书存取库

    目前证书的标准规范为X.509

     X.509:定义了证书的结构以及认证协议标准

       版本号

       序列号

       签名算法ID

       发行者名称

         有效期限

       主体名称

       主体公钥

       发行者惟一标识

       主体的惟一标识

       扩展

       发行者签名

OpenSSLlinux下的SSL实现的软件,主要包含三个组件:

openssl:多用途的命令行工具;libcrypto:公共加密库;libssl:库,实现ssltls

openssl命令:包含三类标准命令、消息摘要命令、加密命令;具体用法,不详细介绍了,主要用的有以下几个:

生成随机数:

  openssl rand -base64|-hex NUM

    NUM: 表示字节数;-hex时,每个字符4位,出现的字符数为NUM*2;

生成密钥对儿:

    openssl  genrsa  -out  /PATH/TO/PRIVATEKEY.FILE NUM_BITS

例: (umask077; openssl  genrsa  -out  key.pri 2048)这个命令是在子shell中使用umask077让其他用户没有权限查看,然后创建一对密钥,

提取出公钥:

  openssl  rsa  -in /PATH/FROM/PRIVATEKEY.FILE  -pubout

建立私有CA:

工具:   OpenCA    openssl

证书申请及签署步骤:

  1、生成申请请求;

  2RA核验;

  3CA签署;

  4、获取证书;

下面以openssl创建私有CA,以及证书的申请与请求,

 openssl的配置文件在:/etc/pki/tls/openssl.cnf按需要进行修改,或者不修改也行

 技术分享

配置文件里,这一段包含了CA的配置,dir这一行定义了CA的工作目录等等,可以看#后面的注释,来查看本行是定义什么的

技术分享

  (1) 创建所需要的文件且给序列号是送一个数字

touch index.txt

echo 01 > serial

技术分享

  (2) CA自签证书

    首先创建密钥,然后给自己前一个证书

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

技术分享

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


    -new: 生成新证书签署请求;

    -x509: 专用于CA生成自签证书;

    -key: 生成请求时用到的私钥文件;

    -days n:证书的有效期限;

    -out /PATH/TO/SOMECERTFILE: 证书的保存路径;

技术分享

这样自己的证书就做好了,就可以给别人颁发证书了

(3) 发证

 (a) 用到证书的主机生成证书请求;

# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)

# openssl req -new -key /etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr

技术分享

 (b) 把请求文件传输给CA;

技术分享

(c) CA签署证书,并将证书发还给请求者;

 openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365

技术分享

技术分享

查看证书中的信息:

openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|-subject|-serial


技术分享这样私有CA就创建完成,并能给他人发证书了


  

 

 

 

 


本文出自 “10520982” 博客,请务必保留此出处http://10530982.blog.51cto.com/10520982/1696317

OpenSSL以及私有CA的创建

标签:加密基础   ssl以及私有ca的创建   

原文地址:http://10530982.blog.51cto.com/10520982/1696317

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