0

libressl在 Alpine 上使用以下版本:

$ cat /etc/os-release 
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.14.2
PRETTY_NAME="Alpine Linux v3.14"
HOME_URL="https://alpinelinux.org/"
BUG_REPORT_URL="https://bugs.alpinelinux.org/"
$ libressl version -a
LibreSSL 3.3.3
built on: date not available
platform: information not available
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx) 
compiler: information not available
OPENSSLDIR: "/etc/ssl"

我正在使用以下openssl.cnf文件

# default section for variable definitions

DN                 = ca_dn
DISTINGUISHED_NAME = ${ENV::DN}

# certificate request configuration

[ req ]
default_bits       = 2048
default_md         = sha256
encrypt_key        = no
prompt             = no
string_mask        = utf8only
distinguished_name = ${DISTINGUISHED_NAME}

[ ca_dn ]
C                      = SE
ST                     = Stockholm County
L                      = Stockholm
O                      = Organization
OU                     = Unit
CN                     = Name 1
emailAddress           = user@domain.com

# certificate authority configuration

[ ca_ext ]
authorityKeyIdentifier = keyid, issuer
subjectKeyIdentifier   = hash
basicConstraints       = critical, CA:TRUE, pathlen:1
keyUsage               = critical, keyCertSign, cRLSign

# another distinguished name
[ other_dn ]
C                      = SE
ST                     = Stockholm County
L                      = Stockholm
O                      = Organization
OU                     = Unit
CN                     = Name 2

我正在尝试借助环境变量获取使用不同专有名称生成的证书。到目前为止,我未能实现我想要的:

$ printenv DN
$ libressl req  -newkey rsa:4096 -x509 -days 3650           \
                -keyout certs/ca.key -out certs/ca.crt      \
                -config certs/openssl.cnf -extensions ca_ext
$ libressl x509 -noout -subject -in certs/ca.crt 
subject= /C=SE/ST=Stockholm County/L=Stockholm/O=Organization/OU=Unit/CN=Name 1/emailAddress=user@domain.com
$ export DN=other_dn
$ printenv DN
other_dn
$ libressl req  -newkey rsa:4096 -x509 -days 3650           \
                -keyout certs/ca.key -out certs/ca.crt      \
                -config certs/openssl.cnf -extensions ca_ext
$ libressl x509 -noout -subject -in certs/ca.crt 
subject= /C=SE/ST=Stockholm County/L=Stockholm/O=Organization/OU=Unit/CN=Name 1/emailAddress=user@domain.com

我想我已经完成了在互联网上搜索类似问题的工作,但我还没有提出确切的情况(和解决方案)。有一些示例展示了如何在设置 SAN 时从环境变量中受益,但我看不到用户愿意通过环境变量更改 DN 的情况。

我有以下问题:

  1. 我想要实现的(即,在配置文件中有不同的 DN 并通过环境变量正确选择它们)根本不可行吗?
  2. 如果上一个问题的答案是“否;您可以实现”,我该如何使用环境变量?

请注意,我只在上面分享了一个最小(非)工作示例。在实际情况下,我有一个较长的配置文件,它为同一 CA 下的不同服务器和客户端正确编码请求和 x509 扩展选项。如果您需要完整的配置文件,请告诉我,以便我可以通过更新我的问题来剥离敏感信息并粘贴完整的配置文件。

我提前感谢您的时间和帮助,我期待任何可以解决我的问题的指示和/或建设性反馈。

4

0 回答 0