自签名证书制作参考

如果推理服务选用HTTPS协议,则需要使用CA签发服务器端证书和客户端证书,建议具备条件的用户向专业的CA机构申请CA证书,推荐使用X509v3格式的证书进行认证。若选择进行自签名证书制作,为提高安全性,建议在非生产环境中进行

根据安全要求,RSA算法密钥长度至少为3072位,建议使用3072位。请确保使用“-aes256”等命令进行密钥加密,如果输入的密码为空,产生的私钥是明文,有安全风险,同时MD5、SHA1、RSA1024用于加密有安全风险,不建议使用。请合理设置证书有效期,建议不要超过36个月。

  1. 使用OpenSSL制作CA证书。

    1. 登录安装有OpenSSL工具的Linux机器。
    2. 创建工作目录并进入该目录。
      mkdir ca && cd ca 
    3. 创建CA证书的OpenSSL配置文件“ca_cert.conf”,内容如下:
      [ req ] 
      distinguished_name = req_distinguished_name 
      prompt = no 
       
      [ req_distinguished_name ] 
      O = mxVision 
      [ v3_ca ]
      subjectKeyIdentifier = hash
      authorityKeyIdentifier = keyid:always,issuer
      basicConstraints = critical, CA:true
      keyUsage = critical, digitalSignature, cRLSign, keyCertSign
    4. 创建CA证书私钥文件“ca.key”
      openssl genrsa -aes256 -out ca.key 4096
      图1 设置ca密码
      请合理设置的密码强度,长度至少为8个字符,且包含数字、大写字母、小写字母、特殊符号中的两种及以上字符组合,应避免使用常见的弱口令。
      • 若要对CA根证书密码进行存储管理,请勿使用明文密钥,建议通过华为KMC组件进行管理和使用。在使用密钥时应采取包括但不限于“敏感信息在程序中用完即销毁”等安全措施。
      • CA证书的私钥“ca.key”请用户妥善保管,不建议置于生产服务器中。
    5. 创建CA证书的csr请求文件“ca.csr”
      openssl req -out ca.csr -key ca.key -new -config ./ca_cert.conf 
    6. 创建自签名的CA证书“ca.crt”
      openssl x509 -req -in ca.csr -out ca.crt -sha256 -days 1000 -extfile ./ca_cert.conf -extensions v3_ca -signkey ca.key
      图2 输入ca密码

  2. 使用CA证书签发服务器证书。

    1. 登录到生成CA证书的服务器。
    2. 创建与CA平级的目录,并进入该目录。
      mkdir server && cd server 
    3. 创建服务器证书的OpenSSL配置文件“server_cert.conf”,内容如下:
      [ req ] 
      distinguished_name = req_distinguished_name 
      prompt = no 
       
      [ req_distinguished_name ] 
      O = mxVision 
      CN = 
      [ v3_ca ]
      authorityKeyIdentifier = keyid,issuer
      basicConstraints = CA:FALSE
      keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment

      “CN”字段需要根据需求改为服务器对应的域名、IP地址。

    4. 创建服务器证书私钥文件“server.key”
      openssl genrsa -aes256 -out server.key 4096
      图3 设置server密码
      • 请合理设置的密码强度,长度至少为8个字符,且包含数字、大写字母、小写字母、特殊符号中的两种及以上字符组合,请避免使用常见的弱口令。
      • 若要使用该服务器证书作为StreamServer服务端证书,密码长度不能超过100个字符。
      • 服务端启动时需要服务端CA证书对应的密钥,请勿使用明文密钥,建议通过华为KMC组件进行管理和使用,在使用密钥时应采取包括但不限于“敏感信息在程序中用完即销毁”等安全措施。
    5. 创建服务器证书的csr请求文件“server.csr”
      openssl req -out server.csr -key server.key -new -config ./server_cert.conf 
    6. 使用CA证书签发服务器证书“server.crt”
      openssl x509 -req -in server.csr -out server.crt -sha256 -CAcreateserial -days 1000 -extfile ./server_cert.conf -extensions v3_ca -CA ../ca/ca.crt -CAkey ../ca/ca.key

      输入ca密码。

  3. 使用CA证书签发客户端证书。

    1. 登录到生成CA证书的服务器。
    2. 创建与CA平级的目录,并进入该目录。
      mkdir client && cd client 
    3. 创建客户端证书的OpenSSL配置文件“client_cert.conf”,内容参考如下:
      [ req ] 
      distinguished_name = req_distinguished_name 
      prompt = no 
       
      [ req_distinguished_name ] 
      O = mxvision 
      CN = 
      [ v3_ca ]
      authorityKeyIdentifier = keyid,issuer
      basicConstraints = CA:FALSE
      keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment

      “CN”字段需要根据需求改为服务器对应的域名、IP地址。

    4. 创建客户端证书私钥文件“client.key”
      openssl genrsa -aes256 -out client.key 4096 
      图4 设置client密码
      • 请合理设置的密码强度,长度至少为8个字符,且包含数字、大写字母、小写字母、特殊符号中的两种及以上字符组合,避免使用常见的弱口令。
      • 服务端启动时需要服务端CA证书对应的密钥,请勿使用明文密钥,建议通过华为KMC组件进行管理和使用。在使用密钥时应采取包括但不限于“敏感信息在程序中用完即销毁”等安全措施。
    5. 创建客户端证书的csr请求文件“client.csr”
      openssl req -out client.csr -key client.key -new -config ./client_cert.conf
    6. 使用CA证书签发客户端证书“client.crt”
      openssl x509 -req -in client.csr -out client.crt -sha256 -CAcreateserial -days 1000 -extfile ./client_cert.conf -extensions v3_ca -CA ../ca/ca.crt -CAkey ../ca/ca.key

      输入ca密码。

      • 若采用上述参考制作自签名证书,建议将生成的包含证书,私钥及敏感信息的目录权限设置为“700”并将目录内包含的证书,私钥及包含敏感信息的配置文件的权限设置为“400”。具体可参考通过华为 KMC 组件生成的“keys”目录。
      • 自签名证书制作完成后,请及时清理制作自签名证书过程中所生成的中间文件如“ca_cert.conf”“server_cert.conf”“client_cert.conf”等,避免信息泄露。