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

2021-10-13 09:35:00 字數 3283 閱讀 7449

為什麼需要自己的 ca?

因為公共 ca (比如排名前幾的這幾家:comodo, symantec, globalsign, digicert, startcom)頒發證書要收費,而且**很貴。當然現在也有了像 letsencrypt 這樣的免費 ca。

我們的應用是企業內網,網域名稱使用私有網域名稱,沒有辦法使用網際網路的 ca 辦法的證書。

基本概念

對稱加密 用相同的密碼進行加密加密

非對稱加密 用不同的秘鑰對進行加密解密,這是數學上的乙個素數積求因子的原理的應用

公鑰和私鑰 數字證書採用公鑰體制,用一對互相匹配的金鑰進行加密、解密。使用者自己設定一把特定的僅為本人所知的私鑰,用它進行解密和簽名,同時設定一把公公鑰並由本人公開,為一組使用者所共享,用於加密和驗證簽名。

非對稱加密的演算法 比較著名的有 rsa, dsa ,rsa 可以用於加/解密,也可以用於簽名驗籤,dsa只能用於簽名。

安全雜湊演算法 sha 是一種和 md5 相同的演算法,它不是用於加密解密或者簽名的,它被稱為摘要演算法。就是通過一種演算法,依據資料內容生成一種固定長度的摘要,這串摘要值與原資料存在對應關係,就是原資料會生成這個摘要,但是這個摘要是不能還原成原資料。這個演算法起的作用就是,如果你修改原資料,那麼生成的摘要會不同,傳輸過程中把原資料給你再給你乙個摘要,你把得到的原資料同樣做一次摘要演算法,與給你的摘要相比較就可以知道這個資料有沒有在傳輸過程中被修改了。實際應用過程中,因為需要加密的資料可能會很大,進行加密費時費力,所以一般都會把原資料先進行摘要,然後對這個摘要值進行加密,將原資料的明文和加密後的摘要值一起傳給你,這樣你解開加密後的摘要值,再和你得到的資料進行的摘要值對應一下就可以知道資料有沒有被修改了,因為私鑰只有你有,只有你能解密摘要值,所以別人就算把原資料做了修改,然後生成乙個假的摘要給你也是不行的,你這邊用金鑰也解不開。

ca/pem/der/x509/pkcs 一般的公鑰不會用明文傳輸給別人的,正常情況下都會生成乙個檔案,這個檔案就是公鑰檔案,然後這個檔案可以交給其他人用於加密,但是傳輸過程中如果有人惡意破壞,將你的公鑰換成了他的公鑰,然後得到公鑰的一方加密資料,他就可以用他自己的金鑰解密看到資料了,為了解決這個問題,需要乙個公證方來做這個事,任何人都可以找它來確認公鑰是誰發的。這就是 ca,ca 確認公鑰的原理也很簡單,它將它自己的公鑰發布給所有人,然後乙個想要發布自己公鑰的人可以將自己的公鑰和一些身份資訊發給 ca,ca 用自己的金鑰進行加密,這裡也可以稱為簽名。然後這個包含了你的公鑰和你的資訊的檔案就可以稱為證書檔案了。這樣一來所有得到一些公鑰檔案的人,通過 ca 的公鑰解密了檔案,如果正常解密那麼機密後裡面的資訊一定是真的,因為加密方只可能是 ca,其他人沒它的金鑰。這樣你解開公鑰檔案,看看裡面的資訊就知道這個是不是那個你需要用來加密的公鑰了。實際應用中,一般人都不會找 ca 去簽名,因為那是收錢的,所以可以自己做乙個自簽名的證書檔案,就是自己生成一對金鑰,然後再用自己生成的另外一對金鑰對這對金鑰進行簽名,這個只用於真正需要簽名證書的人,普通的加密解密資料,直接用公鑰和私鑰來做就可以了。

金鑰檔案的格式 用openssl生成的就只有 pem 和 der 兩種格式,pem 的是將金鑰用 base64 編碼表示出來的,直接開啟你能看到一串的英文本母,der 格式是二進位制的金鑰檔案。x509 是通用的證書檔案格式定義。pkcs 的一系列標準是指定的存放金鑰的檔案標準,pem、der、x509、pkcs這幾種格式可以互相轉化

建立私有 ca 並簽發證書

操作環境

ubuntu 16.04.4 lts (gnu/linux 4.15.0-30-generic x86_64)

openssl 1.0.2g 1 mar 2016

將openssl.cnf 配置檔案拷貝到當前目錄下並建立以下在配置檔案中指定的子資料夾,index.txt 為空,serial 必須寫入內容,且為字串格式的數字(比如1000)

# 準備好目錄和環境

mkdir cert

cd cert

mkdir democa

cd democa

mkdir srl certs newcerts

touch index.txt serial

echo 1000 > serial

cd ..

cp /usr/lib/ssl/openssl.cnf .

生成根證書

mkdir ca

# 生成根證書私鑰(key檔案)

openssl genrsa -out ca/ca.key 2048

# 生成根證書簽發申請檔案(csr檔案)

openssl req -new -key ca/ca.key -out ca/ca.csr -config ./openssl.cnf

# 自簽發根證書(crt檔案)

openssl x509 -req -days 3650 -sha1 -extensions v3_ca -signkey ca/ca.key -in ca/ca.csr -out ca/ca.crt

用根證書簽發server端證書

mkdir server

# 生成根證書私鑰(key檔案)

openssl genrsa -out server/server.key 2048

# 生成根證書簽發申請檔案(csr檔案)

openssl req -new -key server/server.key -out server/server.csr -config ./openssl.cnf

# 使用根證書簽發服務端證書

openssl ca -in server/server.csr -out server/server.crt -cert ca/ca.crt -keyfile ca/ca.key -config ./openssl.cnf

# 將金鑰和證書合併成乙個檔案

cp server/server.key server/server.pem

cat server/server.crt >> server/server.pem

建立客戶端證書

mkdir client

openssl genrsa -aes256 -out client/client.key 2048

openssl req -new -key client/client.key -out client/client.csr -config ./openssl.cnf

openssl ca -in client/client.csr -out client/client.crt -cert ca/ca.crt -keyfile ca/ca.key -config ./openssl.cnf

cp client/client.key client/client.pem

cat client/client.crt >> client/client.pem

建立私有CA

1 建立ca所需要的檔案 生成證書索引資料庫檔案 touch etc pki ca index.txt 指定第乙個頒發證書的序列號 echo 01 etc pki ca serial 2 生成ca私鑰 cd etc pki ca umask 066 openssl genrsa out privat...

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

mkdir p ssl server 生成根證書私鑰 key檔案 openssl genrsa out ssl server server.key 2048 生成csr 證書簽名請求 openssl req new key ssl server server.key out ssl server s...

建立私有CA及證書頒布詳解

一 ca證書簡介 二 建立私有ca 1 建立私有ca方式 小範圍測試使用openssl 大範圍維護大量證書企業使用openca 對openssl進行了二次封裝,更加方便使用 2 基於openssl建立ca證書 1 配置檔案 2 建立步驟 以centos6作為ca主機,ip位址為192.168.159...