TLS/SSL证书中CN、O、OU含义及多DNS/IP配置疑问
使用OpenSSL生成自签名证书及私有CA操作流程
1. 生成根CA
执行以下命令:
openssl req -x509 \ -sha256 -days 356 \ -nodes \ -newkey rsa:2048 \ -subj "/CN=demo.mlopshub.com/C=US/L=San Fransisco" \ -keyout rootCA.key -out rootCA.crt
2. 生成服务器密钥
openssl genrsa -out server.key 2048
3. 创建csr.conf配置文件
cat > csr.conf <<EOF [ req ] default_bits = 2048 prompt = no default_md = sha256 req_extensions = req_ext distinguished_name = dn [ dn ] C = US ST = California L = San Fransisco O = MLopsHub OU = MlopsHub Dev CN = demo.mlopshub.com [ req_ext ] subjectAltName = @alt_names [ alt_names ] DNS.1 = demo.mlopshub.com DNS.2 = www.demo.mlopshub.com IP.1 = 192.168.1.5 IP.2 = 192.168.1.6 EOF
4. 生成证书签名请求(CSR)
openssl req -new -key server.key -out server.csr -config csr.conf
5. 创建cert.conf配置文件
cat > cert.conf <<EOF authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = demo.mlopshub.com EOF
6. 用自签名CA生成SSL证书
openssl x509 -req \ -in server.csr \ -CA rootCA.crt -CAkey rootCA.key \ -CAcreateserial -out server.crt \ -days 365 \ -sha256 -extfile cert.conf
证书配置字段疑问解答
1. csr.conf中的O(组织)、OU(组织单元)应填写什么内容?
- O(Organization,组织):填你的实体名称,比如公司全称、项目团队名、机构名等,用来标识证书所属的组织主体。私有CA场景下没有强制合规要求,填实际对应的名称即可,方便后续识别证书归属。
- OU(Organizational Unit,组织单元):填组织内部的具体部门、团队或项目组,比如“研发部”“电商项目组”“运维团队”,用来进一步细分证书的使用范围或所属团队。
2. CN(通用名称)的含义是什么?
CN(Common Name,通用名称)原本是指定证书绑定的核心域名或主机名,早期HTTPS靠这个字段验证访问域名是否和证书匹配。现在主流验证逻辑已经转向Subject Alternative Name(SAN,主体备用名称),但部分旧系统或工具仍会检查CN,所以通常把CN设为服务的主域名(比如示例里的demo.mlopshub.com),并和SAN里的主域名保持一致。
3. 为何需要配置多个DNS记录和IP地址?
一个服务往往有多个合法访问入口:
- 用户可能既用
demo.mlopshub.com访问,也用www.demo.mlopshub.com访问; - 服务可能部署在多台服务器上,对应多个IP地址。
把这些域名和IP加到SAN字段里,能让证书在所有这些入口被访问时,都能通过浏览器、API调用工具等客户端的证书验证,避免出现“证书不匹配”的安全警告,确保所有合法访问路径都能正常使用SSL加密。
内容的提问来源于stack exchange,提问作者Sanithu Jayakody
相关产品推荐
相关产品推荐

