openssl genrsa -out root.key 2048
也可以是pem文件,也可為了區分這是私鑰而改用key後綴名,內容如下:
查看詳細解析:包含兩個大素數和兩個指數和壹個系數
openssl rsa -in root.key -text
可通過命令提取公鑰:
openssl rsa -pubout -in root.key
openssl req -new -out root-req.csr -key root.key -keyform PEM
-keyform PEM:證書有pem和der格式之分,前者文本,多用於java和windows服務器,後者二進制
CSR是Certificate Signing Request的英文縮寫,即證書請求文件
openssl x509 -req -in root-req.csr -out root-cert.cer -signkey root.key -CAcreateserial -days 365
-CAcreateserial ,創建證書序列號,使用此選項,當CA序列號文件不存在時將被創建:它將包含序列號“02”,正在簽名的證書將具有1作為其序列號。通常如果指定了-CA選項並且序列號文件不存在,則會出現錯誤。
-days 據說3650天有時候會意外導致證書驗證失敗,沒遇到過
此處可有pem、crt、cer多種輸出格式,其實內容都壹樣,來試壹下:
每次生成的證書都不壹樣,但是未發現不同後綴名下的證書格式不同。
我的理解:
pem是最基本的編碼格式,der也相同。
CRT文件是由第三方證書頒發機構(例如VeriSign或DigiCert)提供和生成的安全文件,ASCII編碼格式。
cer是crt的微軟形式。
為了統壹,全使用cer格式。
可選擇將證書和私鑰導入密鑰庫,通常用p12和jks( Java Key Store)格式:
openssl pkcs12 -export -in root-cert.cer -inkey root.key -out root.p12 -name "lab"
需要加密保護, -name 設置別名
然後可選擇使用keytool將p12轉為jks格式,此處就不做轉換了。
步驟基本相同
步驟基本相同
openssl genrsa -out server-key.key 2048
openssl req -new -out server-req.csr -key server-key.key -keyform PEM
openssl x509 -req -in server-req.csr -out server-cert.cer -CA F:\CERT\mycert\ test\openssl\win\root\root-cert.cer -CAkey F:\CERT\mycert\test\openssl\win\root\root.key -CAcreateserial -days 360
openssl pkcs12 -export -in server-cert.cer -inkey server-key.key -out server. p12 -name "lab-server"
運行環境要包含完整證書鏈。需要將證書鏈放到系統可信目錄下。
為證書綁定ip,只能通過config文件,
文件如下可將常用參數寫入,生成請求文件時直接enter即可:
使用配置文件時在生成請求文件和簽發證書時的參數不同:
生成請求文件:
openssl req -new -out server-req1.csr -key server-key.key -keyform PEM -extensions v3_req -config openssl. cnf
簽發證書:
openssl x509 -req -in server-req1.csr -out server-cert1.cer -CA F:\CERT\mycert\test\openssl\win\root\root- cert.cer -CAkey F:\CERT\mycert\test\openssl\win\root\root.key -CAcreateserial -days 360 -extensions v3_req -extfile openssl.cnf
默認證書鏈長度為2,使用中間ca簽發時,中間ca的生成需要在配置文件中加修改長度參數:
[ v3_ca ]
basicConstraints = CA:true,pathlen:3
Note:
參考:
OpenSSL主配置文件openssl.cnf
利用OpenSSL創建證書鏈並應用於IIS7
openssl系列文章: blogs.com/f-ck-need-u/p/7048359.html