UNIX SSL認(rèn)證

2018-11-24 15:23 更新

所謂的 SSL/TLS 認(rèn)證是加密的公鑰認(rèn)證,它由一個公用密鑰和私用密鑰組成。證書用來認(rèn)證終端和加密數(shù)據(jù)的。例如,用在 web 服務(wù)器(https)或者郵件服務(wù)器(imaps)。

步驟

  • 我們需要一個證書頒發(fā)機構(gòu)來簽署我們的證書。這一步通常由供應(yīng)商提供,如 Thawte、Verisign等。不過,我們也可以創(chuàng)建我們自己的。

  • 創(chuàng)建一個證書簽發(fā)申請(signing request)。這個申請需要一個已經(jīng)包含所有必需的信息的未簽署證書(公共部分)。該證書申請通常發(fā)送到認(rèn)證供應(yīng)商去簽署。這一步同樣也在本地機器上創(chuàng)建了私鑰。

  • 證書頒發(fā)機構(gòu)簽署證書。

  • 如果有需要,加入證書和密鑰到單個文件來給應(yīng)用程序使用(web 服務(wù)器、郵件服務(wù)器等)。

配置 OpenSSL

我們使用 /usr/local/certs 作為這個例子的目錄或者根據(jù)你的設(shè)置相應(yīng)的編輯 /etc/ssl/openssl.cnf 文件,因此你知道文件將創(chuàng)建在哪里。以下是 openssl.cnf 的相關(guān)部分:

[ CA_default ]
dir             = /usr/local/certs/CA       # 保存所有信息的文件夾
certs           = $dir/certs                # 已生成證書的默認(rèn)保存目錄
crl_dir         = $dir/crl                  # 生成的證書撤銷列表(CRL)的默認(rèn)保存目錄
database        = $dir/index.txt            # 保存已簽發(fā)證書的文本數(shù)據(jù)庫文件

確保所有目錄已經(jīng)創(chuàng)建

# mkdir -p /usr/local/certs/CA
# cd /usr/local/certs/CA
# mkdir certs crl newcerts private
# echo "01" > serial                        # 僅當(dāng) serial 不存在時
# touch index.txt

創(chuàng)建一個認(rèn)證授權(quán)

如果你沒有來自供應(yīng)商的認(rèn)證授權(quán),你必須創(chuàng)建你自己的。如果打算去供應(yīng)商簽署申請,那么這個步驟不是必須的。創(chuàng)建認(rèn)證授權(quán) (CA):

# openssl req -new -x509 -days 730 -config /etc/ssl/openssl.cnf \
-keyout CA/private/cakey.pem -out CA/cacert.pem

創(chuàng)建證書簽發(fā)申請

要創(chuàng)建一個新證書(比如給郵件服務(wù)器或 web 服務(wù)器),首先用其私鑰創(chuàng)建證書申請。如果你的應(yīng)用程序不支持加密的私鑰(比如 UW-IMAP 就不支持),那么就用 -nodes 來禁用加密。

# openssl req -new -keyout newkey.pem -out newreq.pem \
-config /etc/ssl/openssl.cnf
# openssl req -nodes -new -keyout newkey.pem -out newreq.pem \
-config /etc/ssl/openssl.cnf                # 不對這個密鑰加密

簽署證書

該證書申請由 CA 簽發(fā)確認(rèn),這個步驟通常由供應(yīng)商完成。注意:在下面命令中替換 "servername" 成你的服務(wù)器名稱。

# cat newreq.pem newkey.pem > new.pem
# openssl ca -policy policy_anything -out servernamecert.pem \
-config /etc/ssl/openssl.cnf -infiles new.pem
# mv newkey.pem servernamekey.pem

現(xiàn)在,servernamekey.pem 就是私鑰,servernamecert.pem 就為服務(wù)器的證書。

創(chuàng)建聯(lián)合認(rèn)證(united certificate)

IMAP 服務(wù)器想要私鑰和服務(wù)器證書在同一個文件中。通常,這還是比較容易處理的,但是該文件要保證安全! Apache 也可以處理好它。創(chuàng)建一個包含證書和密鑰的文件 servername.pem 。

  • 用文本編輯器打開私鑰文件(servernamekey.pem),并拷貝私鑰到 "servername.pem" 文件中去。

  • 服務(wù)器證書(servernamecert.pem)也做同樣的動作。

最后 servername.pem 文件應(yīng)該看起來像這樣:

-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDutWy+o/XZ/[...]qK5LqQgT3c9dU6fcR+WuSs6aejdEDDqBRQ
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIERzCCA7CgAwIBAgIBBDANB[...]iG9w0BAQQFADCBxTELMAkGA1UEBhMCREUx
-----END CERTIFICATE-----

現(xiàn)在我們的 /usr/local/certs/ 目錄中有了這些;

  • CA/private/cakey.pem (CA 服務(wù)器私鑰)

  • CA/cacert.pem (CA 服務(wù)器公鑰)

  • certs/servernamekey.pem (服務(wù)器私鑰)

  • certs/servernamecert.pem (服務(wù)器已簽署的證書)

  • certs/servername.pem (私鑰和服務(wù)器證書)

要保證私鑰的安全!

查看證書信息

要查看證書信息,只要這么做:

# openssl x509 -text -in servernamecert.pem      # 顯示證書信息
# openssl req -noout -text -in server.csr        # 顯示申請信息
# openssl s_client -connect cb.vu:443            # 檢查 web 服務(wù)器認(rèn)證信息
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號