操作流程
-
openssl genrsa -out rootCA.key 2048`
genrsa
是 OpenSSL 中的一个命令,用于生成 RSA 私钥。RSA 是一种广泛使用的非对称加密算法,通常用于 SSL/TLS 加密、数字签名和密钥交换-out rootCA.key
将生成的文件输出到rootCA文件2048
指定了生成的 RSA 密钥的位数。在此命令中,密钥的大小为 2048 位。
-
创建文件
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
-
根据
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)。
-
查看证书信息是否正确。
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地址是否存在对应项。