关于openssl.conf文件

OpenSSL 的配置文件 openssl.conf 有以下几个主要用途:

  1. 定义默认选项和参数:
    在 openssl.conf 中可以设置 OpenSSL 命令的默认参数,如密钥长度、签名算法、证书有效期等。这样可以避免每次使用 OpenSSL 命令时都需要重复输入这些参数。

  2. 定义证书和密钥的配置信息:
    openssl.conf 文件可以包含创建证书和密钥时需要的一些基本信息,如国家、州/省、城市、组织名称、常用名等。这些信息在生成证书时会自动填充。

  3. 定义证书扩展字段:
    openssl.conf 可以用来定义证书的扩展字段,如 basic constraints、key usage、extended key usage 等。这些扩展字段可以描述证书的用途和限制。
    4 定义 CA 证书和 CRL 的配置:
    如果你需要建立一个证书authority (CA),openssl.conf 文件可以用来定义 CA 证书、CRL (证书吊销列表) 的相关设置。

  4. 定义自定义的 OpenSSL 配置:
    openssl.conf 文件还可以用来定义 OpenSSL 内部的一些配置,如引擎、OCSP 设置、CRL 更新等。这些高级配置选项可以根据需求进行自定义。

    总的来说,openssl.conf 文件是 OpenSSL 的主要配置文件,它可以帮助你更方便地管理证书、密钥和 CA 的相关设置。对于复杂的 PKI 基础设施来说,合理地配置 openssl.conf 文件是很重要的。

使用 OpenSSL 生成证书文件时,是否需要使用 openssl.conf 配置文件取决于具体的使用场景和需求。
情况如下:

  1. 默认情况下不需要使用 openssl.conf:
    如果你只是想生成一个简单的自签名证书,并不需要特殊的配置,那么可以直接使用 OpenSSL 的命令行工具,不需要使用 openssl.conf 配置文件。
  2. 需要使用 openssl.conf 配置文件的情况:
    如果你需要生成更复杂的证书,比如 CA 证书、中间 CA 证书、服务器证书等,并且需要设置一些特殊的选项,如证书有效期、密钥长度、扩展字段等,那么使用 openssl.conf 配置文件会更加方便。
    如果你需要生成证书时遵循某些标准或组织的要求,如 X.509 标准、IETF 的 RFC 文档等,那么使用 openssl.conf 文件可以帮助你更好地满足这些要求。
    总的来说,如果你的需求比较简单,生成一个自签名证书就可以了,那么不使用 openssl.conf 也可以。但如果你需要生成更复杂的证书,或者需要遵循某些标准,那么使用 openssl.conf 配置文件会更加方便和可控。

生成三级证书链
在生成三级证书中一般使用该配置文件,在生成中间证书的时候会使用到,应该也是可以通过命令来是实现,下面给出的命令行是采用了使用配置文件生成中间证书的;
首先生成根证书和对应的私钥

openssl req -newkey rsa:2048 -nodes -keyout rootCA.key -x509 -days 365 -out rootCA.crt

生成中间证书的私钥和CSR

openssl req -new -nodes -keyout intermediate.key -out intermediate.csr

和用户证书不同的是,中间证书需要在证书的basicConstraints中设置CA:true标签,以标明该证书属于证书机构的证书,可以用于签发和验证用户证书。而openssl x509命令不能设置basicConstraints命令,因此我们需要采用openssl ca命令,该命令实现了一个简单的证书机构。
openssl ca 命令需要采用一个配置文件来配置生成证书的相关参数。我们创建一个intermediateCA.conf文件,其内容如下:

[ ca ]
default_ca = intermediate_ca
[ intermediate_ca ]
dir = .
private_key = $dir/rootCA.key
certificate = $dir/rootCA.crt
new_certs_dir = $dir/
serial = $dir/crt.srl
database = $dir/db/index
default_md = sha256
policy = policy_any
email_in_dn = no
[ policy_any ]
domainComponent = optional
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = optional
emailAddress = optional
[ ca_ext ]
keyUsage                = critical,keyCertSign,cRLSign
# 注意这里设置了CA:true,表明使用该配置生成的证书是CA证书,可以用于签发用户证书
basicConstraints        = critical,CA:true
subjectKeyIdentifier    = hash
authorityKeyIdentifier  = keyid:always

由于openssl ca命令实现了一个简单的证书机构,会使用一个文本数据库来记录生成的证书,我们需要生成该数据库索引文件。

mkdir db
touch db/index

使用intermediateCA.conf生成中间证书。

openssl ca -config intermediateCA.conf -days 365 -create_serial -in intermediate.csr -out intermediate.crt -extensions ca_ext -notext

生成Alice的私钥和CSR

openssl req -new -nodes -keyout Alice.key -out Alice.csr

生成Alice的用户证书。

openssl x509 -req -in Alice.csr -CA intermediate.crt -CAkey intermediate.key -CAcreateserial -out Alice.crt

对Alice的用户证书进行验证,验证时需要同时指明根证书和中间证书。

openssl verify -CAfile rootCA.crt -untrusted intermediate.crt Alice.crt

我们可以把根证书和中间证书的内容一起放到一个证书链文件中,然后使用该证书链文件来验证用户证书。

cat rootCA.crt intermediate.crt > chain.crt
openssl verify -CAfile chain.crt Alice.crt

以上生成证书过程取自:https://www.zhaohuabing.com/post/2020-03-19-pki/

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值