1. 程式人生 > >openssl的應用及創建CA

openssl的應用及創建CA

網絡運維

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

openssl的應用及創建CA