自签证书

生成配置文件

Ubuntu 22.04openssl 的默认配置文件在 /etc/ssl/openssl.cnf 下,将此配置文件复制到当前目录 cp /etc/ssl/openssl.cnf . ,或新建一个配置文件。

cat > my.cnf << EOF
[ ca ]
default_ca = CA_default
[ CA_default ]
x509_extensions = usr_cert
[ req ]
default_bits        = 2048
default_md          = sha256
default_keyfile     = privkey.pem
distinguished_name  = req_distinguished_name
attributes          = req_attributes
x509_extensions     = v3_ca
string_mask         = utf8only
[ req_distinguished_name ]
[ req_attributes ]
[ usr_cert ]
basicConstraints       = CA:FALSE
nsComment              = "OpenSSL Generated Certificate"
subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid,issuer
[ v3_ca ]
subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints       = CA:true
EOF

生成证书

使用 openssl 生成 SAN 证书。

  • 生成 CA 证书
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -subj "/CN=fangxingfu.cn" -days 3650 -out ca.crt
  • 生成服务证书

服务证书中域名可与 CA 证书中不一致。

# 生成服务私钥
openssl genrsa -out server.key 2048

# 生成证书签名请求-CSR
openssl req -new -sha256 -key server.key \
    -subj "/C=XX/ST=DEFAULT/L=DEFAULT/O=DEFAULT/CN=fangxingfu.cn" \
    -reqexts SAN \
    -config <(cat my.cnf <(printf "\n[SAN]\nsubjectAltName=IP:127.0.0.1,DNS:*.fangxingfu.com")) \
    -out server.csr

# 生成证书
openssl x509 -req -days 365 -sha256 \
	-in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
	-extfile <(printf "subjectAltName=DNS:localhost,IP:127.0.0.1,DNS:*.fangxingfu.cn") \
	-out server.crt
Infee Fang
Infee Fang
互联网二手搬砖工