使用带有 -addext 和 -subj 参数的 OpenSSH 配置文件

使用带有 -addext 和 -subj 参数的 OpenSSH 配置文件

我正在尝试创建一个 bash 脚本来管理 PKI。我想使用 OpenSSL conf 文件为使用我的 CA 生成和签名的证书指定一些参数。

我指定了以下默认参数:


[ ca ]
default_ca = my ca

[ my ca ]
dir            = "path/to/ca"                     
certs          = $dir/certs                             
crl_dir        = $dir/crl                               
new_certs_dir  = $dir/new_certs                         
database       = $dir/index.txt                         
serial         = $dir/serial.txt                      

private_key    = $dir/ca.key    
certificate    = $dir/ca.crt      

default_days   = 3650               
default_crl_days = 30         
default_md     = sha256             

policy         = policy_strict      

[ policy_strict ]
countryName             = match
stateOrProvinceName     = match
organizationName        = match
organizationalUnitName  = supplied
commonName              = supplied
emailAddress            = optional

[ req ]
default_bits            = 2048
prompt                  = no
string_mask             = utf8only
default_md              = sha256
req_extensions          = v3_req
distinguished_name      = dn
default_days            = 365       

[ dn ]
C               = *my countrycode*
ST              = *my country*
L               = *my city*
O               = *my name
emailAddress    = *my mail*

[ v3_req ]
subjectKeyIdentifier    = hash
basicConstraints        = critical, CA:true
keyUsage                = critical, digitalSignature, cRLSign, keyCertSign
subjectAltName          = @alt_names

[ ecparam ]
namedCurve      = secp384r1

[ alt_names ]
email         = *my mail*

我想在使用脚本生成证书期间使用用户在脚本运行时设置的变量指定通用名称、组织单位和 alt_names DNS 条目。

但是,生成如下签名请求时:

openssl req -x509 -newkey ec:secp384r1 -keyout path/to/key -out path/to/cert --subj "/CN=$fqdn/OU=$ou" -addext "subjectAltName=DNS:$fqdn"

-subjOpenSSL 不使用和参数-addext,而是使用配置文件中设置的值覆盖(并且这些值未在配置文件中设置,因此 CSR 没有设置任何 CN/OU/subjectAltName DNS)。

有没有办法将命令行参数与配置文件结合起来,特别是针对脚本中要设置的 OU、CN 和 SAN 值?

谢谢

相关内容