OpenSSL

OpenSSL由三部分组成:

            libencrypto

            libssl

            openssl多用途命令行工具

加密算法和协议:

            对称加密:加密和解密使用同一个密钥;

                    DES 3DES AES Blowfish Twofish IDEA RC6 CAST5

                    特性:

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

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

                    缺陷:

                        1、密钥过多;

                        2、密钥分发困难;

            公钥加密:密钥分为公钥与私钥

                    公钥:从私钥中提取产生;可公开给所有人;public key

                    私钥:通过工具创建,使用者自己留存,必须保证其私密性;secret key

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

                    用途:

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

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

                        数据加密

                    算法:RSADSA, ELGamal, DSS, DSA

            单向加密:即提出数据指纹;只能加密,不能解密;

                    特性:定长输出、雪崩效应;

                    功能:完整性;

                    算法:

                        md5Message Digest 5, 128bits

                        sha1Secure Hash Algorithm 1, 160bits

                        sha224, sha256, sha384, sha512

            密钥交换: IKEInternet Key Exchange

                    公钥加密

                        DHDeffie-Hellman

                        Ap, g

                        Bp, g

                        A: x

                        –> p^x%g ==> B

                        A: (p^y%g)^x=p^yx%g

                        B: y

                        –> p^y%g ==> A => (p^y%g)^x=p^xy%g

                        B: (p^x%g)^y=p^xy%g

PKIPublic Key Infrastructure

            公钥基础设施:

                    注册机构:RA

                    证书吊销列表:CRL

                    证书存取库:

            证书的结构以及认证协议标准:

                    版本号

                    序列号

                    签名算法ID

                    发行者名称

                    有效期限

                    主体名称

                    主体公钥

                    发行者的惟一标识

                    主体的惟一标识

                    扩展

                    发行者的签名

                    SSLSecure sockets Layer

                    TLS: Transport Layer Security

            分层设计:

                    1、最底层:基础算法原语的实现,aes, rsa, md5

                    2、向上一层:各种算法的实现;

                    3、再向上一层:组合算法实现的半成品;

                    4、用各种组件拼装而成的各种成品密码学协议软件;

openssl:许多子命令,分为三类:

                   标准命令

                   消息摘要命令(dgst子命令)

                   加密命令(enc子命令)

            标准命令: enc, ca, req, genrsa, …

                        对称加密:

                            工具:openssl  enc,  gpg

                            支持的算法:3des, aes, blowfish, towfish

                            enc命令:

                                加密:~]# openssl  enc  -e  -des3  -a  -salt  -in fstab   -out fstab.ciphertext

                                解密:~]# openssl  enc  -d  -des3  -a  -salt  -out fstab   -in fstab.ciphertext

                        单向加密:

                                工具:openssl dgst, md5sum, sha1sum, sha224sum, …

                                dgst命令:

                                        ~]# openssl  dgst  -md5  /PATH/TO/SOMEFILE

                        生成用户密码:

                                工具:passwd, openssl  passwd

                                 openssl  passwd  -1  -salt  SALT

                        生成随机数:

                                工具:openssl  rand

                                    ~]# openssl  rand  -hex  NUM

                                    ~]# openssl  rand  -base  NUM

                        公钥加密:

                                加密解密:

                                算法:RSAELGamal

                                工具:openssl  rsautl, gpg

                                数字签名:

                                算法:RSADSAELGamal

                                密钥交换:

                                算法:DH

                                生成密钥:

                                          生成私钥: ~]# (umask 077;  openssl  genrsa  -out  /PATH/TO/PRIVATE_KEY_FILE   NUM_BITS)

                                          提出公钥: ~]#  openssl  rsa  -in  /PATH/FROM/PRIVATE_KEY_FILE  -pubout

                        随机数生成器:

                                        /dev/random:仅从熵池返回随机数;随机数用尽,阻塞;

                                        /dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞;

                                                           伪随机数不安全;

                                        熵池中随机数的来源:

                                                           硬盘IO中断时间间隔;

                                                           键盘IO中断时间间隔;

CA:公共信任的CA,私有CA

               建立私有CA

                       openssl

                       openCA

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

            构建私有CA:

                    在确定配置为CA的服务上生成一个自签证书,并为CA提供所需要的目录及文件即可;

                    步骤:

                            (1) 生成私钥;

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

                            (2) 生成自签证书;

                                ~]# openssl,req  -new  -x509  -key  /etc/pki/CA/private/cakey.pem  -out    /etc/pki/CA/cacert.pem -days 3655

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

                                                    -x509:生成自签格式证书,专用于创建私有CA时;

                                                    -key:生成请求时用到的私有文件路径;

                                                    -out:生成的请求文件路径;如果自签操作将直接生成签署过的证书;

                                                    -days:证书的有效时长,单位是day

                            (3) CA提供所需的目录及文件;

                                    ~]# mkdir  -pv  /etc/pki/CA/{certs,crl,newcerts}

                                    ~]# touch  /etc/pki/CA/{serial,index.txt}

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

                    要用到证书进行安全通信的服务器,需要向CA请求签署证书:

                            步骤:(以httpd为例)

                            (1) 用到证书的主机生成私钥;

                                    ~]# mkdir  /etc/httpd/ssl

                                    ~]# cd  /etc/httpd/ssl

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

                            (2) 生成证书签署请求

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

                            (3) 将请求通过可靠方式发送给CA主机;

                            (4) CA主机上签署证书;

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

                    查看证书中的信息:

                            ~]# openssl  x509  -in /etc/pki/CA/certs/httpd.crt  -noout  -serial  -subject

                    吊销证书:

                             步骤:

                                (1) 客户端获取要吊销的证书的serial(在使用证书的主机执行):

                                 ~]# openssl  x509  -in /etc/pki/CA/certs/httpd.crt  -noout  -serial  -subject

                                (2) CA主机吊销证书

                                    先根据客户提交的serialsubject信息,对比其与本机数据库index.txt中存储的是否一致;

                                    吊销:

                                            # openssl  ca  -revoke  /etc/pki/CA/newcerts/SERIAL.pem

                                 其中的SERIAL要换成证书真正的序列号;

                                (3) 生成吊销证书的吊销编号(第一次吊销证书时执行)

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

                                (4) 更新证书吊销列表

                                            # openssl  ca  -gencrl  -out  thisca.crl

                                        查看crl文件:

                                            # openssl  crl  -in  /PATH/FROM/CRL_FILE.crl  -noout  -text

原创文章,作者:忠神通,如若转载,请注明出处:http://www.178linux.com/77178

(0)
忠神通忠神通
上一篇 2017-05-30
下一篇 2017-05-30

相关推荐

  • RAID磁盘冗余探究

    RAID磁盘冗余探究 RAID的全称是Redundant Arrays of Inexpensive Disk,可以翻译为廉价的磁盘冗余阵列。由加利福尼亚大学伯克利分校的一位教授在1988年提出,是一种磁盘管理方式。其产生的初衷是为了降低成本,但是为了达到RAID的功能,其造价并不便宜,所以后来改为Redundant Arrays of Independen…

    2017-08-26
  • 对软连接进行cp,rm

    软连接的原理 图1 由 1 号inode 读取到连结档的内容仅有档名,根据档名链接到正确的目录去取得目标文件的inode , 最终就能够读取到正确的数据了。 软连接的使用 创建软连接,从下图可以看出软连接的大小是11个字节,对比/etc/passwd和passwdlns可知他们不是同一个文件。 在复制cp的时候对软连接的处理 对指向文件的的软连接:使用cp …

    Linux干货 2017-02-25
  • bash脚本循环语句用法练习

    bash脚本循环语句用法练习 1、使用循环语句写一个脚本,实现打印出来国际象棋的棋盘 #方法1:使用until循环语句实现 [root@liang7 bin]# cat chess-until.sh  #!/bin/bash #Author:liang #Version:1.0 #Description:Print&n…

    Linux干货 2016-08-24
  • Linux基础知识

    一、描述计算机的组成及其功能 计算机由运算器、控制器、存储器、I/O设备五大部件组成。 运算器和控制器统称为中央处理器,俗称CPU。    1、运算器:实现算术运算和逻辑运算的部件;    2、控制器:计算机的指挥系统,控制计算机的其他部件,使得个部件有条不紊地协调工作;    3、存储器:存储数据…

    2017-07-08
  • 进程与计划任务详解

    时光匆匆,王老师代两周的课就这样结束了,刚适应王老师的讲课风格。王老师讲课进度非常快,能按照自己的思路把上课的内容每一个地方都贯彻下去。我觉得这样是非常好的,但是笔记方面还是南老师做的详细,各有各的风格吧。今天我们将要给大家介绍进程与计划任务,对我们的以后工作有非常大的帮助,因为我们以后工作尽可能的都自动化管理,不需要我们每天都去敲那些命令。所以我相信今天的…

    2017-09-09
  • 权限管理与ACL

    一、文件属性 1.文件属性:    文件属性操作     chown : change owner  ,设置文件所有者     chgrp : change group  ,设置文件的属组    文件属主修改: chow…

    Linux干货 2016-08-05