1. 生成ext文件
echo -e "[v3_req]\n"\
"authorityKeyIdentifier=keyid,issuer\n"\
"basicConstraints=CA:FALSE\n"\
"keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment\n"\
"subjectAltName = @alt_names\n"\
"\n"\
"[alt_names]" > v3.ext
2. 設(shè)定域名證書
echo DNS.1 = www.xxx.com >> v3.ext
請把上面 www.xxx.com
改成自己的需要生成服務器證書的域名
3. 生成根證書(ca)的RSA 密鑰文件
openssl genrsa -out ca_private.key
4. 生成ca的證書請求文件
openssl req -new -key ca_private.key -out ca.req \
-subj "/C=CN/ST=Guangdong/L=Shenzhen/O=testo/OU=testg/CN=testca"
-subj
參數(shù)中填寫的是證書信息
-
C
是國家編號, 2位數(shù) -
ST
是省份 -
L
是城市名 -
O
是組織名 -
OU
是組名 -
CN
是證書擁有者名稱
5. 生成ca根證書(自己給自己簽證)
openssl x509 -req -days 3650 -sha256 -extensions v3_ca \
-signkey ca_private.key -in ca.req -out ca.cer
-days
是根證書的有效天數(shù)
-sha256
是采用sha256離散算法瓦胎,谷歌瀏覽器不在支持sha1算法的安全提示欠橘,也即是說如果用sha1作為參數(shù)夸盟,谷歌瀏覽器可能顯示為不安全
6. 生成服務器網(wǎng)站的SSL密鑰
openssl genrsa -out server_private.key
7. 生成服務器網(wǎng)站的證書請求文件
openssl req -new -key server_private.key -out server.req \
-subj "/C=CN/ST=Guangdong/L=Shenzhen/O=demo/OU=demog/CN=xxx.com"
subj
的內(nèi)容與#4一樣憔儿,這里是網(wǎng)站使用者的證書信息
8.使用ca根證書生成服務器證書
openssl x509 -req -days 3650 -sha256 -extfile v3.ext -extensions v3_req \
-CA ca.cer -CAkey ca_private.key -CAserial ca.srl -CAcreateserial \
-in server.req -out server.cer
最后生成的文件如下:
-
v3.ext
用于生成服務器證書所需要的配置文件, 包含證書綁定的域名 -
ca_private.key
ca根證書的密鑰 -
ca.req
生成ca根證書的請求文件 -
ca.cer
ca根證書 -
ca.srl
在使用ca根證書簽證網(wǎng)站證書時自動生成的序列文件 -
server_private.key
服務器ssl證書的密鑰 -
server.req
服務器證書生成的請求文件 -
server.cer
ca根證書簽證的服務器網(wǎng)站的ssl證書
部署到nginx中只需要 server_private.key
和 server.cer
根證書 ca.cer
可以安裝到本地操作系統(tǒng)中對網(wǎng)站的證書進行驗證