1. 程式人生 > >Weblogic HTTPS SSL證書製作(自己使用openssl來製作CA證書和伺服器證書,自己充當CA的角色)

Weblogic HTTPS SSL證書製作(自己使用openssl來製作CA證書和伺服器證書,自己充當CA的角色)

一、生成CA證書
1、建立私鑰
openssl genrsa -out /home/ca/ca-key.pem 1024
2、建立證書請求
openssl req -new -out /home/ca/ca-req.csr -key /home/ca-key.pem
3、自簽名證書
1】 openssl x509 -req -in /home/ca/ca-req.csr -out /home/ca-cert.pem -signkey /home/ca/ca-key.pem -days 3650
2】 生成ca-cert.cer證書,使用者客戶端匯入
openssl x509 -req -in /home/ca/ca-req.csr -out /home/ca/ca-cert.cer -signkey /home/ca/ca-key.pem -days 3650

二、製作伺服器證書

通過keytool工具產生祕鑰、及證書請求檔案,然後使用openssl上一步產生的ca根證書對證書請求進行簽名
1、生成祕鑰對
keytool -genkey -keyalg RSA -keysize 1024 -validity 3650 -dname "CN=ai, OU=中能新能,O=spdb, L=北京, ST=北京, C=CN" -alias ecsr_key -keypass sgd123 -keystore /home/ca/ecsr.jks -storepass sgd123

CN=(名字與姓氏), OU=(組織單位名稱), O=(組織名稱), L=(城市或區域名稱),ST=(州或省份名稱), C=(單位的兩字母國家程式碼)
2、生成證書請求
keytool -certreq -alias ecsr -sigalg MD5withRSA -file /home/ca/ecsr-req.csr -keypass sgd123 -keystore /home/ca/ecsr.jks -storepass sgd123
3、簽名——根據證書請求,生成伺服器證書
openssl x509 -req -in /home/ecsr-req.csr -out /home/ca/ecsr-cret.pem -CA home/ca/ca-cert.pem -CAkey /home/ca/ca-key.pem -days 3650 -set_serial 1

三、向keystore中匯入證書

1、匯入CA證書
keytool -import -v -trustcacerts -keypass sgd123 -storepass sgd123 -alias root -file /home/ca/ca-cert.pem -keystore /home/ca/ecsr.jks 
2、匯入伺服器證書
keytool -import -v -trustcacerts -storepass sgd123 -alias ecsr -file /home/ca/ecsr-cret.pem -keystore /home/ca/ecsr.jks


四、檢視keystore檔案內容
keytool -list -keystore /home/ca/ecsr.jks


五、相關名詞

SSL:
secure socate layer 
OpenSSL:
SSL的一個實現,SSL只是一種規範
X.509:
一種證書標準,主要定義了證書中應該包含哪些內容。
有兩種編碼格式:
PEM:
privacy Enhanced Mail,以“----BEGIN……”開頭“————END……”結尾,內容是BASE64編碼
檢視方式:openssl x509 -in certificate -text -noout
DER:
Distinguished Encoding Rules,開啟看是二進位制格式,不可讀
檢視方式: openssl x509 -in certificate.der -inform der -text -noout
副檔名 
CRT:
證書的意思,常見於*NIX系統,有可能是PEM編碼,也有可能是DER編碼
CER:
證書的意思,常見於Windows系統,可能是PEM編碼,也可能是DER編碼
KEY:
通常用來存放一個公鑰或者私鑰,並非X.509證書,編碼,可能是PEM,也可能是DER.
檢視KEY:openssl rsa -in mykey.key -text -noout
CSR:
Certificate Signing Request,即證書籤名請求.這個並不是證書,而是向權威證書頒發機構獲得簽名證書的申請,其核心內容是一個公鑰(當然還附帶了一些別的資訊),在生成這個申請的時候,同時也會生成一個私鑰,私鑰要自己保管好
檢視的辦法:openssl req -noout -text -in my.csr (如果是DER格式的話照舊加上-inform der)
PFX/P12:
predecessor of PKCS#12,對*nix伺服器來說,一般CRT和KEY是分開存放在不同檔案中的,但Windows的IIS則將它們存在一個PFX檔案中,(因此這個檔案包含了證書及私`鑰)這樣會不會不安全?應該不會,PFX通常會有一個"提取密碼",你想把裡面的東西讀取出來的話,它就要求你提供提取密碼,PFX使用的時DER編碼.
把PFX轉換為PEM編碼:
openssl pkcs12 -in for-iis.pfx -out for-iis.pem -nodes
這個時候會提示你輸入提取程式碼. for-iis.pem就是可讀的文字.
生成pfx的命令:
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
其中CACert.crt是CA(權威證書頒發機構)的根證書,有的話也通過-certfile引數一起帶進去.這麼看來,PFX其實是個證書金鑰庫.
JKS:
即Java Key Storage,這是Java的專利,跟OpenSSL關係不大,利用Java的一個叫"keytool"的工具,可以將PFX轉為JKS,當然了,keytool也能直接生成JKS.