- Creating Certificate
- 產生Self-Sigh Root CA 憑證中心
- 產生Server的Private key
- 使用Server的Certificate Request(csr)+CA的Private Key(簽名)來產生Server的Public Key
- 產生Client的Private key
- 使用Client的Certificate Request(csr)+CA的Private Key(簽名)來產生Client的Public Key
- /usr/lib/ssl/misc/
- /usr/lcoal/ssl/misc
- RootCA
- CA.pl -newca
- /usr/local/ssl/misc/demoCA
- cacert.pem <-- CA的public key
- private <-- CA的private key所在的資料夾
- crl <-- Certificate Rovoke List (註銷的憑證清單目錄)
- newcerts <-- CA所簽發過的憑證
- Server Key/Certificate
- CA.pl -newreq
- /usr/loca/ssl/misc/
- newkey.pem <-- Server的Private Key
- newcsr.pem <-- Server的Certificate Request
- CA.pl -sign
- newcert.pem <--- Server的public key
- Client Key/Certificate
- CaPuk.pem (CA的Public Key,由cacert.pem改命名而來)
- SrvPrK.pem(Server的Private Key由產生Server的憑證過程時,將newkey.pem改名而來)
- SrvPuK.pem(Server的Public Key由產生Server的憑證過程時,將newcert.pem改名而來)
- CliPrK.pem(Client的Private Key由產生Client的憑證過程時,將newkey.pem改名而來)
- CliPuK.pem(Client的Public Key由產生Client的憑證過程時,將newcert.pem改名而來)
- openssl genrsa -des3 -out ca.key 4096
- openssl req -new -x509 -days 365 -key ca.key -out ca.crt
- openssl genrsa -des3 -out server.key 4096
- openssl req -new -key server.key -out server.csr
- openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out serve
- openssl genrsa -des3 -out client.key 4096
- openssl req -new -key client.key -out client.csr
- openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out serve
建立憑證是OpenSSL Programming裡的一項重要的前置工作,這裡我介紹使用CA.pl來製做Server跟Client的憑證。
最簡易的方式就是這五個步驟(如同圖上由CA.pl連出來的五條線)
概略的了解這樣一個製作過程後,我以ubuntu為例來製作Certificate,如果你是透過apt-get來安裝openssl的話,你的CA.pl的路徑如下:
如果你是自行安裝OpenSSL,且沒有設定路徑的話,那你的CA.pl會在這裡
產生RootCA,請用以下指令
接著他會要你設定一組密碼給CA。再來你就依照螢幕指示輸入相關憑證訊息即可,要注意的是最後他會問你要不要設定Extra attributes,你就直接按Enter跳過。
產生完後在你的openssl資料夾下,例如:
裡面就會有分別以下目錄與資料
而一般OpenSSL Programming你會先用到的cacert.pem,其餘的之後使用到再說。如果你沒有要建立,ChildCA,那麼CA的建立就完成了(別忘了你的CA的密碼,之後簽發時要使用到)。
產生Server的Private Key請輸入
接著他會要你設定一組密碼給Server的Private key使用,接著你就按照螢幕上的指示去設定即可,最後的Extra attributes,你也直接按Enter跳過即可。
產生完後會在你的openssl資料夾,例如
裡面會出現如下檔案:
有了Private Key和csr之後,我們要再建立Server的Public Key,輸入下面的指令
這時你就要輸入CA的密碼了,其餘皆按照螢幕指示操作即可,產生完後也會在剛剛那個目錄下多了一個檔案:
如此一來Server的Public & Private Key都產生好了,你可以把newcsr.pem刪除,然後把newkey.pem, newcert.pem重新命名完後移至別的資料夾裡保存。
Client的Key/Certificate產生方式跟Server一模一樣,因為不管你的憑證是要給Server還是Client,對rootCA而言,這些都是他的子層級,沒有任何差別。
總結一下,產生完後你會有以下五個Programming必備的檔案
CaPuK.pem, SrvPuK.pem, SrvPrK.pem, CliPuK.pem, CliPrK.pem這五個檔案好好保存,在下一篇[SSH/SSL] OpenSSL Programing : Connection裡會用到。
#關於Windows用戶如果無法使用CA.pl的使用者,你可以使用傳統建立憑證的指令來產生(先切換到openssl.exe所在的目錄底下,一般沒有設定的話會在c:\usr\local\ssl\bin):
RootCA:
Server:
Client:
雖然用傳統的方式要多打一些指令,但是同時你也可以發現你有比較多的參數可以設定,像是密碼的位元數,憑證的期限,以及加密的規格,再者透過上面的指令你更能了解憑證產生以及簽署的關聯。