自签名泛域名证书
自签名泛域名证书
openssl
以下是生成自签名泛域名证书的命令:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 生成 CA 私钥
openssl genrsa -out ca.key 2048
# 生成 CA 证书
openssl req -x509 -new -nodes -key ca.key -sha256 -days 1024 -out ca.crt -subj "/CN=MySelfSignedCA"
# 生成 *.test.cn 私钥
openssl genrsa -out wildcard.test.cn.key 2048
# 生成 *.test.cn 证书请求
openssl req -new -key wildcard.test.cn.key -out wildcard.test.cn.csr -subj "/CN=*.test.cn"
# 签署 *.test.cn 证书
openssl x509 -req -in wildcard.test.cn.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out wildcard.test.cn.crt -days 365 -sha256 -extfile <(printf "subjectAltName=DNS:*.test.cn")
这些命令用于生成一个自签名证书颁发机构(CA)的私钥和证书,然后为 *.test.cn
泛域名生成私钥和证书请求,并使用 CA 签署该请求以生成自签名证书。生成的证书可以用于测试或内部环境中的 HTTPS 服务。
证书文件:wildcard.test.cn.crt
私钥文件:wildcard.test.cn.key
cfssl
cfssl
是一个开源的证书签名请求(CSR)生成器和证书颁发者,用于生成自签名证书或者由CA签名的证书。以下是使用 cfssl
生成自签名证书的步骤:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 创建配置文件 config.json
echo '{
"signing": {
"default": {
"expiry": "8760h"
},
"profiles": {
"www": {
"expiry": "8760h",
"usages": ["signing", "key encipherment", "server auth", "client auth"]
}
}
}
}' > config.json
# 创建 CSR 配置文件 csr.json
echo '{
"CN": "example.com",
"hosts": [
"192.168.146.130",
"192.168.146.139",
"192.168.146.142"
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "US",
"L": "San Francisco",
"O": "Example Inc.",
"ST": "California",
"OU": "IT"
}
]
}' > csr.json
# 生成 CA 证书和私钥
cfssl gencert -initca ca-csr.json | cfssljson -bare ca
# 生成服务器证书和私钥
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes ca-csr.json | cfssljson -bare server
# 验证服务器证书
openssl x509 -in server.pem -text -noout
ca-config.json
:定义 CA 的签名配置。ca-csr.json
:定义 CA 证书的请求信息。server-csr.json
:定义服务器证书的请求信息。
本文由作者按照
CC BY 4.0
进行授权