Openssl建立CA,在组织内部基于ca的认证

       

        1.给自己生成一对密钥

        2.自签署证书

        

        节点:1.生成密钥对   2.申城证书签署请求    3.把请求发送给CA    

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

        

一、建立CA服务器

/etc/pki/CA/private用于存放CA的私钥

 1.(umask 077;openssl genrsa -out /etc/pki/private/cakey.pem 2048)   生成密钥

 2.req -x509 自签署证书,常用于CA自己签署自己的证书

    req -days #     有效天数

    req -news  新请求

    req  -key  /path/file   指定私钥文件

    openssl -new -x509  -key /etc/pki/CA/private/cakey.pem  -out /etc/pki/CA/cacert.pem -days 3655   ###最后文件最好保持一致,不然要修改配置文件;然后填写详细信息(可以改配置文件,修改默认配置)

        生成的这个证书要给每个节点发一份

  3.初始化工作环境:

    #touch /etc/pik/CA{index.txt,serial}

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


二、节点申请证书

    A。节点要生成请求

        生成密钥对,同上第一步中

        生成证书签署请求

        把签署的请求文件发给CA服务器  

            #scp httpd.csr  1.1.1.1:/etc/pki/CA/csr   要输入1.1.1.1的密码  然后到服务器上  openssl ca -in /etc/httpd/ssl/csr/httpd.csr -out /etc/httpd/ssl/httpd.crt -days 1000 

            #scp httpd.crt 2.2.2.2:/crt   ca服务器发回证书给请求者

    B。CA要签署证书

            1.验证证书中的信息

            2.签署证书    openssl ca -in /etc/httpd/ssl/httpd.csr -out /etc/httpd/ssl/httpd.crt -days 1000  然后验证y  并提示database updated 数据库已更新,签署后可以删除请求文件或者换个位置保存

            3.发送给请求者


三、吊销证书

    A。节点请求吊销证书,要告诉CA服务器自己的序号是多少

            1.获取证书seral        #openssl x509 -in /path/*.crt  -noout -serial -subject

            2.CA服务器验证节点提交信息查看是否一致

            3.CA服务器吊销证书:  ##  openssl ca -revoke /etc/pki/CA/newcerts/序号.pem

            4.生成证书吊销列表   #第一次吊销  echo 00 >/etc/pki/CA/crlnumber

            5.跟新吊销列表文件  #cd /etc/pki/CA/crl 

                    #openssl ca -gencrl -out /etc/pki/CA/crt/ca.crl  -noout -text             ####查看吊销证书  openssl crl -in /etc/pki/CA/crl/ca.crl





附:基础知识


OpenSSL:一种开源的,用于保证数据传输安全的一种实现方式

    NIST:CIA

        保密性:数据保密性,隐私性    C

        完整性:数据完整性,系统完整性   I

        可用性:  A


         真实性,可追溯性

          OSI: x.800

                安全攻击

                        主动攻击:伪装,重播,消息修改,拒绝服务

                        被动攻击:窃听


安全机制

           加密,解密;数字签名;访问控制;数据完整性;认证交换;流量填充;路由控制;公证

安全服务

           认证

           访问控制:阻止非授权访问

           数据保密性:连接保密性,无连接保密性,选择域保密性,流量保密性

           数据完整性

           不可否认性    


密码算法和协议:

    对称加密:加密和解密方使用同一密码

    非对称加密:公钥 私钥   不通  ----加密速度慢;公钥是从私钥生成的

    单项加密:(数据完整性加密)

     认证协议:通信双方的身份验证

明文:clear text    plain text

密钥

密文

加解密算法


对称加密:DES、3DES、AES(密钥长度远大于DES)、Blowfish、Twofish、IDEA、RC6、CAST5

        加密解密使用统一口令;将明文分割成固定大小的块

对称加密缺点:密钥过多;密钥传输;密钥交换


公钥加密:非对称加密

    密钥:public key、secret key

        p/s   public/secret

公钥主要用于:身份认证 并不能保证数据的安全性,仅仅是完成身份认证


单项加密:定长输出,雪崩效应,(md5,SHA1)  a发给b({数据指纹(用a的私钥加密)及源数据}大括号内的数据用a生成的密钥进行加密,加密算法是对称加密,假设密码为secret;然后把secret密码用b的公钥进行加密后生成数据CCC)即CCC{用a私钥加密的数据指纹及源数据},b使用自己的私钥解密CCC得到对称加密的密钥secret,然后使用对称加密算法解密(密钥secret)数据和数据指纹(数据指纹用a的公钥解密),然后用生成指纹工具生成指纹和a发来的指纹对照 然后判断   


PKI:公钥基础设施  Public key infrastructure

    签证机构:CA

    注册机构:RA

    证书吊销列表:CRL

    证书存取库:


常用加密算法:RSA  DSA  EIGamal

IKE   密钥交换


ITU-T:  x.509 证书标准,证书结构和认证协议的标准


SSL  Netscape公司发明的;secure socket  Layer

    ssl v1  v2 v3

TLS:transport Layer Security

    TLSv1


gpg; openssl   linux下的两种工具

rpm -ql  openssl


openssl:多用途工具

libcrypto:公用加密库

libssl:ssl协议的实现


[root@comk ~]# openssl version

OpenSSL 1.0.1e-fips 11 Feb 2013


OpenSSL> help

openssl:Error: 'help' is an invalid command.

Standard commands

asn1parse         ca                ciphers           cms               

crl               crl2pkcs7         dgst              dh                

dhparam           dsa               dsaparam          ec                

ecparam           enc               engine            errstr            

gendh             gendsa            genpkey           genrsa            

nseq              ocsp              passwd            pkcs12            

pkcs7             pkcs8             pkey              pkeyparam         

pkeyutl           prime             rand              req               

rsa               rsautl            s_client          s_server          

s_time            sess_id           smime             speed             

spkac             ts                verify            version           

x509              


Message Digest commands (see the `dgst' command for more details)

md2               md4               md5               rmd160            

sha               sha1              


Cipher commands (see the `enc' command for more details)

aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb       

aes-256-cbc       aes-256-ecb       base64            bf                

bf-cbc            bf-cfb            bf-ecb            bf-ofb            

camellia-128-cbc  camellia-128-ecb  camellia-192-cbc  camellia-192-ecb  

camellia-256-cbc  camellia-256-ecb  cast              cast-cbc          

cast5-cbc         cast5-cfb         cast5-ecb         cast5-ofb         

des               des-cbc           des-cfb           des-ecb           

des-ede           des-ede-cbc       des-ede-cfb       des-ede-ofb       

des-ede3          des-ede3-cbc      des-ede3-cfb      des-ede3-ofb      

des-ofb           des3              desx              idea              

idea-cbc          idea-cfb          idea-ecb          idea-ofb          

rc2               rc2-40-cbc        rc2-64-cbc        rc2-cbc           

rc2-cfb           rc2-ecb           rc2-ofb           rc4               

rc4-40            seed              seed-cbc          seed-cfb          

seed-ecb          seed-ofb          zlib              


对称加密:

    工具:gpg,openssl enc

    openssl enc -e -des3 -a -salt -in messages -out messages.cipher  加密一个文件

    openssl enc -d -des3 -a -salt -in messages.cipher -out messages 输入加密时的命令

单项机密:

工具:md5sum,sha1sum,openssl dgst,chsum

#openssl dgst -md5/-sha1  -out /path/to/filename  /path/from/sourchfile


[root@comk tmp]# md5sum nmap.sh

45891ce6197042d633818ebc995c6b7a  nmap.sh

[root@comk tmp]# openssl dgst -md5 nmap.sh 

MD5(nmap.sh)= 45891ce6197042d633818ebc995c6b7a

MAC:消息摘要码,单向加密的一种延伸类应用

    用于实现网络数据传输中保证数据完整性

        机制:CBC-MAC

                    HMAC:使用的是md5或者sha1的算法

                    集群时传送消息时会用到,保证集群中主机的合法性

用户密码:

        openssl  passwd  命令   whatis passwd;man  sslpasswd才能看到解释

        openssl passwd -1 -salt 13589

[root@comk ~]# openssl passwd -1 -salt 880114
Password: 
$1$880114$4qPBmNPziDG0Hss.fr3v31

    两个$中间即880114   salt值

    生成随机数:openssl rand   -base64  4   或者openssl rand -hex 4  生成8位随机数

    openssl passwd -1 -salt `openssl rand -hex 4`  用命令生成随机数

公钥加密:

    算法:RSA,EIGamal

    工具:gpg,openssl rsautl

数字签名:RSA  EIGamal  DSA 

    DSA:digital Gignature Algorithm  只能用于签名不能用于加密

    DSS  数字签名标准


密钥交换:IKE

    算法:公钥加密  DH

    IKE:

        DH:Diffie-hellman  地狱男爵

生成密钥对:gen???   whatis genrsa

        openssl genrsa [-out filename] [-passout arg] [-des] [-des3] [-idea] [-f4] [-3] [-rand file(s)] [-engine id] [numbits]
        openssl genrsa 2048 >mykey   默认644  修改为600权限

        openssl genrsa 2048 -out /tmp/mykey

        (umask 077;openssl genrsa 2048 -out /tmp/mykey)  一条命令获得上面红色的效果

 提出公钥:

        openssl rsa -in /tmp/mykey -pubout 


    

x.509证书,持有者,公钥,,使用期限


B和a通信,则b向a要证书,避免都向CA要证书,使CA称为性能瓶颈

 rpm -ql  openssl  查看安装信息