在Ubuntu下使用OpenSSL搭建CA
我使用的環境是Ubuntu 20.04.1 LTS
建立CA目錄結構
在主目錄下輸入如下命令,建立CA目錄結構
mkdir ca
cd ca
mkdir newcerts private conf server users
- newcerts目錄將用於存放CA簽署過的數字證書。
- private目錄用於存放CA的私鑰。
- conf目錄用於存放簡化參數用的配置文件。
- server目錄存放服務器證書文件。
- users目錄存放用戶證書文件。
conf下的配置文件
cd conf
vim openssl.conf
在conf目錄下新建一個包含如下信息的openssl.conf文件
[ ca ]
default_ca = foo
[ foo ]
dir = /home/xieyi/ca
database = /home/xieyi/ca/index.txt
new_certs_dir = /home/xieyi/ca/newcerts
certificate = /home/xieyi/ca/private/ca.crt
serial = /home/xieyi/ca/serial
private_key = /home/xieyi/ca/private/ca.key
RANDFILE = /home/xieyi/ca/private/.rand
default_days = 365
default_crl_days = 30
default_md = sha256
unique_subject = no
policy = policy_any
[ policy_any ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = match
localityName = optional
commonName = supplied
emailAddress = optional
生成私鑰和根證書
生成私鑰key
cd ..
openssl genrsa -out 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
為CA的key設置起始序列號
sudo echo FACE > serial
serial是證書簽發時使用的序列號參考文件,該文件的序列號是以16進制格式進行存放的,該文件必須提供並且包含一個有效的序列號,序列號可以是任意四個字符
創建CA鍵庫
touch index.txt
penSSL定義的已簽發證書的文本數據庫文件,這個文件通常在初始化的時候是空的
為移除客戶端證書創建一個證書撤銷列表
openssl ca -gencrl -out private/ca.crl -crldays 7 -config "/home/xieyi/ca/conf/openssl.conf"
生成客戶端證書並為之簽名
為客戶端創建一個key
openssl genrsa -aes128 -out users/client.key 2048
創建key時會提示Enter pass phrase for users/client.key:
這是當前key的口令,防止本密鑰泄漏后被人盜用,兩次輸入同一個密碼
為客戶端key創建一個證書簽名請求csr文件
openssl req -new -key users/client.key -out users/client.csr
提示需要輸入剛才為key設置的口令
這里的輸入除了在Common Name中需修改為localhost外,其余均需與之前相同
使用根證書的key為客戶端的key簽名
openssl ca -md sha256 -in /home/xieyi/ca/users/client.csr -cert private/ca.crt -keyfile private/ca.key -out users/client.crt -config "/home/xieyi/ca/conf/openssl.conf"
當出現確認是否簽名的提示時,兩次都輸入y
將證書轉換為PKCS12文件
openssl pkcs12 -export -clcerts -in users/client.crt -inkey users/client.key -out users/client.p12
按照提示輸入為客戶端client.key設置的pass phrase
隨后設置用於導出證書的密碼:這個是客戶端證書的保護密碼,在安裝客戶端證書時需要輸入這個密碼
遇到的一些問題
-
權限不夠
使用
sudo su
進入root模式獲得最高權限 -
生成的CA目錄之后,無法將全部的文件移動,如關鍵的.key和.crt文件無法被移動
使用
zip -r ./ca.zip ./ca
命令將CA目錄做成壓縮包,即可將CA的全部內容移動至Windows環境