1. 程式人生 > >openssl生成證書+安裝+使用例項

openssl生成證書+安裝+使用例項

openssl生成證書主要為以下三步:

1. 生成CA證書

2. 生成Server證書

3.生成Client證書

一. 安裝openssl(windows)

1.1 選擇32位或者64位合適的版本下載


1.2 設定環境變數,變數值為應用安裝目錄下的bin目錄,如C:\OpenSSL-Win64\bin


二. 證書生成

進入命令列使用openssl生成證書


2.1 CA 證書生成

建立私鑰:

OpenSSL> genrsa -out ca-key.pem 2048


建立證書請求:

OpenSSL> req -new -out ca-req.csr -key ca-key.pem


建立CA自簽證書

OpenSSL> x509 -req -in ca-req.csr -out ca-cert.pem -signkey ca-key.pem -days 365 


將證書匯出成瀏覽器支援的.p12檔案(在此輸入的密碼為證書安裝時的密碼)
OpenSSL> pkcs12 -export -clcerts -in ca-cert.pem -inkey ca-key.pem -out ca.p12  

建立CA證書生成的檔案


2.2 Server 證書生成

建立私鑰

OpenSSL> genrsa -out server-key.pem 2048

建立證書請求

OpenSSL> req -new -out server-req.csr -key server-key.pem

建立自籤Server證書

OpenSSL> x509 -req -in server-req.csr -out server-cert.pem -signkey server-key.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -days 365

將證書匯出成瀏覽器支援的.p12檔案(在此輸入的密碼為證書安裝時的密碼)

OpenSSL> pkcs12 -export -clcerts -in server-cert.pem -inkey server-key.pem -out server.p12 

建立Server證書生成的檔案


2.3 Client證書生成

建立私鑰

OpenSSL> genrsa -out client-key.pem 2048

建立證書請求

OpenSSL> req -new -out client-req.csr -key client-key.pem

建立自籤Client證書

OpenSSL> x509 -req -in client-req.csr -out client-cert.pem -signkey client-key.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -days 365

將證書匯出成瀏覽器支援的.p12檔案(在此輸入的密碼為證書安裝時的密碼)

OpenSSL> pkcs12 -export -clcerts -in client-cert.pem -inkey client-key.pem -out client.p12 

建立Client證書生成的檔案


3. 證書安裝與使用

3.1 安裝client.p12客戶端證書檔案





進入客戶端瀏覽器檢視安裝的證書


3.2 搭建伺服器並使用證書(此處服務是為node搭建的伺服器)

// 載入 https 模組
const https = require('https')
// 載入 fs 模組
const fs = require('fs')
// 讀取伺服器金鑰與證書
const options = {
	key: fs.readFileSync('server-key.pem'),
	cert: fs.readFileSync('server-cert.pem')
}
// 建立伺服器
https.createServer(options, (req, res) => {
	res.writeHead(200, {'Content-Type': 'text/plain;charset=utf8'})
	res.write('Hello World!')
	res.end()
}).listen(8080, () => {
	console.log('Server is running……')
})

輸入https://ip地址(域名)訪問搭建的伺服器,因證書是自建的,瀏覽器器會顯示連線不安全,需將自建證書請加信任

火狐瀏覽器訪問: