OpenSSL--Window生成证书实战
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
? ? ? ? ? ? ? ? ? ?Windows下使用OpenSSL生成自簽證書(親測(cè))
? ? ?????一,前言
????????? ? ????經(jīng)常寫博客的小伙伴兒都知道,大家一般在前言里面會(huì)提到為什么寫這篇博客,而我這篇博客
????????主要是探討OpenSSL自簽名證書,用于對(duì)安全性要求比較高的商業(yè)活動(dòng)。。
? ??????二,探討前景:
????????????????生成一對(duì) RSA 鑰匙,公鑰采用 X。509 進(jìn)行加密,私鑰采用 PKCS8 進(jìn)行加密, 字節(jié)長(zhǎng)度為
????????1024
? ? ????三,準(zhǔn)備工作
????????????????1,下載 OpenSSL 在 window 7 下的安裝包,可以從我網(wǎng)盤下載,如果下載地址失效了,
????????大家有需要可以給我留言,我非常相信大家的找資源能力,但是我怕大家下載版本有問(wèn)題后,
????????按照我的方法不行,我怕被打!哈哈?https://yun.baidu.com/s/1gfPmtdL
??????????? ????2,下載 OpenSSL 執(zhí)行命令時(shí)需要提供的配置文,
????????????????參考我的網(wǎng)盤?https://yun.baidu.com/s/1bo0bHMn
? ? ????四,開(kāi)戰(zhàn)
????????????????1,執(zhí)行 OpenSSL 的安裝程序,例如我安裝在?D:\MySoftware\OpenSSL-Win64
????????????????2,設(shè)置環(huán)境變量
????????????????????????OPENSSL_HOME =?D:\MySoftware\OpenSSL-Win64
????????????????????????(注意:這里你需要把地址替換你安裝文件夾)
??????????????????????Path = Path + ; + % + OPENSSL_HOME + % + \bin + ;
????????????????????????(在配環(huán)境變量時(shí)一定要注意最后一個(gè) ; )
????????????????3,創(chuàng)建一個(gè)你將用來(lái)創(chuàng)建證書的目錄,例如我的是?F:\Test
????????????????4,文件和目錄補(bǔ)齊(如果不補(bǔ)齊在自簽證書時(shí)會(huì)報(bào)找不到文件的錯(cuò))
?????????????????????在你創(chuàng)建證書的目錄下,手動(dòng)創(chuàng)建如下文件(文件作用附加在文件名后面)
??????????????????????index.txt ?OpenSSL在創(chuàng)建自簽證書時(shí)會(huì)向該文件里寫下索引
????????????????????? database.txt ?OpenSSL會(huì)模擬數(shù)據(jù)庫(kù)將一些敏感信息寫在該文件里
???????????????????? ?serial.txt ?創(chuàng)建該文件后,請(qǐng)編輯在第一行寫下 01
????????????????????? certs 文件夾,目前沒(méi)什么用,僅僅只是我配置文件這樣寫
???????????????? ?????注意: 這里提到的所有文件必須補(bǔ)齊,并且文件名不得更改 !
????????????????????? 將下載下來(lái)的 openssl.conf 文件拷貝到改目錄下
????????????????5,生成證書開(kāi)始(在此過(guò)程中,我們假設(shè)自己就是專業(yè)的頒發(fā)證書的機(jī)構(gòu) CA)
????????????????????a,生成 CA 根證書,做簽名使用的,因?yàn)槲覀兪亲约航o自己簽名嘛!
????????????????????????? ? 生成?CA?根證書私鑰
?????????????????????????????????? genrsa? ? 表示采用RSA算法生成根證書私鑰
????????????????????????????????? ?-des3? ? ??表示使用3DES給根證書私鑰加密
????????????????????????????????? ?1024????? ?表示根證書私鑰的長(zhǎng)度,建議使用2048,越長(zhǎng)越安全
???????????????????? ? ? ??openssl genrsa -des3 -out root.key 1024
????????????????????這個(gè)時(shí)候會(huì)讓你輸入兩次根證書的密碼,根證書嘛肯定是要保密的
????????????????????
? ? ? ? ? ? ? ??????b-1,生成根證書簽名請(qǐng)求文件 .csr,如果你的根證書需要?jiǎng)e的簽名機(jī)構(gòu)來(lái)簽名,
????????你就拿這個(gè)簽名請(qǐng)求文件給他,讓他們幫你簽名,簽名完后,他們會(huì)返回你一個(gè) .crt 的證書,
????????如果你是這樣的做的,那你可以跳過(guò) 接下來(lái)的 c 步驟
????????????????? ? ?? ? openssl req -new ?-key root.key -out root.csr
????????????????????? ? ?-key? ? 這里需要指向我們上一步生成根證書私鑰
????????????????????? ? -out? ? 這里就會(huì)生成我們的根證書簽名請(qǐng)求文件
?????????????????????c-1,生成 CA 的自簽證書(如果我們自己扮演CA這個(gè)角色,那么簽名請(qǐng)求文件就是我
????????們上步產(chǎn)生的 root.csr)
? ? ? ? ? ? ? ? ? ??openssl req -new -x509 -key root.csr?-out root.crt -days 365 -config ../openssl.conf
????????????????????
?????????????????????這個(gè)時(shí)候會(huì)讓你輸入一些組織信息,請(qǐng)記住,你現(xiàn)在輸入的信息和你接下來(lái)要簽名的信息一致
????????????????????
????????? ? ????????c-2,我們也可以直接使用?CA?根證書私鑰來(lái)獲得自簽名的CA根證書
????????????????????openssl req -new -x509 -key root.key?-out root.crt -days 365 -config ../openssl.conf
? ? ? ? ? ? ????????d,同樣的道理生成服務(wù)器端私鑰
????????????????????openssl genrsa -out server.key 1024
????????????????????
???????????????????e,生成服務(wù)器端簽名請(qǐng)求文件
? ? ? ? ? ? ? ? ? ?openssl req -new -key server.key -out server.csr -config openssl.conf
????????????????????
????????????????????同樣會(huì)讓你輸入一個(gè)組織信息,記得跟根證書一致
? ? ? ? ? ?????????f,利用 CA 進(jìn)行簽名證書
????????????????? openssl ca -in server.csr -out server.crt -keyfile root.key -cert root.crt -days 365
????????????-config openssl.conf
????????????????? 到底我們的證書生成完成!但是有些格式不是我們需要的,請(qǐng)看接下倆格式轉(zhuǎn)換
????? ?????6,常用格式轉(zhuǎn)換
? ? ? ? ? ?????????a,得到 pfx 格式的私鑰,密鑰算法為 pkcs12
???????????????? ??openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt
? ? ? ? ? ? ? ?????b,從pfx文件中分離出 cer 格式的公鑰
???????????????????openssl x509 -inform pem -in server.crt -outform der -out server_public.cer
????????五,總結(jié)
??????????????留下文章讓自己有個(gè)參考,歡迎大家一起交流! QQ : 690649714
? ? ? ? ? ? ?如果在使用過(guò)程中出現(xiàn)任何問(wèn)題,可以參考我的博客同目錄下 OpenSSL 常見(jiàn)問(wèn)題
????????????????????
????????????????
轉(zhuǎn)載于:https://my.oschina.net/fajar/blog/425478
總結(jié)
以上是生活随笔為你收集整理的OpenSSL--Window生成证书实战的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c/c++ code JSON
- 下一篇: iOS-Runtime知识点整理