用Openssl API製作證書

2021-03-31 22:36:11 字數 2397 閱讀 7377

二:產生請求證書。

在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...