Openssl 生成多級證書

2021-07-15 18:27:47 字數 4151 閱讀 4683

一、前言

使用自簽ca證書,給二級ca簽發生成的證書預設不具備給**證書簽發的能力。

需要指定 -extensions v3_ca引數。

詳細參考:

二 相關命令

// 生成頂級ca的公鑰證書和私鑰檔案,有效期10年(rsa 1024bits,預設)

openssl req -new

-x509

-days

3650

-keyout caroot.key -out caroot.crt

// 為頂級ca的私鑰檔案去除保護口令

openssl rsa -in caroot.key -out caroot.key

// 為應用證書/中級證書生成私鑰檔案

openssl genrsa -out roota.key 1024

// 根據私鑰檔案,為應用證書/中級證書生成 csr 檔案(證書請求檔案)

openssl req -new

-key roota.key -out roota.csr

// 使用ca的公私鑰檔案給 csr 檔案簽名,生成中級證書,有效期5年

openssl ca -extensions v3_ca -in roota.csr -out roota.crt -cert caroot.crt -keyfile caroot.key -days

1826

-policy policy_anything

//生成服務rootb

openssl genrsa -out rootb.key 1024

openssl req -new

-key rootb.key -out rootb.csr

openssl ca -extensions v3_ca -in rootb.csr -out rootb.crt -cert caroot.crt -keyfile caroot.key -days

1826

-policy policy_anything

///生成服務roota-1

openssl genrsa -out roota-

1.key 1024

openssl req -new

-key roota-

1.key -out roota-

1.csr

openssl ca -in roota-

1.csr -out roota-

1.crt -cert roota.crt -keyfile roota.key -days

1826

-policy policy_anything

///生成p12

openssl pkcs12 -export

-clcerts

-in roota-

1.crt -inkey roota-

1.key -out roota-

1.p12

//p12轉jks

keytool -importkeystore

-srckeystore roota-

1.p12 -srcstoretype pkcs12 -deststoretype jks -destkeystore roota-

1.jks

///生成客戶端rootb-1

openssl genrsa -out rootb-

1.key 1024

openssl req -new

-key rootb-

1.key -out rootb-

1.csr

openssl ca -in rootb-

1.csr -out rootb-

1.crt -cert rootb.crt -keyfile rootb.key -days

1826

-policy policy_anything

///生成p12

openssl pkcs12 -export

-clcerts

-in roota-

1.crt -inkey roota-

1.key -out roota-

1.p12

//p12轉jks

keytool -importkeystore

-srckeystore roota-

1.p12 -srcstoretype pkcs12 -deststoretype jks -destkeystore roota-

1.jks

//服務端匯入信任

keytool -import

-alias root -file caroot.crt -keystore roota-

1.jks

keytool -import

-alias rootb -file rootb.crt -keystore roota-

1.jks //報錯不是x509格式

//轉為x509

openssl x509 -in rootb.crt -out

-rootb

.cer

keytool -import

-alias rootb -file rootb.cer -keystore roota-

1.jks

//cn為ip位址172.20.186.196 roota-2

///生成服務roota-2

openssl genrsa -out roota-

2.key 1024

openssl req -new

-key roota-

2.key -out roota-

2.csr

openssl ca -in roota-

2.csr -out roota-

2.crt -cert roota.crt -keyfile roota.key -days

1826

-policy policy_anything

///生成p12

openssl pkcs12 -export

-clcerts

-in roota-

2.crt -inkey roota-

2.key -out roota-

2.p12

//p12轉jks

keytool -importkeystore

-srckeystore roota-

2.p12 -srcstoretype pkcs12 -deststoretype jks -destkeystore roota-

2.jks

keytool -import

-alias root -file caroot.crt -keystore roota-

2.jks

keytool -import

-alias rootb -file rootb.cer -keystore roota-

2.jks

三 可能出現的問題

1 找不到xx路徑或檔案,參考

在當前目錄下建立democa資料夾,其中新建乙個空的index.txt(原文說要清空內容,windows下測試不需要,如果有問題,可嘗試清空內容)和乙個serial檔案,serial檔案中放個數字(最好別是0,最好以0開頭,比如01)

2 給二級證書簽名時,發生name=group=unique_subject

配置檔案openssl.cfg中default_md = md5

四 證書使用

1 客戶端驗證伺服器證書roota-1

客戶端需要安裝 根證書caroot.crt和二級證書roota.crt

應用伺服器tomcat或jboss的server.xml中ssl配置:keystorefile指向roota-1.jks(由roota簽發)

2 伺服器驗證客戶端

客戶端需按裝rootb-1.p12(含有秘鑰)的證書,由rootb簽發

應用伺服器tomcat或jboss的server.xml中ssl配置:truststorefile指定的jks檔案,需要匯入公鑰根證書caroot.crt和二級證書rootb.crt

五證書鏈驗證過程

接收到對方發來的證書,提取該證書的簽發人,查詢自身證書列表,追溯到根證書,得到接收證書到根證書的路徑,獲取根證書公鑰,沿著路徑驗證二級證書,獲取二級證書公鑰沿路徑驗證**證書,依次進行。

OpenSSL生成證書

要生成證書的目錄下建立幾個檔案和資料夾,有.democa democa newcerts democa index.txt democa serial,在serial檔案中寫入第乙個序列號 01 1.生成x509格式的ca自簽名證書 opensslreq new x509 keyout ca.key...

openssl 生成 證書

x509 證書一般會用到三類文,key,csr,crt。key是私用金鑰 openssl 格,通常是 rsa演算法。csr是證書請求檔案,用於申請證書。在製作 csr檔案的時,必須使用自己的私鑰來簽署申,還可以設定乙個金鑰。crt是ca 認證後的證書文,windows 下面的,其實是 crt 簽署人...

OpenSSL生成證書

1.生成x509格式的ca自簽名證書 opensslreq new x509 keyout ca.key out ca.crt 可以加證書過期時間選項 days 365 2.生成服務端的私鑰 key檔案 及csr 檔案 openssl genrsa des3 out server.key 1024 ...