#openssl #libressl
Вопрос:
Я использую 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
I think I have done my job to search the internet for similar problems, but I have not come up with the exact situation (and a solution) yet. There are examples that show how to benefit from environment variables when setting SANs, but I could not see a case where the user is willing to change DNs through environment variables.
I have the following questions:
- Is what I am trying to achieve (i.e., have different DNs inside a configuration file and select them properly via environment variables) not doable at all?
- If the answer to the previous question is «No; you can achieve it,» how can I use the environment variables?
Обратите внимание, что выше я привел только минимальный (не)рабочий пример. В реальном случае у меня есть более длинный файл конфигурации, который правильно кодирует запросы и параметры расширения x509 для разных серверов и клиентов в одном центре сертификации. Если вам понадобится полный файл конфигурации, пожалуйста, дайте мне знать, чтобы я мог удалить конфиденциальную информацию и вставить полный файл конфигурации, обновив свой вопрос.
Я заранее благодарю вас за ваше время и помощь, и я с нетерпением жду любых указаний и/или конструктивных отзывов, которые могли бы решить мою проблему.