用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 任何人...