OpenSSL命令詳解(一)——標準命令
OpenSSL命令分為以下3個部分。
標準命令Standard commands
1. asn1parse:
asn1parse用於解釋用ANS.1語法書寫的語句(ASN一般用於定義語法的構成)
演示命令操作順序:4 -> 5 -> 3 -> 2-> 6 -> 7 ->8
2. ca:
ca用於CA的管理.
用法:
openssl ca [-options]。
2.1) -selfsign 使用對證書請求進行簽名的金鑰對來簽發證書。即"自簽名",這種情況發生在生成證書的客戶端、簽發證書的CA都是同一臺機器(也是我們大多數實驗中的情況),我們可以使用同一個金鑰對來進行"自簽名" 2.2) -in file 需要進行處理的PEM格式的證書 2.3) -out file 處理結束後輸出的證書檔案 2.4) -cert file 用於簽發的根CA證書 2.5) -days arg 指定簽發的證書的有效時間 2.6) -keyfile arg CA的私鑰證書檔案 2.7) -keyform arg CA的根私鑰證書檔案格式: 2.7.1) PEM 2.7.2) ENGINE 2.8) -key arg CA的根私鑰證書檔案的解密密碼(如果加密了的話) 2.9) -config file 配置檔案
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
3. X.509證書籤發請求(CSR)管理
用法:
openssl req [options] outfile
3.1) -inform arg 輸入檔案格式 3.1.1) DER 3.1.2) PEM 3.2) -outform arg 輸出檔案格式 3.2.1) DER 3.2.2) PEM 3.3) -in arg 待處理檔案 3.4) -out arg 待輸出檔案 3.5) -passin 用於簽名待生成的請求證書的私鑰檔案的解密密碼 3.6) -key file 用於簽名待生成的請求證書的私鑰檔案 3.7) -keyform arg 3.7.1) DER 3.7.2) NET 3.7.3) PEM 3.8) -new 新的請求 3.9) -x509 輸出一個X509格式的證書 3.10) -days X509證書的有效時間 3.11) -newkey rsa:bits 生成一個bits長度的RSA私鑰檔案,用於簽發 3.12) -[digest] HASH演算法 3.12.1) md5 3.12.2) sha1 3.12.3) md2 3.12.4) mdc2 3.12.5) md4 3.13) -config file 指定openssl配置檔案 3.14) -text: text顯示格式 example1: 利用CA的RSA金鑰建立一個自簽署的CA證書(X.509結構)
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
example2: 用server.key生成證書籤署請求CSR(這個CSR用於傳送給CA中心等待簽發)
openssl req -new -key server.key -out server.csr
example3: 檢視CSR的細節
openssl req -noout -text -in server.csr
4. genrsa: 生成RSA引數
用法:
openssl genrsa [args] [numbits]
4.1) 對生成的私鑰檔案是否要使用加密演算法進行對稱加密:
4.1.1) -des: CBC模式的DES加密
4.1.2) -des3: CBC模式的3DES加密
4.1.3) -aes128: CBC模式的AES128加密
4.1.4) -aes192: CBC模式的AES192加密
4.1.5) -aes256: CBC模式的AES256加密
4.2) -passout arg: arg為對稱加密(des、3des、aes)的密碼(使用這個引數就省去了console互動提示輸入密碼的環節)
4.3) -out file: 輸出證書私鑰檔案
[numbits]: 金鑰長度
example: 生成一個1024位的RSA私鑰,並用3DES加密(密碼為123456),儲存為server.key檔案
openssl genrsa -out server.key -passout pass:123456 -des3 1024
5. RSA資料管理
用法:
openssl rsa [options] outfile
5.1) -inform arg
輸入金鑰檔案格式:
5.1.1) DER(ASN1)
5.1.2) NET
5.1.3) PEM(base64編碼格式)
5.2) -outform arg
輸出金鑰檔案格式
5.2.1) DER
5.2.2) NET
5.2.3) PEM
5.3) -in arg
待處理金鑰檔案
5.4) -passin arg
輸入這個加密金鑰檔案的解密金鑰(如果在生成這個金鑰檔案的時候,選擇了加密演算法了的話)
5.5) -out arg
待輸出金鑰檔案
5.6) -passout arg
如果希望輸出的金鑰檔案繼續使用加密演算法的話則指定密碼
5.7) -des: CBC模式的DES加密
5.8) -des3: CBC模式的3DES加密
5.9) -aes128: CBC模式的AES128加密
5.10) -aes192: CBC模式的AES192加密
5.11) -aes256: CBC模式的AES256加密
5.12) -text: 以text形式列印金鑰key資料
5.13) -noout: 不列印金鑰key資料
5.14) -pubin: 檢查待處理檔案是否為公鑰檔案
5.15) -pubout: 輸出公鑰檔案
example1: 對私鑰檔案進行解密
openssl rsa -in server.key -passin pass:123456 -out server_nopass.key
example:2: 利用私鑰檔案生成對應的公鑰檔案
openssl rsa -in server.key [-passin pass:123456] -pubout -out server_public.key
6. x509
openssl x509是一個功能很豐富的證書處理工具。可以用來顯示證書的內容,轉換其格式,給CSR簽名等X.509證書的管理工作
用法:
openssl x509 [args]
6.1) -inform arg
待處理X509證書檔案格式
6.1.1) DER
6.1.2) NET
6.1.3) PEM
6.2) -outform arg
待輸出X509證書檔案格式
6.2.1) DER
6.2.2) NET
6.2.3) PEM
6.3) -in arg
待處理X509證書檔案
6.4) -out arg
待輸出X509證書檔案
6.5) -req
表明輸入檔案是一個"請求籤發證書檔案(CSR)",等待進行簽發
6.6) -days arg
表明將要簽發的證書的有效時間
6.7) -CA arg
指定用於簽發請求證書的根CA證書
6.8) -CAform arg
根CA證書格式(預設是PEM)
6.9) -CAkey arg
指定用於簽發請求證書的CA私鑰證書檔案,如果這個option沒有引數輸入,那麼預設認為私有金鑰在CA證書檔案裡有
6.10) -CAkeyform arg
指定根CA私鑰證書檔案格式(預設為PEM格式)
6.11) -CAserial arg
指定序列號檔案(serial number file)
6.12) -CAcreateserial
如果序列號檔案(serial number file)沒有指定,則自動建立它
example1: 轉換DER證書為PEM格式
openssl x509 -in cert.cer -inform DER -outform PEM -out cert.pem
example2: 使用根CA證書對"請求籤發證書"進行簽發,生成x509格式證書
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out serverx509.crt
example3: 打印出證書的內容
openssl x509 -in server.crt -noout -text
證書驗籤:
openssl verify -CAfile demoCA/cacert.pem usercert.crt
7. crl
crl是用於管理CRL列表 .
openssl crl [args]
7.1) -inform arg
輸入檔案的格式
7.1.1) DER(DER編碼的CRL物件)
7.1.2) PEM(預設的格式)(base64編碼的CRL物件)
7.2) -outform arg
指定檔案的輸出格式
7.2.1) DER(DER編碼的CRL物件)
7.2.2) PEM(預設的格式)(base64編碼的CRL物件)
7.3) -text:
以文字格式來列印CRL資訊值。
7.4) -in filename
指定的輸入檔名。預設為標準輸入。
7.5) -out filename
指定的輸出檔名。預設為標準輸出。
7.6) -hash
輸出頒發者資訊值的雜湊值。這一項可用於在檔案中根據頒發者資訊值的雜湊值來查詢CRL物件。
7.7) -fingerprint
列印CRL物件的標識。
7.8) -issuer
輸出頒發者的資訊值。
7.9) -lastupdate
輸出上一次更新的時間。
7.10) -nextupdate
打印出下一次更新的時間。
7.11) -CAfile file
指定CA檔案,用來驗證該CRL物件是否合法。
7.12) -verify
是否驗證證書。
example1: 輸出CRL檔案,包括(頒發者資訊HASH值、上一次更新的時間、下一次更新的時間)
openssl crl -in crl.crl -text -issuer -hash -lastupdate –nextupdate
example2: 將PEM格式的CRL檔案轉換為DER格式
openssl crl -in crl.pem -outform DER -out crl.der
8. crl2pkcs7
用於CRL和PKCS#7之間的轉換
openssl crl2pkcs7 [options] outfile
轉換pem到spc
openssl crl2pkcs7 -nocrl -certfile venus.pem -outform DER -out venus.spc
https://www.openssl.org/docs/apps/crl2pkcs7.html