您的脚本仅生成一个证书,即自签名证书。通常,自签名证书称为根证书。这可以用作 CA 证书,但通常中间 CA 证书由根私钥创建和签名。然后使用此中间 CA 证书签署服务器证书。所以你有这个层次结构:
根 -> CA -> 服务器
CA 和 Root 证书可以进入受信任的证书列表。然后,信任该列表的浏览器也将信任由 CA 或 Root 实体签署的任何证书。
您不必具有此层次结构...您可以使用根证书作为 CA 并跳过中间证书。您也可以只使用 1 个自签名证书作为根/服务器证书。请参阅这篇文章(信任自签名证书)。
但是假设你确实有这个层次结构,这里有一些 OpenSSL 命令来生成必要的密钥和证书:
# 1. Create Root private key
openssl genrsa -out root.key 2048
# 2. Create self-signed Root certificate
openssl req -new -key root.key -x509 -out root.crt -days 5000 -sha256
# 3. Create CA private key
openssl genrsa -out ca.key 2048
# 4. Create CA CSR
openssl req -new -key ca.key -out ca.csr -days 5000
# 5. Sign and create CA certificate
openssl x509 -req -in ca.csr -CA root.crt -CAkey root.key -out ca.crt -set_serial 2 -days 5000 -sha256
# 6. Create Server private key
openssl genrsa -out server.key 2048
# 7. Create Server CSR
openssl req -new -key server.key -out server.csr -days 5000
# 8. Sign and create Server certificate
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -out server.crt -set_serial 3 -days 5000 -sha256
更改密钥位、有效天数、序列号,并根据需要添加 V3 扩展。
还要记住,不同的浏览器有不同的信任列表。Chrome 和 IE 使用 Windows 默认列表。Firefox 有自己的列表。