1. 程式人生 > >OpenSSL命令詳解(一)——標準命令

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

9. pkcs12:PKCS#12資料的管理

10. pkcs7: PCKS#7資料的管理