自建私有CA

       私有CA算法

为啥要自建私有CA,其使用范围是?
   由于CA的使用费用很高,另外一方面内部通讯加密的须要。
数据库


咱们能够使用openssl工具生成密钥,建立数字证书,建立私有CA,手动加密解密数据。安全



如何使用openssl进行建立私有CA? OpenCA也能够构建CA服务器


openssl命令:配置文件:/etc/pki/tls/openssl.cnfdom


构建私有CA方法:ide

      在肯定配置为CA的服务上生成一个自签证书,并为CA提供所须要的目录及文件便可;工具

具体步骤:this

    (1) 生成私钥;加密

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

    (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那里签证书呢?

要用到证书进行安全通讯的服务器,须要向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主机吊销证书

先根据客户提交的serial和subject信息,对比其与本机数据库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






openssl对数据加密


从多子命令,分为三类:

 标准命令

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

单向加密:

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

dgst命令:

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



加密命令(enc子命令)

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

enc命令:

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

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



对称加密:

     工具:openssl  enc,  gpg

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



生成用户密码:工具: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)


    提出公钥: 

    ~]#  openssl  rsa  -in  /PATH/FROM/PRIVATE_KEY_FILE  -pubout


Linux系统上的随机数生成器:

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

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


伪随机数不安全;

       熵池中随机数的来源:

       硬盘IO中断时间间隔;

     键盘IO中断时间间隔;

相关文章
相关标签/搜索