自建私有CA

       私有CA

爲啥要自建私有CA,其使用範圍是?
   因爲CA的使用費用很高,另一方面內部通信加密的需要。


我們可以使用openssl工具生成密鑰,創建數字證書,創建私有CA,手動加密解密數據。



如何使用openssl進行創建私有CA? OpenCA也可以構建CA


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那裏簽證書呢?

要用到證書進行安全通信的服務器,需要向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中斷時間間隔;





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章