1. 程式人生 > >如何利用OpenSSL生成證書

如何利用OpenSSL生成證書

此文已由作者趙斌授權網易雲社群釋出。

歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。

一、前言


最近為了測試內容分發網路(Content Delivery Network,簡稱 CDN)新增的新功能,支援HYTTPS安全加速功能,需要對證書的有效性進行驗證,於是乎需要自己生成合法的、非法的、過期的證書。接下來介紹下如何通過OpenSSL生成證書。


二、使用OpenSSL生成證書


  1. 建立證書金鑰檔案


openssl genrsa -des3 -out ca.key 8192

執行時會提示輸入密碼,此密碼用於加密key檔案(引數des3便是指加密演算法,當然也可以選用其他你認為安全的演算法.),以後每當需讀取此檔案(通過openssl提供的命令或API)都需輸入口令.如果覺得不方便,也可以去除這個口令,但一定要採取其他的保護措施! 去除key檔案口令的命令:


openssl genrsa -out ca.key 8192

2.建立證書請求並自簽署證書 :


openssl req -new -x509 -sha256 -days 365 -key ca.key -out ca.crt -subj "/C=CN/ST=Beijing/L=Beijing/O=Netease/OU=Netease Root CA"各選項(及引數)的意義如下:
req             使用openssl的req子命令  
-new            生成新的證書請求  
-x509           生成自簽名證書  
-days 365      自簽名證書的有效期365天(1年)【僅當使用了 -x509 選項後有效】  
-key ca.key  私鑰檔名指定為ca.key【若為執行前就已有的私鑰檔案且原名不是ca.key,則改名為ca.key;否則新生成的私鑰檔案命名為ca.key】  
-out ca.crt     指定輸出所生成自簽名證書的資訊到檔案,且檔名為ca.crt【建議不要省略】
-subj arg
其中,arg是選項 -subj 的引數,其格式類似於:/type0=value0/type1=value1/type2=... 形式。每一個 /type=value 形式的單元,都對應了一個完整的DN欄位。
DN欄位名 縮寫 說明 填寫要求
Country Name C    證書持有者所在國家 要求填寫國家程式碼,用2個字母表示
State or Province Name ST    證書持有者所在州或省份 填寫全稱,可省略不填
Locality Name L    證書持有者所在城市 可省略不填
Organization Name O    證書持有者所屬組織或公司 可省略不填
Organizational Unit Name OU    證書持有者所屬部門 可省略不填
Common Name CN    證書持有者的通用名 必填
Email Address 證書持有者的通訊郵箱 可省略不填


三、生成過期證書的簡便方法


1.首先將系統的時間修改超前2年;


2.執行(二)中第2步時,設定-days為證書的有效期,例如設定為365;


3.再次將系統時間恢復即可,該證書則為已過期一年。


四、檢視證書


按照(二)或(三)中的方法生成的證書,點選ca.crt,在常規中即可看到該證書都有效期是從XXX到XXX。按照(二)中的方法即生成的為合法證書;按照(三)中的方法即生成的為過期證書;非法證書的生成即隨便輸入,不是按照證書的格式,不是如下格式:-----BEGIN CERTIFICATE-----xxx-----END CERTIFICATE-----即可。



       

免費體驗雲安全(易盾)內容安全、驗證碼等服務

11.1—11.15雲端計算基礎服務全場5折起

更多網易技術、產品、運營經驗分享請點選


相關文章:
【推薦】 從加班論客戶端開發中的建模
【推薦】 Message Loop 原理及應用
【推薦】 實現自己的前端模板輕量級框架