CA根證書
- 創建 CA 根證書(使用這個根證書籤發服務器和客戶端的證書)
mkdir private
# 生成私鑰 key 文件:
openssl genrsa -out private/ca.key 2048
輸出
Generating RSA private key, 2048 bit long modulus
.......+++
.........................+++
e is 65537 (0x10001)
private 目錄下有 ca.key 文件生成。
# 生成證書請求 csr 文件
openssl req -new -key private/ca.key -out private/ca.csr
這裏需要填寫一些信息
# 生成憑證 crt 文件
openssl x509 -req -days 365 -in private/ca.csr -signkey private/ca.key -out private/ca.crt
創建配置文件:
- conf 目錄新建 openssl.conf 文件
[ ca ]
default_ca = foo # The default ca section
[ foo ]
dir = ./ # top dir
database = ./index.txt # index file.
new_certs_dir = ./newcerts # new certs dir
certificate = ./private/ca.crt # The CA cert
serial = ./serial # serial no file
private_key = ./private/ca.key # CA private key
RANDFILE = ./private/.rand # random number file
default_days = 365 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = sha1 # message digest method to use
unique_subject = no # Set to 'no' to allow creation of
# several ctificates with same subject.
policy = policy_any # default policy
[ policy_any ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = match
localityName = optional
commonName = supplied
emailAddress = optional
服務器證書的生成
# 創建一個 key,服務器不需要密碼
openssl genrsa -out server/server.key 2048
# 爲我們的 key 創建一個證書籤名請求 csr 文件
openssl req -new -key server/server.key -out server/server.csr
# 會有一些問題,保持和之前一樣就好,注意裏面的hostname, 填寫服務器的Ip地址,確保能通過這個地址訪問服務器
# 使用我們私有的 CA key 爲剛纔的 key 簽名
openssl ca -in server/server.csr -cert private/ca.crt -keyfile private/ca.key -out server/server.crt -config "./conf/openssl.conf"
# 會有一些提示信息,直接確認
客戶端證書的生成
mkdir users
# 爲用戶創建一個 key,需要密碼
openssl genrsa -des3 -out ./users/client.key 2048
# 根據提示輸入密碼
# 爲 key 創建一個證書籤名請求 csr 文件,會有一些信息,和之前填寫一致
openssl req -new -key ./users/client.key -out ./users/client.csr
# 使用我們私有的 CA key 爲剛纔的 key 簽名
openssl ca -in ./users/client.csr -cert ./private/ca.crt -keyfile ./private/ca.key -out ./users/client.crt -config "./conf/openssl.conf"
爲了可以通過瀏覽器驗證,轉化爲P12格式:
openssl pkcs12 -export -clcerts -in ./users/client.crt -inkey ./users/client.key -out ./users/client.p12
# 輸入密碼後,users 目錄下有 client.p12 文件生成。
格式轉換:
爲了在程序中使用,我們將客戶端crt 和 key以及ca.crt轉化爲PEM格式的文件
openssl x509 -in ca.crt -out cacrt.pem -outform PEM
openssl x509 -in client.crt -out clientcrt.pem -outform PEM
openssl rsa -in client.key -out clientkey.pem
我們需要的證書文件有:
根證書 |
ca.crt |
cacrt.pem |
根證書籤發的服務端證書 |
server.crt |
|
服務端私鑰 |
server.key |
|
根證書籤發的客戶端證書 |
client.crt |
clientcrt.pem |
客戶端私鑰 |
client.key |
clientkey.pem |