自签名根证书(CA证书)颁布

操作流程

  1. openssl genrsa -out rootCA.key 2048`
    
    • genrsa 是 OpenSSL 中的一个命令,用于生成 RSA 私钥。RSA 是一种广泛使用的非对称加密算法,通常用于 SSL/TLS 加密、数字签名和密钥交换
    • -out rootCA.key 将生成的文件输出到rootCA文件
    • 2048 指定了生成的 RSA 密钥的位数。在此命令中,密钥的大小为 2048 位。
  2. 创建文件rootCA.cnf,其中alt_names下的参数分别为域名(DNS)以及 IP,该参数会在证书验证后对请求域名和ip地址进行校验

    [ req ]
    default_bits       = 2048
    prompt             = no                                                                                                 
    default_md         = sha512
    distinguished_name = dn
    req_extensions     = req_ext            	                                                                                                                                                                                                        					           	  
    [dn]
    C = CN                                                                                                                  
    ST = Beijing
    L = Beijing
    O = orgnaization
    OU = organizationUnit                                                                                                  
    CN = release                                                                                                            
    [ req_ext ]                                                                                                             
    subjectAltName = @alt_names                                                                                             
    [ alt_names ]
    DNS.1 = release.local
    DNS.2 = repo.local
    IP.1 = 192.168.140.50
    
  3. 根据rootCA.cnf文件生成CA证书

    openssl req -x509 -new -key rootCA.key -sha512 -days 3650 -out rootCA.crt -config rootCA.cnf -extensions req_ext
    
    • -x509 是一个选项,用于指定生成一个 自签名证书,而不是一个证书签名请求(CSR)
    • -new 选项表示生成一个新的请求或证书
    • -key rootCA.key 指定了证书签名所使用的私钥,即rootCA.key
    • -sha512 选项指定在生成证书时使用 SHA-512 哈希算法
    • -days 3650 设置证书的有效期为 3650 天,即 10 年
    • -out rootCA.crt 指定输出文件的名称。生成的自签名证书将保存为 rootCA.crt 文件。这个文件通常是 .crt 或 .pem 格式
    • -config rootCA.cnf 指定 OpenSSL 配置文件。rootCA.cnf 是配置文件的路径,它定义了证书生成过程中的一些选项(如证书的 DN 信息、扩展部分等)。
    • -extensions req_ext 选项指示 OpenSSL 在生成证书时应用名为 req_ext 的扩展部分。req_ext 是在 rootCA.cnf 配置文件中定义的部分,通常用于配置证书扩展,如 Subject Alternative Name (SAN)。
  4. 查看证书信息是否正确。

    openssl x509 -in rootCA.crt -text -noout
    

    在这里插入图片描述

cnf 文件配置说明

[ req ] 部分:

  • default_bits = 2048
    指定生成的 RSA 密钥 的位数为 2048 位。2048 位是常见的 RSA 密钥长度,具有足够的安全性,且计算性能较好。
  • prompt = no
    默认情况下,OpenSSL 会在生成证书请求时提示你输入有关组织和证书的信息。设置 prompt = no 会禁用这些提示,并直接从配置文件中获取相关信息。
  • default_md = sha512
    设置默认的 消息摘要算法 为 SHA-512。
  • distinguished_name = dn
    指定 distinguished_name 部分的配置名称为 dn,该部分会提供证书中有关主题的详细信息(如国家、组织等),这里的dn对应下面的dn标签
  • req_extensions = req_ext
    这是指向扩展部分的配置,指示 OpenSSL 使用 req_ext 部分中的扩展设置(例如 subjectAltName),对应下面的req_ext标签

[ dn ] 部分:

这个部分包含了 Distinguished Name(DN),它是证书中表示身份的基本信息。

  • C = CN
    证书的 国家(Country)为 中国(China)。CN 是中国的国家代码。
  • ST = Beijing
    证书的 省份/地区(State)为 北京。
  • L = Beijing
    证书的 城市(Locality)为 北京。
  • O = nso
    证书的 组织(Organization)名称为 nso。
  • OU
    证书的 组织单位(Organizational Unit)为 nsu。
  • CN
    证书的 公共名称。通常是服务器的域名或 IP 地址。

[ alt_names ] 部分:

这是 Subject Alternative Name(SAN) 部分的定义。该部分列出了证书的额外名称信息,它可以包括 DNS 名称和 IP 地址。SAN 是 SSL/TLS 证书中用于多个域名或 IP 地址的扩展,支持证书被用于多个服务或服务器,主要用于证书校验时会对域名进行校验,用于处理您正访问站点的安全证书上的名称无效,或者与站点名称不匹配的问题

  • DNS.1 = 域名。使用域名访问时候检验其域名。
  • IP.1 = ip地址。使用ip地址时校验ip地址是否存在对应项。
创建自签名根证书是构建私有PKI(公钥基础设施)中的关键步骤,适用于测试、开发或内部网络环境。以下是使用 OpenSSL 创建自签名根证书的详细步骤: ### 生成根密钥 首先需要生成一个私钥,该私钥将用于签署其他证书。推荐使用2048位或更高位数以确保安全性。 ```bash openssl genrsa -out rootCA.key 2048 ``` ### 创建自签名根证书 使用上面生成的私钥来创建一个自签名根证书。此证书通常具有较长的有效期,并且包含关于证书颁发机构的信息[^1]。 ```bash openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.crt ``` 在运行这条命令时,系统会提示输入一些信息,比如国家、省份、城市、组织名称、组织单位名称、通用名称(通常是你的域名)以及电子邮件地址等。这些信息构成了证书的主题字段。 ### 配置扩展(可选) 如果需要为根证书添加特定的X.509v3扩展,如基本约束、密钥用法等,则可以编辑OpenSSL配置文件或者直接通过命令行参数指定。例如,若要明确指出这是一个CA证书并设置路径长度限制,可以在创建证书时加入 `-addext` 参数[^4]: ```bash openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 \ -addext "subjectAltName = DNS:example.com, IP:192.168.1.1" \ -addext "basicConstraints = critical, CA:TRUE, pathlen:0" \ -addext "keyUsage = critical, cRLSign, keyCertSign" \ -out rootCA.crt ``` ### 安装与信任根证书 一旦根证书被创建出来,它就需要被安装到所有希望信任该CA的设备上。对于操作系统级别的信任,可能需要手动将 `rootCA.crt` 导入到系统的受信任根证书存储中。这样做的具体方法取决于使用的操作系统和浏览器[^4]。 ### 多域名支持(SAN) 若需支持多个域名,可以通过提供额外的 SAN(Subject Alternative Name)条目来实现。这要求在生成CSR时指定额外的DNS名称或IP地址。 以上步骤完成后,你就拥有了一个可用于签发其他证书自签名根证书。这个过程不仅有助于理解PKI的工作原理,也为实际应用提供了基础的安全保障。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值