openssl命令行工具:

    众多的子命令实现各种安全加密功能;
    ]# openssl ?
    显示的内容有
        Standard commands(标准命令)
            enc, dgst, ca, req, genrsa, rand, rsa, x509, passwd, ...
        Message Digest commands
            ...
        Cipher commands
            ...
    接下来是一些openssl标准命令的使用:
        使用enc命令加密(对称加密)
            格式:
            openssl enc -ciphername [-in filename] [-out filename] [-e] [-d] [-a/-base64] [-salt]
                -ciphername:加密算法的名称
                -in filename:openssl要读取的文件路径;
                -out filename:加密或解密操作后用于保存结果的文件路径;
                -e:加密操作
                -d:解密操作
                -a/-base64:用纯文本格式进行密文编码;
                -salt:随机加盐;
            示例:
                加密文件:
                    ~]# openssl enc -e -des3 -in anaconda-ks.cfg -a -out anaconda-ks.cfg.encryptfile
                解密文件:
                    ~]# openssl enc -d -des3 -out anaconda-ks.cfg -a -in anaconda-ks.cfg.encryptfile
        使用dgst加密(单向加密)
            示例:
                ~]# openssl dgst -sha1 fstab
        生成随机数命令:rand
                格式:
                openssl rand [-out file] [-rand file(s)] [-base64] [-hex] num
            示例:
                ~]# openssl rand -base64 8
        生成带盐的密码:passwd
                格式:
                openssl passwd -1 -salt SALT_STRING
            示例:
                ~]# openssl passwd -1 -salt 01234567
        公钥加密算法:genrsa
                生成rsa加密算法的私钥;
                格式:
                openssl genrsa [-out filename] [-des] [-des3] [-idea] [-f4] [-3] [numbits]
                出于安全考虑,需要给创建的私钥赋予只有拥有者才能读写其他任何人都不能读写的权限;建议使用下列方法生成私钥:
            示例:
                ~]# (umask 077 ; openssl genrsa -out /tmp/my.key 4096)
                ~]# (umask 077 ; openssl genrsa > /tmp/my.key 4096)
        从以及生成的私钥文件中抽取公钥:rsa
                格式:
                openssl rsa [-in filename] [-out filename] [-pubout]
                    -pubout:抽取公钥
                    -in filename:私钥文件的路径
                    -out filename:公钥文件的路径
            示例:
                        ~]# openssl rsa -in my.key -out mykey.pub -pubout
利用openssl创建一个属于自己管理的CA:
    1.创建CA所在主机的私钥文件;
    2.生成自签证书;
    3.必须为CA提供必须要的目录级文件及文本级文件;
        目录级文件:
            /etc/pki/CA/certs
            /etc/pki/CA/crl
            /etc/pki/CA/newcerts
        文本级文件:
            /etc/pki/CA/serial:保存证书的序列号,一般初始序列号为01;
            /etc/pki/CA/index.txt:证书索引;
            /etc/pki/tls/openssl.cnf:配置文件
创建私有CA的步骤:
        1.创建CA的私钥文件:
            (umask 077 ; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
        2.生成自签证书:
            openssl req命令:
                openssl req [-out filename] [-new] [-key filename] [-x509] [-days n]
        3.完善目录及文本文件结构:
            touch /etc/pki/CA/index.txt
            echo 01 > /etc/pki/CA/serial
    在CA上查看证书内容:
        openssl x509 -in /etc/pki/CA/cacert.pem -noout -serial -subject
    吊销证书:必须在CA上执行;
        1.获取客户端证书对应的序列号:
            openssl x509 -in /etc/pki/CA/certificate -noout -serial
        2.吊销证书:
            openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
            注意:上述命令中的"SERIAL"要换成准备吊销的证书的序列号;
        3.生成吊销证书的吊销索引文件;仅需要第一次吊销证书时执行此操作:
            echo "SERIAL" > /etc/pki/CA/crl/crlnumber
        4.更新证书吊销列表:
            openssl ca -genctl -out /etc/pki/CA/crl/ca.crl
        5.查看CRL:
            openssl crl -in /etc/pki/CA/crl/ca.crl -noout -text