二:產生請求證書。
在openssl中,本部分由req.c實現,不過它實在過於複雜不太利於理解。
證書請求包括3個部分:證書請求資訊,乙個簽名演算法識別符號和乙個對證書請求資訊的數字簽名。證書的請求資訊包括實體的別名、實體的公鑰和一系列有關實體的其他資訊的屬性。構造乙個證書請求包含如下幾個步驟:
1,構造主體資訊值,包含乙個主體別名,乙個主體公鑰和一組可選屬性
當然生成req證書需要乙個申請乙個x509_req物件。
加入主體資訊還必須先申請乙個x509_name物件,然後將資訊先加到這裡結構中,最後把這個結構賦給req。例如新增國家和省份資訊:(nid_countryname為14,nid_stateorprovincename為16)
x509_req *req; x509_name *subj; char *country="**";
x509_name_add_entry_by_nid(subj,14, mbstring_asc,(unsigned char *)country, -1,-1,0);
x509_name_add_entry_by_nid(subj,16,mbstring_asc,(unsigned char *)provinc,-1,-1,0) ;
x509_name_set(&req->req_info->subject, subj);
加入乙個主體公鑰(上小節生成的m_pclientkey)
x509_req_set_pubkey(req, m_pclientkey);
加入一組可選的擴充套件屬性
stack_of(x509_extension) *extlist=sk_x509_extension_new_null();
x509_extension*ext=x509v3_ext_conf(null,null,req_subject_alt_name,value);
生成擴充套件物件
sk_x509_extension_push(extlist,ext);
x509_req_add_extensions(req,extlist)加入擴充套件專案。
2,用主體的私鑰對上面的req進行簽名。在簽名是需要選擇摘要演算法,
evp_md *digest=evp_md5()(選擇md5演算法)
x509_req_sign(req,,m_pclientkey ,digest)
這樣乙份請求證書就形成拉。
三:形成x509證書
由上面的數字證書介紹我們已經知道了證書的構成項,下面我們就只需要一項一項新增即可
申請證書物件
x509 *ptemp=null;
x509 *m_pclientcert;
m_pclientcert = x509_new();
設定版本號
x509_set_version(ptemp, 2)
設定證書序列號,這個sn就是ca中心頒發的第n份證書
asn1_integer_set(x509_get_serialnumber(ptemp),sn)
設定證書開始時間
x509_gmtime_adj(x509_get_notbefore(ptemp),0)
設定證書結束時間
x509_gmtime_adj(x509_get_notafter(ptemp), (long)60*60*24*days)
設定證書的主體名稱,req就是剛剛生成的請求證書
x509_set_subject_name(ptemp, x509_req_get_subject_name(req))
設定證書的公鑰資訊
x509_set_pubkey(ptemp, x509_pubkey_get(req->req_info->pubkey))
設定證書的簽發者資訊,m_pcacert是ca證書
x509_set_issuer_name(ptemp, x509_get_subject_name(m_pcacert))
設定擴充套件專案
x509v3_ctx ctx;
x509v3_set_ctx(&ctx, m_pcacert, m_pclientcert, null, null, 0);
x509_extension *x509_ext = x509_extension_new();
x509_ext = x509v3_ext_conf(null, name,value);
x509_add_ext(m_pclientcert,x509_ext,-1))
設定簽名值
x509_sign(m_pclientcert,m_pcakey,evp_md5());
這樣乙份x509證書就生成了,下面的任務就是對它進行編碼儲存。
i2d_x509_bio(pbio, m_pclientcert) der格式
pem_write_bio_x509(pbio, m_pclientcert) pem格式
製作證書和私鑰
x.503證書的製作和私鑰.jks檔案製作 分兩套環境,linux下製作和windows下製作.1.linux環境下 確保已安裝了openssl,執行的命令如下 openssl req newkey rsa 2048 x509 days 5480 keyout ca syrcb root.pem o...
製作證書的keytool工具用法總結
六 檢視證書 總結 實際生成證書的主要為 1.在jdk目錄下,開啟keytool 然後輸入命令 keytool genkeypair alias tomcat keyalg rsa keystore d tomcat.keystore 將生產一對非對稱金鑰和自我簽名的證書d tomcat.keyst...
利用openssl 庫製作證書以及驗證
rsa證書 ca證書 openssl genrsa out cakey.key 1024 2048 這個命令會生成乙個1024 2048位的金鑰。openssl req new x509 key cakey.key out cacert.pem days 1234 這個命令將用上面生成的金鑰cake...