自簽名CA認證

2021-10-24 05:29:04 字數 4241 閱讀 3929

用openssl命令生成自己的根證書,讓使用者安裝信任它,之後所有用這個根證書簽名的證書,就可以被信任。

建立檔案並配置環境

先建立/root/ca資料夾,所有ca的操作都會在這個資料夾執行。

/root/ca:ca資料夾

/root/ca/certs:新簽署證書和根證書存放的位置

/root/ca/crl:證書請求檔案存放位置

/root/ca/newcerts:新簽署證書存放的位置,是/root/ca/certs的備份

/root/ca/private:ca.key.pem(私鑰)存放位置,千萬別丟失

/root/ca/index.txt:證書簽名的紀錄

/root/ca/serial:下一次證書簽名的序列號,儲存到index.txt

配置檔案中:

policy = policy_strict 使用 policy_strict 為根ca簽名,因為跟ca僅用於建立中間ca。

# optionally, specify some defaults.

countryname_default = cn

stateorprovincename_default = beijing

localityname_default = beijing

0.organizationname_default = flow ca

organizationalunitname_default = flow

emailaddress_default = [email protected]

****

[ server_cert ]

# extensions for server certificates (`man x509v3_config`).

basicconstraints = ca:false

nscerttype = server

nscomment = "openssl generated server certificate"

subjectkeyidentifier = hash

authoritykeyidentifier = keyid,issuer:always

keyusage = critical, digitalsignature, keyencipherment

extendedkeyusage = serverauth

增加subjectaltname = @alt_names

[alt_names]

ip.1 = 127.0.0.1

ip.2 = 192.168.1.1

dns.1 = flow.io

dns.2 = ioptimi.flow.io

****

建立根金鑰

# cd /root/ca

生成乙個rsa金鑰,為4096位長度,並將該金鑰用aes256對稱加密,位置在private/ca.key.pem,並輸入加密金鑰:***x。

# openssl genrsa -aes256 -out private/ca.key.pem 4096

輸入兩次密碼***x。

# chmod 400 private/ca.key.pem

建立根證書

使用根金鑰(ca.key.pem)建立根證書(ca.cert.pem)。給予根證書有效期很長,例如20年。

# cd /root/ca

使用該req工具,都必須指定該-config選項使用的配置檔案,否則openssl將預設為 /etc/pki/tls/openssl.cnf。存放位置certs/ca.cert.pem。

-days 7300:有效期20年

# openssl req -config openssl.cnf

-key private/ca.key.pem

-new -x509 -days 7500 -sha256 -extensions v3_ca

-out certs/ca.cert.pem

根據提示輸入加密金鑰:***x

然後一值回車下去,使用配置檔案中的預設值,也可以重新賦值。(上方配置檔案中的可選值)

# chmod 444 certs/ca.cert.pem

驗證根證書:

# openssl x509 -noout -text -in certs/ca.cert.pem

signature algorithm: sha256withrsaencryption

issuer: c = cn, st = beijing, l = beijing, o = flow ca, ou = flow, cn = flow, emailaddress = [email protected]

validity

not before: sep 2 04:00:14 2020 gmt

not after : mar 16 04:00:14 2041 gmt

subject: c = cn, st = beijing, l = beijing, o = flow ca, ou = flow, cn = flow, emailaddress = [email protected]

subject public key info:

public key algorithm: rsaencryption

rsa public-key: (4096 bit)

modulus: 公鑰

生成服務端key(server.key)和證書請求(server.csr)

假設**的網域名稱或ip位址是127.0.0.1,那麼在ca同級目錄下建立127.0.0.1資料夾,生成服務端證書操作都在這個目錄下進行。

會出現提示,盡量全部都填寫,防止以後瀏覽器對證書驗證變得嚴格,又要重新簽名。關鍵資料重複填寫就可以了。

country name輸入:cn

state or province name輸入:beijing

locality name(eg, city)輸入:beijing

organization name (eg, company)輸入:flow ca

organizational unit name (eg, section)輸入:flow

common name輸入網域名稱或ip:127.0.0.1

email address:[email protected]

extra資訊

a challenge password輸入:yyyy

an optional company name :flow

生成證書

修改下/root/ca/openssl.cnf

policy = policy_strict 為根ca簽名

改為policy = policy_loose 為中間ca簽名

將下方ip或dns更新為要簽名的:

[alt_names]

ip.1 = 127.0.0.1

ip.2 = 192.168.1.1

dns.1 = flow.io

dns.2 = ioptimi.flow.io

驗證服務端證書:

openssl x509 -noout -text

-in certs/127.0.0.1.cert.pem

issuer: c = cn, st = beijing, l = beijing, o = flow ca, ou = flow, cn = flow, emailaddress = [email protected]

validity

not before: sep 2 08:05:44 2020 gmt

not after : sep 12 08:05:44 2021 gmt

subject: c = cn, st = beijing, l = beijing, o = flow ca, ou = flow, cn = flow, emailaddress = [email protected]

subject public key info:

public key algorithm: rsaencryption

rsa public-key: (2048 bit)

modulus:

將127.0.0.1.cert.pem拷貝到/root/127.0.0.1目錄下,並改名為server.crt

# cp certs/127.0.0.1.cert.pem …/127.0.0.1/server.crt

CA建立及自簽名證書

1,生成公私鑰 2,建立根ca 生成證書索引資料庫檔案 touch etc pki ca index.txt 指定第乙個頒發證書的序列號 echo 01 etc pki ca serial 生成ca私鑰 umask 066 openssl genrsa out private cakey.pem 2...

了解CA認證

電子商務認證授權機構 ca,certificate authority 也稱為電子商務認證中心,是負責發放和管理數字證書的權威機構,並作為電子商務交易中受信任的第三方,承擔公鑰體系中公鑰的合法性檢驗的責任。ca是證書的簽發機構,它是pki的核心。ca是負責簽發證書 認證證書 管理已頒發證書的機關。它...

ca認證過程

ca是證書的簽發機構,它是pki的核心。ca是負責簽發證書 認證證書 管理已頒發證書的機關。它要制定政策和具體步驟來驗證 識別使用者身份,並對使用者證書進行簽名,以確保證書持有者的身份和公鑰的擁有權。ca 也擁有乙個證書 內含公鑰 和私鑰。網上的公眾使用者通過驗證 ca 的簽字從而信任 ca 任何人...