ca 服務器的搭建 和證書的申請與頒發

CA是證書的簽發機構,它是PKI的核心。CA是負責簽發證書、認證證書、管理已頒發證書的機關。它要制定政策和具體步驟來驗證、識別用戶身份,並對用戶證書進行簽名,以確保證書持有者的身份和公鑰的擁有權,那麼有一個疑問,誰給CA來頒發證書呢,嘿嘿,固然是它本身給本身頒發了。linux

openssl是一款開源的加密工具,在Linux環境下,咱們可以利用它來搭建一個CA來實現證書的發放,能夠用於企業內部使用的加密工具。 算法

加密機制:

   明文加密:      telnet    ftp   pop3  密碼不可靠 ;sendmail   NFS  NIS    信息數據的不可靠; rsh   rcp    驗證的不可靠vim

 

實現安全的機制:
  一、隨機數字生成器(Random Number Generater) /dev/random   系統初始化生成 軟設備: 生成隨機數的字符設備   / dev/urandom--> entropy pool 熵池中生成隨機數,熵池爲空時 採用僞隨機數機制 不安全 通常採用random
   cat /dev/random
  二、單項加密
  •    單項加密:提取數據特徵碼 並不會對數據加密
  •    特徵:    任意輸入,定長輸出
  •    雪崩效應:有一點小的改變就引發巨大的變化
  •    數據不可逆轉

 常見的算法:安全

   md2  md5   mdc2  rmd160   sha  sha1 ---> md5 sha1服務器

 三、對稱加密: DES  3DES  AES  Twofish  RC6併發

 四、非對稱加密:公鑰加密 基於單向函數功能實現,密鑰成對出現dom

 

  加密組件: openssl  gpg(文件加密)

 

  openssl rand 67 對67生成隨機數

 

  openssl rand -base64 67 將二進制轉成

 

  數字簽名:發送方用私鑰加密數據後發給接受方,接受方有對方的公鑰解密

  CA:證書頒發機構 公信力的第三方ide

 

  經過一個例子來深入認識加密是如何實現的 發送方給接受方發信,每種顏色對應一個步驟啦。    

 

其具體步驟流程爲:

 

發送方:函數

  • 一、發送方用單向加密算法計算數據的特徵碼;
  • 二、發送方用本身的私鑰加密這段特徵碼,並附加在數據尾部;
  • 三、發送生成一個對稱密鑰
  • 四、用此對稱密鑰加密數據和加密後特徵碼;
  • 五、發送方用接收方的公鑰加密這個對稱密鑰,附加在密文的尾部,併發送之;

接收方:
工具

  • 一、用本身的私鑰解密加密過的對稱密碼;
  • 二、用密碼解密密文;
  • 三、對發送方的公鑰解密發送方私鑰加密的特徵碼;
  • 四、用一樣的單向加密算法計算出原始數據的特徵碼
  • 五、比較兩段特徵碼;

下面用redhat 開源的openssl來搭建一個CA,並實現證書的頒發

##linux下的ssl是由openssl提供的

  
  
           
  
  
  1. [root@server1 tls]#vim openssl.cnf #ca的配置文檔 
  2. [ CA_default ] 
  3. dir = /etc/pki/CA      #CA存放的路徑 
  4. certs = $dir/certs     #存放簽名的公鑰 
  5. crl_dir = $dir/crl     # 證書過時列表,存放過時證書 
  6. database = $dir/index.txt   # 證書頒發、吊銷的信息 
  7. new_certs_dir = $dir/newcerts  # 證書副本(吊銷憑證) 
  8. certificate = $dir/cacert.pem  #CA公鑰(任何人均可以擁有的) 
  9. serial = $dir/serial # 序列號(每做一次簽名,序列號就增長1) 
  10. crlnumber = $dir/crlnumber #吊銷序列號 
  11. crl = $dir/my-ca.crl #吊銷證書名單列表 
  12. private_key = $dir/private/cakey.pem    # 私鑰 與產生本身私鑰的名字對應 
  13. RANDFILE = $dir/private/.rand # private random number file 
  14. x509_extensions = usr_cert # The extentions to add to the cert 
  15. default_days = 365  # 證書有效期 
  16. default_crl_days30  #crl更新時間 
  17. [ policy_match ] 
  18. countryName = match #國家代碼必須徹底匹配能夠修改成optional 
  19. stateOrProvinceName = match # 
  20. organizationName = match 
  21. organizationalUnitName = optional #optional能夠不同 
  22. commonName = supplied #表明惟一身份,必須不匹配 
  23. emailAddress = optional 
  24. [ req_distinguished_name ] 
  25. countryName = Country Name (2 letter code) 
  26. countryName_default = CN #國家代碼 
  27. countryName_min = 2 
  28. countryName_max = 2 
  29. stateOrProvinceName = State or Province Name (full name) 
  30. stateOrProvinceName_default =henan 
  31. localityName = Locality Name (eg, city) 
  32. localityName_default = zhengzhou #城市 
  33. 0.organizationName = Organization Name (eg, company) 
  34. 0.organizationName_default = Example, Inc. #組織 

##openssl.cnf配置完成

 

  
  
           
  
  
  1. [root@server1 tls]# cd ../CA/ 
  2. [root@server1 CA]# ls 
  3. private 
  4. [root@server1 CA]# mkdir {certs,newcerts,crl} #建立剛纔定義的那幾個目錄 
  5. [root@server1 CA]# ls 
  6. certs crl newcerts private 
  7.  

  
  
           
  
  
  1. [root@server1 CA]# echo 01 > serial ;touch index.txt #分配一個開始序列號並建立index.txt 

開始生成CA中心本身的私鑰

 

  
  
           
  
  
  1. [root@server1 CA]#(umask 077; openssl genrsa –out private/cakey.pem 2048 ) 
  2. Generating RSA private key, 2048 bit long modulus 
  3. ..................+++ 
  4. .........................................................................................................................................+++ 
  5. e is 65537 (0x10001) 
  6. Enter pass phrase for private/cakey.pem:redhat #輸入私鑰密碼 
  7. Verifying - Enter pass phrase for private/cakey.pem:redhat #確認輸入 

經過私鑰來生成公鑰:

  
  
           
  
  
  1. [root@server1 CA]# openssl req -new -x509 -key private/cakey.pem -days 365 -out cacert.pem 
  2. Enter pass phrase for private/cakey.pem: 
  3. You are about to be asked to enter information that will be incorporated 
  4. into your certificate request. 
  5. What you are about to enter is what is called a Distinguished Name or a DN. 
  6. There are quite a few fields but you can leave some blank 
  7. For some fields there will be a default value, 
  8. If you enter '.', the field will be left blank. 
  9. ----- 
  10. Country Name (2 letter code) [CN]: 
  11. State or Province Name (full name) [henan]: 
  12. Locality Name (eg, city) [zhengzhou]: 
  13. Organization Name (eg, company) [Example, Inc.]: 
  14. Organizational Unit Name (eg, section) []: 
  15. Common Name (eg, your name or your server's hostname) []:server1.example.com 
  16. Email Address []: 

CA中心已經搭完了,此時就能夠做爲一個被信任的機構來爲其餘頒發證書了

給httpd服務頒發證書

 一、新建並進入工做目錄

  
  
           
  
  
  1. [root@server1 ~]#     cd /etc/httpd 
  2. [root@server1 httpd]#  mkdir certs  #存放證書信息 
  3. [root@server1 certs]# cd certs 

 二、模擬客戶機生成密鑰

  
  
           
  
  
  1. [root@server1 certs]# openssl genrsa 1024 > httpd.key  
  2. [root@server1 certs]# chmod 400 httpd.key  
 三、生成並向CA提交申請

 

  1. [root@server1 certs]# openssl req -new -key httpd.key -out httpd.csr #後綴名
填寫的信息要與CA保持一致
  四、將CA申請提交給CA服務器
  
  
           
  
  
  1. # scp httpd.csr 192.168.0.1:/tmp 

五、在服務器端192.168.0.21簽署證書
  
  
           
  
  
  1. # cd /tmp 
  2. # openssl ca -in httpd.csr -out  /etc/pki/CA/certs/httpd.crt 
 證書生成之後就能夠直接發給客戶端了 此時證書頒發完畢,

證書申請和頒發沒有留有圖片。有什麼疑問能夠直接留言,相互促進,相互學習!!!

相關文章
相關標籤/搜索