1. 程式人生 > >ssl證書的生成與簽名

ssl證書的生成與簽名

一些概念

KEY : 私鑰檔案,決定ssl安全的基礎
CSR : 證書請求檔案,包含公鑰和證書資訊
CA : 中級證書頒發機構,一般是可信的第三方,CA證書會驗證公鑰是否被認證
root CA:通過它的私鑰對中級機構提交的CSR進行了簽名

申請ssl證書需要用到openssl,linux系統中預設會安裝,手動安裝openssl:

yum install -y openssl openssl-devel

一.生成私鑰

私鑰是SSL安全性的基礎,使用RSA演算法生成,只有證書申請者持有,即使CA也沒有對私鑰的訪問許可權,應妥善保管。私鑰長度決定其安全性,2009年768位RSA已被破解,1024位RSA短期內是安全的,但隨著計算機越來越快,已不足以抵禦攻擊,為了安全起見應儘量使用2048位RSA,生成2048位私鑰:

openssl genrsa -out 52os.net.key 2048

如果對安全性要求較高,可以用密碼加密金鑰檔案,每次讀取金鑰都需輸入密碼:

openssl genrsa -des3 -out 52os.net.key 2048

二.生成CSR

證書籤名請求檔案(CSR)中包含了公鑰和證書的詳細資訊,將CSR傳送給CA認證後就會得到數字證書或證書鏈,生成CSR檔案:

openssl req -new -sha256 -key 52os.net.key -out 52os.net.csr

按照提示輸入:國家、省份、城市、組織名、部門、公共名稱、郵件地址等,最後的extra資訊不要填寫,個人使用者也可以使用預設或留空,只需注意‘Common Name’是要使用ssl證書的域名,根據實際情況,可以寫單域名,多個域名,或使用‘*’通配域名
驗證CSR檔案資訊:

openssl req -noout -text -in  52os.net.csr

確認資訊正確就可以提交給ca進行認證,CA會根據你的CSR檔案進行簽名,之後頒發數字證書,該數字證書和私鑰就可以部署到伺服器了;通常ca認證需付費,普通ssl證書不貴,也有一些提供免費的證書的ca,如startssl、Let's Encrypt等

三.自簽名

在某些情況下,如內網https的應用,不需要付費使用第三方簽名,此時就可以使用自簽名證書。自簽名分兩種:

  1. 使用自己的私鑰簽發自己的csr生成證書,也可以直接生成私鑰和證書
  2. 生成ca,使用ca簽發

生成ca的好處是:客戶只要手動信任該ca一次,即可信任該ca簽發的所有證書,不需要為每個證書新增信任

3.1 使用自簽名

使用上面生成的私鑰簽發證書:

openssl x509 -req -days 365 -in 52os.net.csr -extensions v3_ca -signkey  52os.net.key  -out 52os.net365.crt

或者直接生成私鑰和證書:

openssl  req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout 52os.net.key -out 52os.net.crt

可以使用chrome瀏覽器匯出證書並安裝到windows信任證書中,安裝後瀏覽器位址列的https就會變成綠色。匯出方法:訪問https網站,點選位址列上有紅色叉的鎖型圖示,點選詳細資訊,點選檢視證書,在彈出的證書視窗中點選詳細資訊選項卡,點選複製到檔案,之後按證書匯出嚮導的提示即可匯出

3.2 使用ca簽名

生成 CA:

openssl genrsa -out CA.key 2048
openssl req -new -x509 -key CA.key -out CA.cer -days 36500 -subj /CN='52os CA'

使用ca簽發證書:

openssl x509 -req -in 52os.net.csr -extensions v3_usr -CA CA.cer  -CAkey CA.key  -CAcreateserial -out 52os.net.crt

為了更好的相容瀏覽器,還需:

cat CA.cer >> 52os.net.crt

客戶端手動信任CA.cer即可,windows下可以雙擊安裝