openssl 自建CA,並簽發證書

2021-06-28 16:04:45 字數 3606 閱讀 9833

第一部分:自建ca

注:為了更好管理自建ca,在下文中,為沒有特殊說明的情況,ca根目錄都是指的自建ca的根目錄。

1. 建立ca根目錄,並初始化一些檔案:

mkdir $home/myca

cd $home/myca

mkdir certs private conf

echo "01" > serial

echo "" > index.txt

cat > conf/gen_ca.cnf << eof

# cnf start here

[req]

default_keyfile = [my home]/myca/private/cakey.pem

default_md = md5

prompt = no

distinguished_name = myca_distinguished_name

x509_extensions = myca_extentions

[myca_distinguished_name]

organizationname = myca_org

organizationalunitname = myca_unit

commonname = myca_common

emailaddress = [email protected]

[myca_extentions]

basicconstrains = ca:true

# cnf end here

eof

2. 生成ca所需要的私鑰及自簽證書:

// 生成私鑰,並自簽

openssl req -x509 -newkey rsa:2048 -out cacert.pem -outform pem -days 365 -config conf/gen_ca.cnf

//根據提示,輸入相應的密碼及其他內容

//檢視上面生成的ca證書

openssl x509 -in cacert.pem -text -noout

3. 生成ca簽發證書的配置檔案:

cat > conf/myca.cnf << eof

# cnf start here

[ca]

default_ca = myca

[myca]

dir = [my home]/myca/

database = $dir/index.txt

new_certs_dir = $dir/certs

certificate = $dir/cacert.pem

serial = $dir/serial

private_key = $dir/private/cakey.pem

randfile = $dir/private/.rand

default_days = 365

default_crl_days= 30

default_md = md5

unique_subject = no

policy = my_policy

[my_policy]

countryname = optional

stateorprovincename = optional

localityname = optional

organizationname = optional

organizationalunitname = optional

commonname = supplied

emailaddress = optional

# cnf ended here

eof

第二部分:生成ssl所需私鑰及ca簽發請求

mkdir $home/myssl

cd $home/myssl

openssl req -newkey rsa:2048 -keyout serverkey.pem -keyform pem -out serverreq.pem -outform pem

#按照提示輸入密碼及其他相關資訊,執行成功後,會輸出serverkey.pem(私鑰)和serverreq.pem(簽發請求檔案,需要給ca進行簽發,然後得到相應的簽發證書)

#檢視簽發請求內容(與其他檢視類似):

openssl req -in serverreq.pem -text -noout

第三部分:使用自建ca簽發上面生成證書簽發請求

openssl ca -in serverreq.pem -out servercert.pem -config $home/myca/conf/myca.cnf

#需要特別注意-config引數,指定了所使用的配置檔案及ca,在配置檔案中有自建ca的引數資訊。具體看上面的配置檔案

第四部分:生成ssl所需的證書:

mkdir $home/myssl

cd $home/myssl

#生成服務端私鑰及簽發請求,生成私鑰 serverkey.pem;簽發請求serverreq.pem

openssl req -newkey rsa:2048 -keyout serverkey.pem -keyform pem -out serverreq.pem -outform pem

#ca簽發證書,生成證書檔案servercert.pem

openssl ca -in serverreq.pem -out servercert.pem -config $home/myca/conf/myca.cnf

#生成客戶端私鑰及簽發請求,生成私鑰 clientkey.pem;簽發請求clientreq.pem

openssl req -newkey rsa:2048 -keyout clientkey.pem -keyform pem -out clientreq.pem -outform pem

#ca簽發證書,生成證書檔案clientcert.pem

openssl ca -in clientreq.pem -out clientcert.pem -config $home/myca/conf/myca.cnf

ssl連線中,需要使用到的檔案有:

serverkey.pem servercert.pem cacert.pem

clientkey.pem clientcert.pem cacert.pem

cacert.pem是自建ca中自籤得到的ca證書,在$home/myca/目錄下。

上述使用openssl 版本號:openssl 1.0.0-fips 29 mar 2010

OpenSSL建立根CA並簽發證書

windows下安裝配置openssl,建立democa資料夾,建立相應資料夾和檔案,命令列進入openssl 生成根ca金鑰 生成根證書 req new x509 days 7300 key ca.key out ca.crt subj c cn st provin l city o org ou...

自建ca根證書 如何建立私有 CA 並簽發證書

為什麼需要自己的 ca?因為公共 ca 比如排名前幾的這幾家 comodo,symantec,globalsign,digicert,startcom 頒發證書要收費,而且 很貴。當然現在也有了像 letsencrypt 這樣的免費 ca。我們的應用是企業內網,網域名稱使用私有網域名稱,沒有辦法使用...

使用Openssl生成CA及簽發證書方法

準備步驟 生成 ca 1 在dos視窗中轉換到out32dll目錄下。例如 cd e 電子書 openssl openssl 0.9.8g out32dll 2 生成ca的key檔案 執行如下命令 openssl genrsa out catest.key 1024 執行成功後,在out32dll目...