使用OpenSSL创建自签名证书

390 阅读1分钟

创建根证书和其私钥:

openssl req -x509 \
            -sha256 -days 356 \
            -nodes \
            -newkey rsa:2048 \
            -subj "/CN=demo.liuqi.com/C=CN/L=Chengdu" \
            -keyout rootCA.key -out rootCA.crt 

然后我们就可以看到下面两个文件: screenshot-20231027-102004.png

我们可以用命令openssl x509 -in rootCA.crt -noout -text看看证书里面的内容: screenshot-20231027-102252.png 可以看出,由于是根证书,颁发者和被颁发者都是同一个机构,而中间那大块就是根证书的公钥了。

创建自签名的证书

创建服务器私钥

openssl genrsa -out server.key 2048

配置证书里的相关内容

创建文件csr.conf用于存储相关证书内容:

[ req ]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn

[ dn ]
C = CN
ST = Sichuan
L = Chengdu
O = MLopsHub
OU = MlopsHub Dev
CN = demo.liuqi.com

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = demo.liuqi.com
DNS.2 = www.demo.liuqi.com
IP.1 = 192.168.1.5
IP.2 = 192.168.1.6

生成证书签名请求文件(CSR)

openssl req -new -key server.key -out server.csr -config csr.conf

生成的server.csr文件里还会包含服务器的公钥。我们可以用openssl req -text -noout -in server.csr命令查看这个文件里的内容。

添加证书拓展字段

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = demo.liuqi.com

生成证书

openssl x509 -req \
    -in server.csr \
    -CA rootCA.crt -CAkey rootCA.key \
    -CAcreateserial -out server.crt \
    -days 365 \
    -sha256 -extfile cert.conf

生成的文件server.crt就是最后的证书了。