如何利用OpenSSL生成證書
阿新 • • 發佈:2018-11-07
此文已由作者趙斌授權網易雲社群釋出。
歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。
一、前言
最近為了測試內容分發網路(Content Delivery Network,簡稱 CDN)新增的新功能,支援HYTTPS安全加速功能,需要對證書的有效性進行驗證,於是乎需要自己生成合法的、非法的、過期的證書。接下來介紹下如何通過OpenSSL生成證書。
二、使用OpenSSL生成證書
建立證書金鑰檔案
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-----即可。
更多網易技術、產品、運營經驗分享請點選。
相關文章:
【推薦】 從加班論客戶端開發中的建模
【推薦】 Message Loop 原理及應用
【推薦】 實現自己的前端模板輕量級框架