自签名证书制作参考
HTTPS协议需要使用CA签发服务器端证书和客户端证书,建议具备条件的用户向专业的CA机构申请CA证书,推荐使用X509v3格式的证书进行认证。若选择进行自签名证书制作,为提高安全性,建议在非生产环境中进行。
根据安全要求,RSA算法密钥长度至少为3072位,建议使用3072位。请确保使用“-aes256”等命令进行密钥加密,如果输入的密码为空,产生的私钥是明文,有安全风险,同时MD5、SHA1、RSA1024用于加密有安全风险,不建议使用。请合理设置证书有效期,建议不要超过36个月。
- 使用OpenSSL制作CA证书。
- 登录安装有OpenSSL工具的Linux机器。
- 创建工作目录并进入该目录。
1
mkdir ca && cd ca
- 创建CA证书的OpenSSL配置文件“ca_cert.conf”,内容如下:
1 2 3 4 5 6 7 8 9 10 11
[ 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
- 创建CA证书私钥文件“ca.key”。
openssl genrsa -aes256 -out ca.key 4096
图1 设置ca密码请合理设置的密码强度,长度至少为8个字符,且必须包含数字、大写字母、小写字母、特殊符号中的两种及以上字符组合,应避免使用常见的弱口令。- 若要对CA根证书密码进行存储管理,请勿使用明文密钥,建议通过华为KMC组件进行管理和使用。在使用密钥时应采取包括但不限于“敏感信息在程序中用完即销毁”等安全措施。
- CA证书的私钥“ca.key”请用户妥善保管,不建议置于生产服务器中。
- 创建CA证书的csr请求文件“ca.csr”。
1
openssl req -out ca.csr -key ca.key -new -config ./ca_cert.conf
- 创建自签名的CA证书“ca.crt”。
1
openssl x509 -req -in ca.csr -out ca.crt -sha256 -days 1000 -extfile ./ca_cert.conf -extensions v3_ca -signkey ca.key
图2 输入ca密码
- 使用CA证书签发服务器证书。
- 登录到生成CA证书的服务器。
- 创建与CA平级的目录,并进入该目录。
mkdir server && cd server
- 创建服务器证书的OpenSSL配置文件“server_cert.conf”,内容如下:
1 2 3 4 5 6 7 8 9 10 11
[ 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地址。
- 创建服务器证书私钥文件“server.key”。
1
openssl genrsa -aes256 -out server.key 4096
图3 设置server密码- 请合理设置的密码强度,长度至少为8个字符,且包含数字、大写字母、小写字母、特殊符号中的两种及以上字符组合,请避免使用常见的弱口令。
- 若要使用该服务器证书作为StreamServer服务端证书,密码长度不能超过100个字符。
- 服务端启动时需要服务端CA证书对应的密钥,请勿使用明文密钥,建议通过华为KMC组件进行管理和使用,在使用密钥时应采取包括但不限于“敏感信息在程序中用完即销毁”等安全措施。
- 创建服务器证书的csr请求文件“server.csr”。
1
openssl req -out server.csr -key server.key -new -config ./server_cert.conf
- 使用CA证书签发服务器证书“server.crt”。
1
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密码。
- 使用CA证书签发客户端证书。
- 登录到生成CA证书的服务器。
- 创建与CA平级的目录,并进入该目录。
1
mkdir client && cd client
- 创建客户端证书的OpenSSL配置文件“client_cert.conf”,内容参考如下:
1 2 3 4 5 6 7 8 9 10 11
[ 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地址。
- 创建客户端证书私钥文件“client.key”。
1
openssl genrsa -aes256 -out client.key 4096
图4 设置client密码- 请合理设置的密码强度,长度至少为8个字符,且包含数字、大写字母、小写字母、特殊符号中的两种及以上字符组合,避免使用常见的弱口令。
- 服务端启动时需要服务端CA证书对应的密钥,请勿使用明文密钥,建议通过华为KMC组件进行管理和使用。在使用密钥时应采取包括但不限于“敏感信息在程序中用完即销毁”等安全措施。
- 创建客户端证书的csr请求文件“client.csr”。
1
openssl req -out client.csr -key client.key -new -config ./client_cert.conf
- 使用CA证书签发客户端证书“client.crt”。
1
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”等,避免信息泄露。
父主题: StreamServer推理服务