openssl的介紹和使用

openssl簡介

OpenSSL 是一個開源項目,其組成主要包括一下三個組件:html

  1. openssl:多用途的命令行工具
  2. libcrypto:加密算法庫
  3. libssl:加密模塊應用庫,實現了ssl及tls

openssl能夠實現:祕鑰證書管理、對稱加密和非對稱加密更多簡介和官網。linux

指令

平時咱們使用openssl最多的莫過於使用指令了,而最爲常見的幾個指令以下:算法

  1. genrsa 生成RSA參數
  2. req
  3. x509
  4. rsa
  5. ca

genrsa簡介

平時主要用來生成私鑰,選擇使用的算法、對稱加密密碼和私鑰長度來生成私鑰。chrome

基本用法:瀏覽器

openssl genrsa [args] [numbits]

其中常見的參數:【更多參數查看:openssl genrsa -help】安全

args1 對生成的私鑰文件是否要使用加密算法進行對稱加密: 
    -des : CBC模式的DES加密 
    -des3 : CBC模式的3DES加密 
    -aes128 : CBC模式的AES128加密 
    -aes192 : CBC模式的AES192加密 
    -aes256 : CBC模式的AES256加密 
args2 對稱加密密碼
    -passout passwords
    其中passwords爲對稱加密(des、3des、aes)的密碼(使用這個參數就省去了console交互提示輸入密碼的環節) 
args3 輸出文件
    -out file : 輸出證書私鑰文件 
[numbits]: 密鑰長度,理解爲私鑰長度

生成一個2048位的RSA私鑰,並用des3加密(密碼爲123456),保存爲server.key文件工具

openssl genrsa -des3 -passout pass:123456 -out server.key   1024 
// -des3 是第一個參數args1;  
// -passout pass:123456 是第二個參數寫法 args2
// -out server.key 第三個參數args3;   
// 2048 最後一個[numbits]參數

req

req的基本功能主要有兩個:生成證書請求和生成自簽名證書,固然這並非其所有功能,可是這兩個最爲常見;編碼

常見使用方法:加密

openssl req [args] outfile

主要參數:【更多參數查看:openssl req -help】.net

args1 是輸入輸入文件格式:-inform arg
    -inform DER 使用輸入文件格式爲DER
    -inform PEM 使用輸入文件格式爲PEM
args2 輸出文件格式:-outform arg   
    -outform DER 使用輸出文件格式爲DER
    -outform PEM 使用輸出文件格式爲PEM
args3 是待處理文件 
    -in inputfilepath
args4 待輸出文件
    -out outputfilepath
args5 用於簽名待生成的請求證書的私鑰文件的解密密碼
    -passin passwords       
args6 用於簽名待生成的請求證書的私鑰文件
    -key file
args7指定輸入密鑰的編碼格式 -keyform arg  
    -keyform  DER
    -keyform  NET
     -keyform  PEM
args8 生成新的證書請求 
    -new

args9輸出一個X509格式的證書,簽名證書時使用 
     -x509          
args10使用X509簽名證書的有效時間  
    -days  // -days 3650 有效期10年
 
args11生成一個bits長度的RSA私鑰文件,用於簽發【生成私鑰、並生成自簽名證書】 
    -newkey rsa:bits 
  
args12設置HASH算法-[digest]【生成私鑰指定的hash摘要算法】
    -md5
    -sha1  // 高版本瀏覽器開始不信任這種算法
    -md2
    -mdc2
    -md4
args13指定openssl配置文件,不少內容不容易經過參數配置,能夠指定配置文件
    -config filepath   
args14 顯示格式txt【用於查看證書、私鑰信息】
    -text

使用的案例:利用私鑰生成證書請求csr

openssl req -new -key server.key -out server.csr

使用案例:利用私鑰生成自簽名證書

openssl req -new -x509 -days 3650 -key ca.key -out ca.crt

x509

x509是一個功能很豐富的證書處理工具。能夠用來顯示證書的內容,轉換其格式,給CSR簽名等X.509證書的管理工做;

用法以下:

openssl x509 [args]

參數以下:【更多參數查看:openssl x509 -help】

args1 是輸入輸入文件格式:-inform arg
    -inform DER 使用輸入文件格式爲DER
    -inform PEM 使用輸入文件格式爲PEM
args2 輸出文件格式:-outform arg   
    -outform DER 使用輸出文件格式爲DER
    -outform PEM 使用輸出文件格式爲PEM
args3 是待處理X509證書文件 
    -in inputfilepath
args4 待輸出X509證書文件
    -out outputfilepath
args5代表輸入文件是一個"請求籤發證書文件(CSR)",等待進行簽發
    -req            
args6簽名證書的有效時間  
    -days  // -days 3650 有效期10年      
args7 指定用於簽發請求證書的根CA證書 
    -CA arg 
args8 根CA證書格式(默認是PEM)     
    -CAform arg     
args9 指定用於簽發請求證書的CA私鑰證書文件    
    -CAkey arg      
args10 指定根CA私鑰證書文件格式(默認爲PEM格式)
    -CAkeyform arg  
args11 指定序列號文件(serial number file)    
    -CAserial arg   
args12 若是序列號文件(serial number file)沒有指定,則自動建立它 
    -CAcreateserial 
args13設置HASH算法-[digest]【生成私鑰指定的hash摘要算法】
    -md5
    -sha1  // 高版本瀏覽器開始不信任這種算法
    -md2
    -mdc2
    -md4

使用實例: 使用根CA證書[ca.crt]和私鑰[ca.key]對"請求籤發證書"[server.csr]進行簽發,生成x509格式證書

openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out serverx509.crt

使用實例:

rsa

ca

自簽名過程

chrome自簽名證書問題

hash/摘要算法sha1的不安全性

爲何Google急着殺死加密算法SHA-1;

Google官方博客宣佈,將在Chrome瀏覽器中逐漸下降SHA-1證書的安全指示。但有意思的是Google.com目前使用的也是SHA-1簽名的證書,但證書將在3個月內過時,Google將從2015年起使用SHA-2簽名的證書。SHA-1算法目前還沒有發現嚴重的弱點,但僞造證書所需費用正愈來愈低。

chrome提示缺失subjectAltName問題

原有的簡單自簽名證書在chrome裏面很差使了,提示 missing_subjectAltName
missing_subjectAltName問題解決;

參考1:openssl詳解
參考3:openssl介紹
參考2:自簽名證書實踐

相關文章
相關標籤/搜索