本文描述的是利用自簽CA制作鏈?zhǔn)阶C書(shū)的步驟,主要是制作中間證書(shū)的關(guān)鍵步驟。
目前CA證書(shū)基本均為鏈?zhǔn)阶C書(shū),其主要目的是利用中間證書(shū)的特性,既可以保護(hù)根證書(shū)的密鑰安全性,又可以方便進(jìn)行吊銷操作。
0x00 制作根證書(shū)密鑰(root.key):
openssl genrsa -aes256 -out root.key 4096
參數(shù)含義:
genrsa:? 生成RSA密鑰
4096: 指定密鑰長(zhǎng)度
命令執(zhí)行后會(huì)要求輸入密碼,切記此密碼為root.key專有。eg.若沒(méi)有aes256選項(xiàng)則可以免密碼。
0x01 制作根證書(shū)|自簽CA(root.crt):
此步驟有兩種方式 一種是按部就班的生成證書(shū)申請(qǐng)文件csr,利用csr繼續(xù)生成crt格式證書(shū);另一種方式直接生成crt,省去csr。
生成csr方式:
openssl req -new -key root.key -out root.csr
輸入完成后需要輸入0x00中的密碼 和xxxx信息:
Enter pass phrase for root.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Shanghai
Locality Name (eg, city) [Default City]:Shanghai
Organization Name (eg, company) [Default Company Ltd]:LDW
Organizational Unit Name (eg, section) []:LDW STD
Common Name (eg, your name or your server's hostname) []:LDW self sign CA
重點(diǎn):Common Name此項(xiàng)目輸入的是本證書(shū)的標(biāo)志,除此之外的C L O OU項(xiàng)目一定要記得自己輸入的什么,另外C L O OU CN大小寫(xiě)敏感。
之后就會(huì)得到證書(shū)申請(qǐng)文件(root.csr)。之后利用csr獲得根證書(shū)(root.crt):
openssl x509 -req -days 3650 -sha256 -extfile root.ext -extensions v3_ca -in root.csr -signkey root.key -out root.crt
參數(shù)含義:
days: 證書(shū)有效期
in: 上一步生成的csr文件 -signkey/-key 0x00生成的密鑰 out:生成證書(shū)
關(guān)鍵參數(shù):
0.1.1 -extfile root.ext 此參數(shù)指定了含有 0.1.2配置的配置文件位置
0.1.2 -extensions v3_ca 此參數(shù)指定了一個(gè)在extfile配置文件里的[v3-ca]配置:
[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = critical,CA:true
此參數(shù)可省略,如果要制作鏈?zhǔn)阶C書(shū)我勸你最好加上。
直接生成root.crt方式:
openssl req -new -x509 -days 3650 -sha256 -extensions v3_ca -key root.key -out root.crt -subj "/C=CN/L=Shanghai/O=LDW/OU=LDW STD/CN=LDW sign CA"
0x02 制作中間證書(shū):
首先生成中間證書(shū)密鑰(middle.key)
openssl genrsa -out middle.key 4096
關(guān)鍵步驟:
生成一個(gè)如下內(nèi)容ext文件
[ v3_intermediate_ca ]
# Extensions for a typical intermediate CA (`man x509v3_config`).
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true, pathlen:0
keyUsage = critical, digitalSignature, cRLSign, keyCertSign
命名為ca_intermediate.ext?
之后生成中間證書(shū)請(qǐng)求文件(middle.csr)
openssl req -new -key middle.key -out middle.csr -subj "/C=CN/L=Shanghai/O=LDW/OU=LDW STD/CN=LDW middle CA"
利用middle.csr和ca_intermediate.ext生成中間證書(shū):
openssl x509 -req -extfile ca_intermediate.ext -extensions v3_intermediate_ca -days 1800 -sha256 -CA root.crt -CAkey root.key -CAcreateserial -CAserial serial -in middle.csr -out middle.crt
之后可以使用openssl verify命令驗(yàn)證:
openssl verify -CAfile root.crt middle.crt
正確應(yīng)該輸出:
middle.crt: OK
此時(shí)證明我們的中間證書(shū)已經(jīng)可以鏈到我們的根證書(shū)上了,之后需要驗(yàn)證middle.crt的一個(gè)關(guān)鍵配置項(xiàng):
openssl x509 -noout -text -in middle.crt
在輸出的文本中找到這一句:
X509v3 Basic Constraints: critical
CA:TRUE, pathlen:0
沒(méi)有的,請(qǐng)從生成中間證書(shū)開(kāi)始重做,此項(xiàng)必須為T(mén)RUE
此時(shí)中間證書(shū)才是生成完畢。
0x03 利用中間證書(shū)生成服務(wù)端證書(shū)
先生成服務(wù)端證書(shū)密鑰(server.key):
openssl genrsa -out server.key 2048
生成請(qǐng)求文件(server.csr):
openssl req -new -key server.key -out server.csr -subj "/C=CN/L=Shanghai/O=LDW/OU=LDW STD/CN=*.useye.cn"
為了適應(yīng)現(xiàn)代瀏覽器SSL證書(shū)標(biāo)準(zhǔn)還需生成一個(gè)ext文件:
[ v3_server ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.useye.cn
DNS.2 = *.52sexy.net
命名為server.ext。其中DNS.X后面跟的域名為你自己想要生成的域名。
利用中間證書(shū)生成服務(wù)端證書(shū)(server.crt):
openssl x509 -req -extfile server.ext -extensions v3_server -days 365 -sha256 -CA middle.crt -CAkey middle.key -CAserial serial -in server.csr -out server.crt
之后我們需要做一個(gè)驗(yàn)證,首先需要生成一個(gè)根證書(shū)與中間證書(shū)的一個(gè)復(fù)合證書(shū):
cat middle.crt root.crt > middle-chain.crt
之后用復(fù)合證書(shū)驗(yàn)證服務(wù)端證書(shū):
openssl verify -CAfile middle-chain.crt server.crt
只有如下輸出才是正確的:
server.crt: OK
此時(shí)我們的鏈?zhǔn)阶C書(shū)最終生成完成。
PS:
將root.crt導(dǎo)入windows可信根證書(shū)區(qū)域,middle.crt導(dǎo)入可信中間證書(shū)區(qū)域,即可驗(yàn)證server.crt有效性:
Chrome瀏覽器訪問(wèn)文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-677808.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-677808.html
到了這里,關(guān)于利用OpenSSL 自簽CA證書(shū)制作鏈?zhǔn)絊SL證書(shū)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!