互動式 生成 X.509證書
(1)Root CA
- 生成CA的私鑰
openssl genrsa -out ca/ca-prikey.pem 2048
- 生成CA的公鑰
openssl rsa -in ca/ca-prikey.pem -pubout -out ca/ca-pubkey.pem
- 生成CA的根證書
# 創建證書請求
openssl req -new -out ca/ca-req.csr -key ca/ca-prikey.pem
# 證書內容可選填 (其它 一路回車, 使用默認值)
Organization Name (eg, company) : XXX
Common Name (eg, YOUR name) []: root
# 自簽署證書 (Create a self-signed certificate)
openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-prikey.pem -days 3650
# (可選)將證書匯出成瀏覽器支持的.p12格式, 密碼: 123456
openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-prikey.pem -out ca/ca.p12
(2)使用根證書生成 一個node(即服務器)的證書
- 生成node的私鑰
openssl genrsa -out ca/node-prikey.pem 2048
- 生成node的公鑰
openssl rsa -in ca/node-prikey.pem -pubout -out ca/node-pubkey.pem
- 使用根證書生成node的證書
# 創建證書請求
openssl req -new -out ca/node-req.csr -key ca/node-prikey.pem
# 一路回車, 使用默認值, 直到 Common Name (注意: 一定要寫服務器所在的ip地址)
Organization Name (eg, company) : CMCC
Common Name (eg, YOUR name) []: 127.0.0.1
# 后續一路回車
# 使用CA證書及密鑰對服務器證書進行簽名
openssl x509 -req -in ca/node-req.csr -out ca/node-cert.pem -CA ca/ca-cert.pem -CAkey ca/ca-prikey.pem -CAcreateserial -days 3650
# (可選)將證書匯出成瀏覽器支持的.p12格式, 密碼: 123456
openssl pkcs12 -export -clcerts -in ca/node-cert.pem -inkey ca/node-prikey.pem -out ca/node.p12
(3)使用根證書生成 一個客戶端的證書
- 生成client的私鑰
openssl genrsa -out ca/client-prikey.pem 2048
- 生成client的公鑰
openssl rsa -in ca/client-prikey.pem -pubout -out ca/client-pubkey.pem
openssl x509 -in ca/client-cert.pem -pubkey -noout > ca/client-pubkey.pem
- 使用根證書生成client的證書
# 創建證書請求
openssl req -new -out ca/client-req.csr -key ca/client-prikey.pem
# 一路回車, 使用默認值, 直到 Common Name (注意: 可以填平臺用戶名)
Organization Name (eg, company) : General Motors
Common Name (eg, YOUR name) []: voter1
Email Address []: [默認]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []: testing
# 自簽署證書
openssl x509 -req -in ca/client-req.csr -out ca/client-cert.pem -CA ca/ca-cert.pem -CAkey ca/ca-prikey.pem -CAcreateserial -days 3650
# (可選)將證書匯出成瀏覽器支持的.p12格式, 密碼: 123456
openssl pkcs12 -export -clcerts -in ca/client-cert.pem -inkey ca/client-prikey.pem -out ca/client.p12
非互動式生成 X.509證書
(1)Root CA
# CA證書及密鑰生成方法一----直接生成CA密鑰及其自簽名證書
# 如果想以后讀取私鑰檔案ca_rsa_private.pem時不需要輸入密碼,亦即不對私鑰進行加密存盤,那么將-passout pass:123456替換成-nodes
openssl req -newkey rsa:2048 -passout pass:123456 -keyout ca_rsa_private.pem -x509 -days 365 -out ca.crt -subj "/C=CN/ST=GD/L=SZ/O=COM/OU=NSP/CN=CA/emailAddress=youremail@qq.com"
# CA證書及密鑰生成方法二----分步生成CA密鑰及其自簽名證書:
# openssl genrsa -aes256 -passout pass:123456 -out ca_rsa_private.pem 2048
# openssl req -new -x509 -days 365 -key ca_rsa_private.pem -passin pass:123456 -out ca.crt -subj "/C=CN/ST=GD/L=SZ/O=COM/OU=NSP/CN=CA/emailAddress=youremail@qq.com"
# 如果生成證書時報錯: Error opening file "../crypto/rand/randfile.c", 沒關系, 版本大于1.1.1就不報了
(2)使用根證書生成 一個服務器證書
# 服務器證書及密鑰生成方法一----直接生成服務器密鑰及待簽名證書
# 如果想以后讀取私鑰檔案server_rsa_private.pem時不需要輸入密碼,亦即不對私鑰進行加密存盤,那么將-passout pass:server替換成-nodes
openssl req -newkey rsa:2048 -passout pass:server -keyout server_rsa_private.pem -out server.csr -subj "/C=CN/ST=GD/L=SZ/O=COM/OU=NSP/CN=SERVER/emailAddress=youremail@qq.com"
# 服務器證書及密鑰生成方法二----分步生成服務器密鑰及待簽名證書
# openssl genrsa -aes256 -passout pass:server -out server_rsa_private.pem 2048
# openssl req -new -key server_rsa_private.pem -passin pass:server -out server.csr -subj "/C=CN/ST=GD/L=SZ/O=COM/OU=NSP/CN=SERVER/emailAddress=youremail@qq.com"
# 使用CA證書及密鑰對服務器證書進行簽名:
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca_rsa_private.pem -passin pass:123456 -CAcreateserial -out server.crt
# 將加密的RSA密鑰轉成未加密的RSA密鑰,避免每次讀取都要求輸入解密密碼
# 密碼就是生成私鑰檔案時設定的passout、讀取私鑰檔案時要輸入的passin,比如這里要輸入“server”
openssl rsa -in server_rsa_private.pem -out server_rsa_private.pem.unsecure
(3)使用根證書生成 一個客戶端的證書
# 客戶端證書及密鑰生成方法一----直接生成客戶端密鑰及待簽名證書
# 如果想以后讀取私鑰檔案client_rsa_private.pem時不需要輸入密碼,亦即不對私鑰進行加密存盤,那么將-passout pass:client替換成-nodes
openssl req -newkey rsa:2048 -passout pass:client -keyout client_rsa_private.pem -out client.csr -subj "/C=CN/ST=GD/L=SZ/O=COM/OU=NSP/CN=CLIENT/emailAddress=youremail@qq.com"
# 客戶端證書及密鑰生成方法二----分步生成客戶端密鑰及待簽名證書:
# openssl genrsa -aes256 -passout pass:client -out client_rsa_private.pem 2048
# openssl req -new -key client_rsa_private.pem -passin pass:client -out client.csr -subj "/C=CN/ST=GD/L=SZ/O=COM/OU=NSP/CN=CLIENT/emailAddress=youremail@qq.com"
# 使用CA證書及密鑰對客戶端證書進行簽名:
openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca_rsa_private.pem -passin pass:123456 -CAcreateserial -out client.crt
# 將加密的RSA密鑰轉成未加密的RSA密鑰,避免每次讀取都要求輸入解密密碼
# 密碼就是生成私鑰檔案時設定的passout、讀取私鑰檔案時要輸入的passin,比如這里要輸入“client”
openssl rsa -in client_rsa_private.pem -out client_rsa_private.pem.unsecure
-
往期精彩回顧:
- 區塊鏈知識系列
- 密碼學系列
- 零知識證明系列
- 共識系列
- 公鏈調研系列
- 位元幣系列
- 以太坊系列
- EOS系列
- Filecoin系列
- 聯盟鏈系列
- Fabric系列
- 智能合約系列
- Token系列
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/300254.html
標籤:其他
上一篇:Vue實作組件的區域重繪
下一篇:關于js實作哥德巴赫猜想
