您好,登錄后才能下訂單哦!
OpenSSL常用命令有哪些,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
OpenSSL是一個功能極其強大的命令行工具,可以用來完成公鑰體系(Public Key Infrastructure)及HTTPS相關的很多任務。這個速查手冊整理了常用的OpenSSL命令的使用方法,例如生成私鑰、生成證書簽名請求以及證書格式轉換等。
如果你要從證書頒發機構(CA)獲取一個SSL證書,那首先需要先生成一個證書簽名請求(CSR)。CSR的主要內容是密鑰對中的公鑰,以及一些額外的信息 —— 這些內容都將在簽名時插入到證書里。
當使用openssl生成證書簽名請求時,需要輸入證書的唯一標識信息(Distinguished Name),其中重要的一項是常見名(Common Name),它應當是你要部署證書的主機的域名全稱(FQDN)。
DN中的其他條目用來提供關于你的機構的額外信息。如果你在從證書頒發機構購買SSL證書,那么通常也需要這些額外的字段,例如組織機構(Organization),以便能夠真實地展示你的機構詳情。
下面是CSR的模樣:
Country Name (2 letter code) [AU]:US State or Province Name (full name) [Some-State]:New York Locality Name (eg, city) []:Brooklyn Organization Name (eg, company) [Internet Widgits Pty Ltd]:Example Brooklyn Company Organizational Unit Name (eg, section) []:Technology Division Common Name (e.g. server FQDN or YOUR name) []:examplebrooklyn.com Email Address []:
也可以非交互方式提供生成CSR時要求的信息,任何需要CSR信息的OpenSSL命令都可以添加 -subj
選項。例如:
-subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=examplebrooklyn.com"
這一部分涵蓋與生成CSR(以及私鑰)相關的OpenSSL命令。CSR可以用來從證書頒發機構 請求SSL證書。
記住,你可以交互式的添加CSR信息,也可以使用-subj
選項以非交互的方式添加同樣的信息。
如果你需要使用HTTPS來加固你的web服務器,那么你會向證書頒發機構申請一個證書。這里 生成的CSR可以發送給CA來發行其簽名的SSL證書。
下面的命令創建一個2048位的私鑰(domain.key)以及一個CSR(domain.csr):
openssl req \ -newkey rsa:2048 -nodes -keyout domain.key \ -out domain.csr
這里需要交互地輸入CSR信息,以便完成整個過程。
-newkey rsa:2048
選項聲明了使用RAS算法生成2048位的私鑰。-nodes
選項表明我們不使用密碼加密私鑰。上面隱含了-new
選項,表示要生成一個CSR。
如果你已經有了一個私鑰,那么可以直接用它來向CA申請證書。
下面的命令使用一個已有的私鑰(domain.key)創建一個新的CSR(domain.csr):
openssl req \ -key domain.key \ -new -out domain.csr
-key
選項用來指定已有的私鑰文件,-new
選項表明我們要生成一個CSR。
如果你需要續訂已有的證書,但你和CA都沒有原始的CSR,那可以再次生成CSR。
例如,下面的命令使用已有的證書(domain.crt)和私鑰(domain.key)創建一個新的CSR:
openssl x509 \ -in domain.crt \ -signkey domain.key \ -x509toreq -out domain.csr
-x509toreq
選項表明我們要使用X509證書來制作CSR。
如果你只是想用SSL證書加固你的web服務器,但是并不需要CA簽名的證書,那么一個簡單的方法是自己簽發證書。
一種常見的你可以簽發的類型是自簽名證書 —— 使用自己的私鑰簽發的證書。自簽名證書可以向CA簽發的證書一樣用于加密數據,但是你的用戶將收到提示說明該證書不被其計算機或瀏覽器信息。因此,自簽名證書只能在不需要向用戶證明你的身份時使用,例如非生產環境或者非公開服務。
這一部分的內容涵蓋自簽名證書生成相關的OpenSSL命令。
如果你需要使用HTTPS加固服務器,但不需要CA簽發的證書,就可以使用自簽名證書。
下面的命令創建一個2048位的私鑰(domain.key)以及一個自簽名證書(domain.crt):
openssl req \ -newkey rsa:2048 -nodes -keyout domain.key \ -x509 -days 365 -out domain.crt
-x509
選項指出我們要創建自簽名證書,-days 365
選項聲明該證書的有效期為365天。在上面的命令執行過程中將創建一個臨時CSR來收集與證書相關的CSR信息。
也可以使用已有私鑰來生成自簽名證書。例如,下面的命令使用已有的私鑰(domain.key)生成一個自簽名證書(domain.crt):
openssl req \ -key domain.key \ -new \ -x509 -days 365 -out domain.crt
-new
選項用來啟動CSR信息采集提示。
第三種辦法是使用已有的私鑰和CSR來生成自簽名證書。例如,下面的命令使用私(domain.key)和CSR(domain.csr)創建一個自簽名證書(domain:crt):
openssl x509 \ -signkey domain.key \ -in domain.csr \ -req -days 365 -out domain.crt
證書和CSR文件都采用PEM編碼格式,并不適合人類閱讀。這一部分主要介紹OpenSSL中查看PEM編碼文件的命令。
下面的命令可以查看CSR文件的明文文本并進行驗證:
openssl req -text -noout -verify -in domain.csr
下面的命令可以查看證書文件的明文文本:
openssl x509 -text -noout -in domain.crt
下面的命令用來驗證證書doman.crt是否由證書頒發機構(ca.crt)簽發:
openssl verify -verbose -CAFile ca.crt domain.crt
這部分介紹與私鑰生成和驗證相關的OpenSSL命令。
下面的命令創建一個密碼保護的2048位私鑰domain.key:
openssl genrsa -des3 -out domain.key 2048
上面命令會提示輸入密碼。
下面的命令可以驗證私鑰domain.key是否有效:
openssl rsa -check -in domain.key
如果私鑰是加密的,命令會提示輸入密碼,驗證密碼成功則會顯示不加密的私鑰。
使用下面的命令驗證私鑰domain.key是否與證書domain.crt以及CSR匹配:
openssl rsa -noout -modulus -in domain.key | openssl md5 openssl x509 -noout -modulus -in domain.crt | openssl md5 openssl req -noout -modulus -in domain.csr | openssl md5
如果上面三個命令的輸出一致,那么有極高的概率可以認為私鑰、證書和CSR是相關的。
下面的命令將私鑰unencrypted.key加密,輸出加密后的私鑰encrypted.key:
openssl rsa -des3 \ -in unencrypted.key \ -out encrypted.key
上面命令執行時會提示設置密碼。
下面的命令將加密私鑰encrypted.key解密,并輸出明文結果:
openssl rsa \ -in encrypted.key \ -out decrypted.key
上面命令執行時會提示輸入解密密碼。
我們之前接觸的證書都是X.509格式,采用ASCII的PEM編碼。還有其他一些證書編碼格式與容器類型。OpenSSL可以用來在眾多不同類型之間轉換證書。這一部分主要介紹與證書格式轉換相關的OpenSSL命令。
可以將PEM編碼的證書domain.crt轉換為二進制DER編碼的證書domain.der:
openssl x509 \ -in domain.crt \ -outform der -out domain.der
DER格式通常用于Java。
同樣,可以將DER編碼的證書(domain.der)轉換為PEM編碼(domain.crt):
openssl x509 \ -inform der -in domain.der \ -out domain.crt
可以將PEM證書(domain.crt和ca-chain.crt)添加到一個PKCS7(domain.p7b)文件中:
openssl crl2pkcs7 -nocrl \ -certfile domain.crt \ -certfile ca-chain.crt \ -out domain.p7b
使用-certfile
選項指定要添加到PKCS7中的證書。
PKCS7文件也被稱為P7B,通常用于Java的Keystore和微軟的IIS中保存證書的ASCII文件。
使用下面的命令將PKCS7文件(domain.p7b)轉換為PEM文件:
openssl pkcs7 \ -in domain.p7b \ -print_certs -out domain.crt
如果PKCS7文件中包含多個證書,例如一個普通證書和一個中間CA證書,那么輸出的PEM文件中將包含所有的證書。
可以將私鑰文件(domain.key)和證書文件(domain.crt)組合起來生成PKCS12 文件(domain.pfx):
openssl pkcs12 \ -inkey domain.key \ -in domain.crt \ -export -out domain.pfx
上面的命令將提示你輸入導出密碼,可以留空不填。
PKCS12文件也被稱為PFX文件,通常用于導入/導出微軟IIS中的證書鏈。
也可以將PKCS12文件(domain.pfx)轉換為PEM格式(domain.combined.crt):
openssl pkcs12 \ -in domain.pfx \ -nodes -out domain.combined.crt
注意如果PKCS12文件中包含多個條目,例如證書及其私鑰,那么生成的PEM文件中將包含所有條目。
看完上述內容,你們掌握OpenSSL常用命令有哪些的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。