公開金鑰和私密金鑰通常是成對出現的,有了公開金鑰那就存在對應的私密金鑰,通常OpenSSL,公開金鑰是很容易從私密金鑰中得到的,因而我們要建立認證,那我們首先要做的就是建立私密金鑰。
1、使用OpenSSL產生私密金鑰
常用的產生演算法有RSA及DSA,RSA產生的私密金鑰可以用來加密以及簽名,而DSA產生的私密金鑰只可以用來簽名
1.1)、RSA演算法產生key的樣本
openssl genrsa -des3 -out privkey.pem 2048
genrsa:指定了產生了演算法使用RSA
-desc:表示產生的key是有密碼保護的(註:如果是將產生的key與server的認證一起使用,最好不要求輸入密碼,就是不要這個參數,否則其它人就會在請求的時候每次都要求輸入密碼)
-out:後面的參數表示產生的key的輸入檔案
2048:表示的是產生key的大小,單為位元組(bits)
1.2)、DSA演算法產生key的樣本
根據DSA演算法產生Key需要兩步:
1.2.1)、第一步是產生用於產生Key的參數:
openssl dsaparam -out dsaparam.pem 2048
1.2.2)、根據產生的參數產生Key:
openssl gendsa -des3 -out privkey.pem dsaparam.pem
詳細參見:http://www.openssl.org/docs/HOWTO/keys.txt
2、使用OpenSSL建立認證申請及自我簽署憑證
在第1步中,我們已經建立好了私密金鑰,這個時候我們就可以使用建立好的private.pem來建立認證申請及自我簽署憑證。
2.1) 建立認證申請
openssl req -new -key privkey.pem -out cert.csr
使用上面的命令就會建立一個認證申請,這裡我們會要求輸入國家、組織、姓名等資訊,但是不會要求輸入認證有效天數,因為認證有效天數是CA認證中心給我們的;然後我們會把這個產生好的cert.csr(Certificate Signing Request (CSR):認證簽名申請)發給CA認證中心。
CA認證中心通過後,會反饋(通常是郵件)回來認證的資訊,再匯入即可。
關於匯出CSR以及匯入CA認證資訊,可以參看文檔:http://docs.oracle.com/javase/1.4.2/docs/tooldocs/windows/keytool.html
2.2) 建立自簽名的認證
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095
如果不需要第三方授權,或者是要建立一個用於測試的授權,我們就可以這樣操作。後面的參數"-days 1095"表示授權天數為1095天。
詳細參見:http://www.openssl.org/docs/HOWTO/certificates.txt