在Ubuntu下使用OpenSSL搭建CA


在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環境


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM