溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

OpenSSL常用命令有哪些

發(fā)布時(shí)間:2021-11-11 17:50:09 來源:億速云 閱讀:260 作者:柒染 欄目:互聯(lián)網(wǎng)科技

OpenSSL常用命令有哪些,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

OpenSSL是一個(gè)功能極其強(qiáng)大的命令行工具,可以用來完成公鑰體系(Public Key Infrastructure)及HTTPS相關(guān)的很多任務(wù)。這個(gè)速查手冊整理了常用的OpenSSL命令的使用方法,例如生成私鑰、生成證書簽名請求以及證書格式轉(zhuǎn)換等。

序:關(guān)于證書簽名請求(CSR)

如果你要從證書頒發(fā)機(jī)構(gòu)(CA)獲取一個(gè)SSL證書,那首先需要先生成一個(gè)證書簽名請求(CSR)。CSR的主要內(nèi)容是密鑰對中的公鑰,以及一些額外的信息 —— 這些內(nèi)容都將在簽名時(shí)插入到證書里。

當(dāng)使用openssl生成證書簽名請求時(shí),需要輸入證書的唯一標(biāo)識信息(Distinguished Name),其中重要的一項(xiàng)是常見名(Common Name),它應(yīng)當(dāng)是你要部署證書的主機(jī)的域名全稱(FQDN)。

DN中的其他條目用來提供關(guān)于你的機(jī)構(gòu)的額外信息。如果你在從證書頒發(fā)機(jī)構(gòu)購買SSL證書,那么通常也需要這些額外的字段,例如組織機(jī)構(gòu)(Organization),以便能夠真實(shí)地展示你的機(jī)構(gòu)詳情。

下面是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時(shí)要求的信息,任何需要CSR信息的OpenSSL命令都可以添加 -subj選項(xiàng)。例如:

-subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=examplebrooklyn.com"

一、生成證書簽名請求

這一部分涵蓋與生成CSR(以及私鑰)相關(guān)的OpenSSL命令。CSR可以用來從證書頒發(fā)機(jī)構(gòu) 請求SSL證書。

記住,你可以交互式的添加CSR信息,也可以使用-subj選項(xiàng)以非交互的方式添加同樣的信息。

1.1 生成私鑰和CSR

如果你需要使用HTTPS來加固你的web服務(wù)器,那么你會向證書頒發(fā)機(jī)構(gòu)申請一個(gè)證書。這里 生成的CSR可以發(fā)送給CA來發(fā)行其簽名的SSL證書。

下面的命令創(chuàng)建一個(gè)2048位的私鑰(domain.key)以及一個(gè)CSR(domain.csr):

openssl req \
       -newkey rsa:2048 -nodes -keyout domain.key \
       -out domain.csr

這里需要交互地輸入CSR信息,以便完成整個(gè)過程。

-newkey rsa:2048選項(xiàng)聲明了使用RAS算法生成2048位的私鑰。-nodes選項(xiàng)表明我們不使用密碼加密私鑰。上面隱含了-new選項(xiàng),表示要生成一個(gè)CSR。

1.2 使用已有私鑰生成CSR

如果你已經(jīng)有了一個(gè)私鑰,那么可以直接用它來向CA申請證書。

下面的命令使用一個(gè)已有的私鑰(domain.key)創(chuàng)建一個(gè)新的CSR(domain.csr):

openssl req \
       -key domain.key \
       -new -out domain.csr

-key選項(xiàng)用來指定已有的私鑰文件,-new選項(xiàng)表明我們要生成一個(gè)CSR。

1.3 使用已有的證書和私鑰生成CSR

如果你需要續(xù)訂已有的證書,但你和CA都沒有原始的CSR,那可以再次生成CSR。

例如,下面的命令使用已有的證書(domain.crt)和私鑰(domain.key)創(chuàng)建一個(gè)新的CSR:

openssl x509 \
       -in domain.crt \
       -signkey domain.key \
       -x509toreq -out domain.csr

-x509toreq選項(xiàng)表明我們要使用X509證書來制作CSR。

二、生成SSL證書

如果你只是想用SSL證書加固你的web服務(wù)器,但是并不需要CA簽名的證書,那么一個(gè)簡單的方法是自己簽發(fā)證書。

一種常見的你可以簽發(fā)的類型是自簽名證書 —— 使用自己的私鑰簽發(fā)的證書。自簽名證書可以向CA簽發(fā)的證書一樣用于加密數(shù)據(jù),但是你的用戶將收到提示說明該證書不被其計(jì)算機(jī)或?yàn)g覽器信息。因此,自簽名證書只能在不需要向用戶證明你的身份時(shí)使用,例如非生產(chǎn)環(huán)境或者非公開服務(wù)。

這一部分的內(nèi)容涵蓋自簽名證書生成相關(guān)的OpenSSL命令。

2.1 生成自簽名證書

如果你需要使用HTTPS加固服務(wù)器,但不需要CA簽發(fā)的證書,就可以使用自簽名證書。

下面的命令創(chuàng)建一個(gè)2048位的私鑰(domain.key)以及一個(gè)自簽名證書(domain.crt):

openssl req \
       -newkey rsa:2048 -nodes -keyout domain.key \
       -x509 -days 365 -out domain.crt

-x509選項(xiàng)指出我們要?jiǎng)?chuàng)建自簽名證書,-days 365選項(xiàng)聲明該證書的有效期為365天。在上面的命令執(zhí)行過程中將創(chuàng)建一個(gè)臨時(shí)CSR來收集與證書相關(guān)的CSR信息。

2.2 使用已有私鑰生成自簽名證書

也可以使用已有私鑰來生成自簽名證書。例如,下面的命令使用已有的私鑰(domain.key)生成一個(gè)自簽名證書(domain.crt):

openssl req \
       -key domain.key \
       -new \
       -x509 -days 365 -out domain.crt

-new選項(xiàng)用來啟動CSR信息采集提示。

2.3 使用已有的私鑰和CSR生成自簽名證書

第三種辦法是使用已有的私鑰和CSR來生成自簽名證書。例如,下面的命令使用私(domain.key)和CSR(domain.csr)創(chuàng)建一個(gè)自簽名證書(domain:crt):

openssl x509 \
       -signkey domain.key \
       -in domain.csr \
       -req -days 365 -out domain.crt

三、查看證書

證書和CSR文件都采用PEM編碼格式,并不適合人類閱讀。這一部分主要介紹OpenSSL中查看PEM編碼文件的命令。

3.1 查看CSR條目

下面的命令可以查看CSR文件的明文文本并進(jìn)行驗(yàn)證:

openssl req -text -noout -verify -in domain.csr

3.2 查看證書條目

下面的命令可以查看證書文件的明文文本:

openssl x509 -text -noout -in domain.crt

3.3 驗(yàn)證證書是否由CA簽發(fā)

下面的命令用來驗(yàn)證證書doman.crt是否由證書頒發(fā)機(jī)構(gòu)(ca.crt)簽發(fā):

openssl verify -verbose -CAFile ca.crt domain.crt

四、私鑰生成與驗(yàn)證

這部分介紹與私鑰生成和驗(yàn)證相關(guān)的OpenSSL命令。

4.1 創(chuàng)建私鑰

下面的命令創(chuàng)建一個(gè)密碼保護(hù)的2048位私鑰domain.key:

openssl genrsa -des3 -out domain.key 2048

上面命令會提示輸入密碼。

4.2 驗(yàn)證私鑰

下面的命令可以驗(yàn)證私鑰domain.key是否有效:

openssl rsa -check -in domain.key

如果私鑰是加密的,命令會提示輸入密碼,驗(yàn)證密碼成功則會顯示不加密的私鑰。

4.3 驗(yàn)證私鑰與證書和CSR匹配

使用下面的命令驗(yàn)證私鑰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

如果上面三個(gè)命令的輸出一致,那么有極高的概率可以認(rèn)為私鑰、證書和CSR是相關(guān)的。

4.4 加密私鑰

下面的命令將私鑰unencrypted.key加密,輸出加密后的私鑰encrypted.key:

openssl rsa -des3 \
       -in unencrypted.key \
       -out encrypted.key

上面命令執(zhí)行時(shí)會提示設(shè)置密碼。

4.5 解密私鑰

下面的命令將加密私鑰encrypted.key解密,并輸出明文結(jié)果:

openssl rsa \
       -in encrypted.key \
       -out decrypted.key

上面命令執(zhí)行時(shí)會提示輸入解密密碼。

五、證書格式轉(zhuǎn)換

我們之前接觸的證書都是X.509格式,采用ASCII的PEM編碼。還有其他一些證書編碼格式與容器類型。OpenSSL可以用來在眾多不同類型之間轉(zhuǎn)換證書。這一部分主要介紹與證書格式轉(zhuǎn)換相關(guān)的OpenSSL命令。

5.1 PEM轉(zhuǎn)DER

可以將PEM編碼的證書domain.crt轉(zhuǎn)換為二進(jìn)制DER編碼的證書domain.der:

openssl x509 \
       -in domain.crt \
       -outform der -out domain.der

DER格式通常用于Java。

5.2 DER轉(zhuǎn)PEM

同樣,可以將DER編碼的證書(domain.der)轉(zhuǎn)換為PEM編碼(domain.crt):

openssl x509 \
       -inform der -in domain.der \
       -out domain.crt

5.3 PEM轉(zhuǎn)PKCS7

可以將PEM證書(domain.crt和ca-chain.crt)添加到一個(gè)PKCS7(domain.p7b)文件中:

openssl crl2pkcs7 -nocrl \
       -certfile domain.crt \
       -certfile ca-chain.crt \
       -out domain.p7b

使用-certfile選項(xiàng)指定要添加到PKCS7中的證書。

PKCS7文件也被稱為P7B,通常用于Java的Keystore和微軟的IIS中保存證書的ASCII文件。

5.4 PKCS7轉(zhuǎn)換為PEM

使用下面的命令將PKCS7文件(domain.p7b)轉(zhuǎn)換為PEM文件:

openssl pkcs7 \
       -in domain.p7b \
       -print_certs -out domain.crt

如果PKCS7文件中包含多個(gè)證書,例如一個(gè)普通證書和一個(gè)中間CA證書,那么輸出的PEM文件中將包含所有的證書。

5.5 PEM轉(zhuǎn)換為PKCS12

可以將私鑰文件(domain.key)和證書文件(domain.crt)組合起來生成PKCS12 文件(domain.pfx):

openssl pkcs12 \
       -inkey domain.key \
       -in domain.crt \
       -export -out domain.pfx

上面的命令將提示你輸入導(dǎo)出密碼,可以留空不填。

PKCS12文件也被稱為PFX文件,通常用于導(dǎo)入/導(dǎo)出微軟IIS中的證書鏈。

5.6 PKCS12轉(zhuǎn)換為PEM

也可以將PKCS12文件(domain.pfx)轉(zhuǎn)換為PEM格式(domain.combined.crt):

openssl pkcs12 \
       -in domain.pfx \
       -nodes -out domain.combined.crt

注意如果PKCS12文件中包含多個(gè)條目,例如證書及其私鑰,那么生成的PEM文件中將包含所有條目。

看完上述內(nèi)容,你們掌握OpenSSL常用命令有哪些的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI