使用OpenSSL为开发环境创建自签名CA和SSL证书
2023年8月7日

在开发环境中,我们可能需要生成自己的证书颁发机构(CA)和 SSL 证书进行测试。这些指令使用了 OpenSSL,这是一款强大的 SSL 和 TLS 协议工具包。下面我详细介绍了如何在 Windows 上创建这些证书,但类似的步骤也可以应用在不同的平台上。

安装

首先,你需要 OpenSSL。如果你是 Windows 用户,可以从这里下载 OpenSSL。

创建证书颁发机构(CA)

  1. 为 CA 生成一个私钥,使用以下命令:

    openssl genpkey -algorithm rsa -aes256 -out ca.key
    
  2. 为 CA 创建一个新的自签名的 x509 证书:

    openssl req -new -x509 -days 800 -key ca.key -sha512 -out ca.crt
    

    一旦成功创建了 CA,你就可以通过 Windows 的MMCca.crt导入到本地计算机证书 -> 受信任的根证书颁发机构

创建服务器 SSL 证书

  1. 为服务器生成一个私钥:

    openssl genpkey -algorithm rsa -aes256 -out server.key
    
  2. 创建一个配置文件 server.cnf,用于生成证书签名请求(CSR):

    [req]
    default_bits = 2048
    default_keyfile = server.key
    distinguished_name = req_distinguished_name
    req_extensions = req_ext
    x509_extensions = san_ext
    prompt = no
    
    [req_distinguished_name]
    countryName = CN
    stateOrProvinceName = Shanghai
    localityName = Pudong
    organizationName = JIANG SHENG
    commonName = joji-hyper
    
    [req_ext]
    subjectAltName = @alt_names
    
    [san_ext]
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1 = localhost
    DNS.2 = 127.0.0.1
    DNS.3 = 192.168.1.2
    DNS.4 = joji-hyper
    
  3. 使用私钥创建一个 CSR:

    openssl req -new -key server.key -out server.csr -config server.cnf
    
  4. 使用 CA 证书签署 CSR,获得服务器证书:

    openssl x509 -req -days 800 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -extensions san_ext -extfile server.cnf
    
  5. 如果你的服务器是 IIS,你需要将证书和密钥转换成 PFX 格式:

    openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt
    

希望这些指示对你的开发之旅有所帮助。每当你需要为测试或开发目的创建新的证书时,都可以参考这个指南。