1. 程式人生 > >使用OpenSSL生成證書並配置Https

使用OpenSSL生成證書並配置Https

兩種 做的 class 令行 .net 基本 我們 服務端 mage

1、密鑰、證書請求、證書概要說明

在證書申請簽發過程中,客戶端涉及到密鑰、證書請求、證書這幾個概念。我們以申請證書的流程說明三者的關系。客戶端(相對於CA)在申請證書的時候,大體上有三個步驟:

第一步:生成客戶端的密鑰,即客戶端的公私鑰對,且要保證私鑰只有客戶端自己擁有。

第二步:以客戶端的密鑰和客戶端自身的信息(國家、機構、域名、郵箱等)為輸入,生成證書請求文件。其中客戶端的公鑰和客戶端信息是明文保存在證書請求文件中的,而客戶端私鑰的作用是對客戶端公鑰及客戶端信息做簽名,自身是不包含在證書請求中的。然後把證書請求文件發送給CA機構。

第三步:CA機構接收到客戶端的證書請求文件後,首先校驗其簽名,然後審核客戶端的信息,最後CA機構使用自己的私鑰為證書請求文件簽名,生成證書文件,下發給客戶端。此證書就是客戶端的身份證,來表明用戶的身份。

2、安裝OpenSSL

OpenSSL安裝有兩種方式,一種編譯安裝:https://bbs.csdn.net/topics/392193545?page=1

一種直接下載安裝包安裝(選擇對應操作系統版本,文件大的那個): https://www.sslzhengshu.com/article/post-367.html

安裝完成後,可以設置環境變量,也可以不設置環境變量,設置環境變量的好處是:在任意位置通過cmd命令行窗口都可以執行openssl命令,而沒有設置環境變量則需要進入OpenSSL安裝目錄進行命令行的操作

3、生成證書

首先進入cmd 進入openssl的安裝目錄(以配置過環境變量的可以省略這一步)

用戶證書的生成步驟:

生成私鑰(.key)-->生成證書請求(.csr)-->用CA根證書簽名得到證書(.crt)

1.建立文件夾

在openssl安裝目錄中新建 demoCA 目錄,再在 demoCA目錄內新建 newcerts目錄

並且在 demoCA 文件夾內新建一個空的 index.text 文件

再建立一個 serial文件 裏面寫 01

技術分享圖片

2.生成根證書

#生成私鑰
openssl genrsa -des3 -out root.key 1024

輸入命令,回車 會提示輸入密碼,我設定的密碼是123456,之後只要是提示輸入密碼的,都默認是123456,同時可以看到openssl安裝目錄下多了一個root.key文件

技術分享圖片

技術分享圖片

# 生成根證書 並且 自簽名
openssl req -new -x509 -key root.key -out root.crt -config C:\OpenSSL-Win64\bin\openssl.cfg

接下來會提示輸入密碼,還輸入默認的密碼就可以,接下來還會讓輸入一些基本信息

技術分享圖片

但是只有紅框部分的信息才是最重要的,其他都可以忽略不填,填完之後,發現openssl目錄下又多了一個root.crt文件

技術分享圖片

2、服務端證書生成

#生成私鑰
openssl genrsa -des3 -out server.key 1024

同樣也會提示輸入密碼

#生成服務端證書
openssl req -new -key server.key -out server.csr

提示輸入密碼,提示完成之後,又讓你填寫一大堆信息,跟生成root.csr是一樣的,需要註意的一點是,這裏填寫的信息需要跟生成root.csr填寫的信息要一致

技術分享圖片

這個時候,我們看openssl的安裝目錄,發現多了兩個文件,一個server.key 一個server.csr ,

技術分享圖片

但是為什麽這個server.csr為什麽跟root.csr的圖標不一樣呢?(當然不僅僅是因為後綴名不一致的問題),主要是因為因為root.crt是經過簽名的(自簽名),而server.csr沒有經過簽名

接下來要做的就是讓root.crt和root.key給server.csr進行簽名(其實這個過程就是模擬,CA機構進行簽名【那個要收費】)

3、使用root.crt和root.key給server.csr進行簽名

#使用根證書進行簽名
openssl ca -in server.csr -out server.crt -cert root.crt -keyfile root.key                                                            

使用OpenSSL生成證書並配置Https