OpenSSL CNF 使用变量

OpenSSL CNF 使用变量

如何在 OpenSSL CNF 文件中使用用户输入的变量?

我有以下CNF:

[ req_distinguished_name ]
emailAddress = Email Address

# specify defaults
emailAddress_default = [email protected]

我如何使用电子邮件用户选择对于emailAddress下一节中的选项,如果不使用脚本来生成 CNF?

[ usr_cert ]
# Extensions for client certificates (`man x509v3_config`).
subjectAltName = email:[email protected]

答案1

在 OpenSSL 的配置文件中,你可以使用来自不同部分的值${section::name}。但是,这些值似乎是在流程的早期(在用户输入之前)解析的,因此会出现如下行:

[ req_distinguished_name ]
emailAddress                    = Email Address
emailAddress_max                = 64

....

[usr_cert]
# Extensions for client certificates (`man x509v3_config`).
subjectAltName = email:${req_distinguished_name::emailAddress}

将导致主题备用名称为:

X509v3 Subject Alternative Name:
    email: Email Address

(假设Email Address是提示)而不是输入的电子邮件地址。

另一种方法是将您的电子邮件地址作为环境变量,在运行 OpenSSL 之前设置,然后在您的配置中使用以下内容:

[usr_cert]
# Extensions for client certificates (`man x509v3_config`).
subjectAltName = email:${ENV::email_address}

并运行:

email_address="[email protected]" openssl req -new -newkey test.key -out test.csr -nodes

生成的请求 ( test.csr) 将具有:

X509v3 Subject Alternative Name:
    email: [email protected]

这可能不适合您,当然取决于您的应用程序,但这可能是您能获得的最接近的答案。

另一种选择是使用脚本动态生成 OpenSSL 配置,其中包含正确的电子邮件地址和其他已配置的详细信息。

相关内容