OpenSSL
是一個開源項目,其組成主要包括一下三個組件:html
openssl
:多用途的命令行工具libcrypto
:加密算法庫libssl
:加密模塊應用庫,實現了ssl及tlsopenssl
能夠實現:祕鑰證書管理、對稱加密和非對稱加密更多簡介和官網。linux
平時咱們使用openssl
最多的莫過於使用指令了,而最爲常見的幾個指令以下:算法
genrsa
生成RSA參數req
x509
rsa
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
Google官方博客宣佈,將在Chrome瀏覽器中逐漸下降SHA-1證書的安全指示。但有意思的是Google.com目前使用的也是SHA-1簽名的證書,但證書將在3個月內過時,Google將從2015年起使用SHA-2簽名的證書。SHA-1算法目前還沒有發現嚴重的弱點,但僞造證書所需費用正愈來愈低。
原有的簡單自簽名證書在chrome裏面很差使了,提示 missing_subjectAltName
missing_subjectAltName問題解決;