Openssl 加密,解密,CA认证

今天我们来说一说openssl,那到底什么是openssl呢?

OpenSSL是一个安全工具集,同时也提供了开源程序库。它支持ssl(Secure Sockets Layer, v2/v3),TLS(Transport Layer Secure, v1)。这套工具集的应用范围非常之广

OpenSSL由三部分组成:libencrypto库,libssl库,openssl多用途命令行工具

接着我们说一下加密算法和协议:

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

特性:
                    (1)、加密、解密使用同一个密钥;
                    (2)、将原始数据分割成为固定大小的块,逐个进行加密;
                    
           缺陷:
                    (1)、密钥过多;
                    (2)、密钥分发困难;

2,公钥加密:密钥分为公钥与私钥
                公钥:从私钥中提取产生;可公开给所有人;pubkey
                私钥:通过工具创建,使用者自己留存,必须保证其私密性;secret key;
                特点:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然;
                
                用途:
                    数字签名:主要在于让接收方确认发送方的身份;
                    密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方;

数据加密

算法:RSA, DSA, ELGamal
                    DSS: Digital Signature Standard
                    DSA:Digital Signature Algorithm

3,单向加密:即提出数据指纹;只能加密,不能解密;
                特性:定长输出、雪崩效应;
                功能:完整性;
                算法:
                    md5:Message Digest 5, 128bits
                    sha1:Secure Hash Algorithm 1, 160bits
                        sha224, sha256, sha384, sha512

4,密钥交换

公钥加密:通过获取对方的公钥对数据进行加密,只有对方的私钥才能解密

DH算法(Deffie-Hellman):由两个人名组成

然后我们说一下加密解密过程:

加密过程:
第一步:发信者先用单向加密的算法计算出数据的特征码,然后用自己的私钥加密特征码,并将其结果附加在数据后面,
第二步:然后生成一个临时的对称密钥,并使用这段对称密钥加密这整段数据,
第三步:然后使用收信者的公钥加密这临时的对称密钥,并附加在这段数据后面,然后发送给收信者
解密过程:
第一步:收信者收到数据后,先用自己的私钥解密这段数据,得到对称加密的密钥后,解密其对称加密的数据,
第二步:然后用发信者的公钥解密这段特征码,能解密的话,发信者的身份得到认证
第三步:收信者再用同样的单向加密的计算方法计算这段数据,并与解密出来特征码进行比较,如果特征码相同,则数据完整性得到认证

各加密算法管理命令

openssl:默认在Centos 7上面默认安装,可以直接使用,有很多子命令可以分别管理。

子命令分为三类:

标准命令

信息摘要命令(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,sha512sum ...
              dgst命令:
                ~]# openssl  dgst  -md5  /PATH/TO/SOMEFILE  (md5sum /PATH/TO/SOMEFILE)

        生成用户密码:
            工具:passwd, openssl  passwd           
                openssl  passwd  -1  -salt  SALT               
        生成随机数:
            工具:openssl  rand
            
            ~]# openssl  rand  -hex  NUM
            ~]# openssl  rand  -base  NUM

      
公钥加密:

生成私钥:~]# (umask 077; openssl genrsa -out /PATH/TO/PRIVATE_KEY_FILE  NUM_BITS(2的次方))
         ~]# (umask 077; openssl genrsa -out /tmp/hello.txt 1024)
     提出公钥: ~]#  openssl  rsa  -in  /PATH/FROM/PRIVATE_KEY_FILE  -pubout
         ~]# openssl rsa -in /tmp/hello.txt -pubout

PKI及创建私有CA

PKI:公钥基础设施(Public Key Infrastructure)

签证机构:CA

注册机构:RA

证书吊销列表:CRL

整数存取库

openssl命令:
         配置文件:/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请求签署证书:

(1) 用到证书的主机生成私钥;
            ~]# mkdir  /etc/httpd/ssl
            ~]# cd  /etc/httpd/ssl
            ~]# (umask  077; openssl  genrsa -out  httpd.key  2048)
(2) 生成证书签署请求              
           ]# openssl req -new -key httpd.key -out httpd.csr -days 365

(3) 将请求通过可靠方式发送给CA主机;
        scp certs/httpd.csr  [email protected]:/tmp
(4) 在CA主机上签署证书;
         ~]# openssl ca  -in  /tmp/httpd.csr  -out  /etc/pki/CA/certs/httpd.crt  -days  365
(5) 签署完证书以后发给服务器主机
        ~]# scp /etc/pki/CA/certs/httpd.crt [email protected]:/etc/httpd/ssl/httpd.crt
查看证书中的信息:
       ~]# 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主机吊销证书
             先根据客户提交的serial和subject信息,对比其与本机数据库index.txt中存储的是否一致;
                        
       吊销:# openssl  ca  -revoke  /etc/pki/CA/newcerts/SERIAL.pem

时间: 2024-12-12 14:13:49

Openssl 加密,解密,CA认证的相关文章

Openssl加密解密原理与命令使用--尚未完善

Openssl加密解密原理: 示例: 比如A与B通信发送数据: 加密原理: 在A把要发送的内容通过单向加密方式进行数据指纹计算,计算出数据指纹后,会用自己的私钥加密数据指纹,并把加密的数据指纹添加到原数据的后面.然后对整个数据(原数据+数据指纹)进行对称加密算法进行计算(让明文转换成密文),得出的数据为整个数据的密码,再用B的公钥进行这个密码进行加密,并放到这个数据的后面一并发给B. 解密原理: 1.B用自己的私钥能够解密---------至此说明数据保密的. 2.B用私钥解密出来的密码,去解密

openssl 加密 解密 应用及CA的实现

一 现在的加密/解密技术主要有三种:对称加密,公钥加密,和单向加密 对称加密:指的是加密方和解密方使用的是同一个密钥 特性: 1 加密.解密使用同一个秘钥: 2 将原始数据分割成固定大小的块,逐个进行加密 算法:DES  3DES  AES 公钥加密:秘钥是成对出现 公钥:公开给所有人: pubkey 私钥:自己留存,必须保证去私密性:secret key 特点:用公钥加密的数据只能用与之配对的私钥解密,反之亦然: 特性: 数字签名:用于接收方确认发送方的身份 秘钥交换:发送方用对方的公钥加密一

openssl加密解密与创建CA

前言 目前网络上比较流行的服务类协议如http,ftp,smtp,pop3等本身是不具备加密解密功能的都明文传输的,在早期网络设计的初期由于服务器的数量非常少,当然网络的安全也是不会被重视的.但随着互联网的不断发展,安全方面也成为人们比较关心的问题之一,后来网警公司先为http研发了一种可被调用的公共功能的库,这个库就被放在了TCP/IP模型的传输层与应用层之间,是一个半层的库,任何不具备加解密的程序在研发时可调用这个库也可以不用调这个库,用与不用都可以实现传输功能,这个库就叫做SSL;正如我们

openSSL加密解密

一.前言 openSSL是套开放源代码的软件库包,实现了SSL与TLS协议.其主要库是以C语言所写成,实现了基本的加密功能. OpenSSL可以运行在绝大多数类Unix操作系统上(包括Solaris,Linux,Mac OS X与各种版本的开放源代码BSD操作系统),OpenVMS与 Microsoft Windows.它也提供了一个移植版本,可以在IBM i(OS/400)上运作. openssl有三个部分组成.一是libcryto.这是一个具有通用功能的加密库.里面实现了众多的加密库.二是l

openssl加密、解密及建立私有CA

OpenSSL:俗称安全套接字 它可以实现数据加密: SSL全称为:Secure Socket Layer可以在Internet上提供秘密性传输,其目标是保证两个应用间通信的保密性和可靠性,SSL能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证.SSL协议要求建立在可靠的传输层协议(TCP)之上.SSL协议在应用层协议通信之前就已经完成加密算法.通信密钥的协商及服务器认证工作.在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性. 一.Op

linux下加密解密之OpenSSL

一.为什么要加密 在网络这个大森林里面,所有的数据传输都是不安全的,在数据传输中必须要给数据加密,以防止被别人劫持盗取 二.数据在网络中怎么传输 数据从发送出去到目的地都经过了哪些步骤? 1.ISO国际标准组织定义了数据在网络传输中的七层模型:数据从 应用层--会话层--表达层--传输层--网络层--数据链路层--物理层 逐层封装传输,数据到达最底层后传送出去,到达目标主机后在从底层往上层传输并逐层解压封装. 2.在TCP/IP定义的四层模型里,数据传输也是一样的道理,应用层--传输层--网络层

加密/解密&利用OpenSSL构建私有CA

在互联网安全及个人隐私状况日益严峻的今天,加密技术变得尤为重要并且不可或缺.在密码雪中,加密是指将明文信息隐匿起来,使之在缺少特殊信息时不可读.本文所讲的主要是在互联网传输数据时所用的加密方式.我们都知道OSI&TCP/IP网络参考模型,通常我们会把这两个模型分为通信子网和资源子网两部分,但是在构建网络的初期,信息从发送端送达到接受端都非常困难所以在设计模型之初并没有考虑过多的安全因素,以至于通信子网和资源子网都没有涉及到数据加密的内容.为了解决这个问题,网景公司在资源子网和通信子网之间添加了半

加密 解密过程详解及openssl自建CA  

            加密 解密过程详解及openssl自建CA 为了数据信息能够安全的传输要求数据要有一定的安全性那么数据的安全性包含哪些方面的特性呢?    NIST(美国信息安全署)做了如下的定义:    保密性:       1,数据的保密性 指的是数据或隐私不向非授权者泄漏                   2,隐私性  信息不被随意的收集    完整性:       1,数据的的完整性:信息或程序只能被指定或授权的方式改变不能被随意的             修改        

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

加密.解密,以及OpenSSL建立私有CA 加密技术是互联网最常用的安全保密手段,其利用技术手段把重要的数据加密后传送,到达目的地后再用相同或不同的手段进行解密. 加密技术包括两个元素:算法和密钥 常用的加密技术:对称加密.非对称加密.单向加密 以上几种加密技术各有千秋,经常组合起来使用 1.对称加密 加密和解密使用同一个密钥,将明文分隔成固定大小的块,逐个进行加密: 常见算法:DES  3DES  Twofish  IDEA  IDEA  CAST5  RC6 Blowfish 2.非对称加密