На странице Top Ten One-Liners from CommandLineFu Explained предлагается этот прием (№ 3):
:w !sudo tee %
эта запись текущий буфер к stdin
из команды после !
. %
символом заменяют с текущим именем файла.
Вам не придется возиться с файлом openssl.cnf
.
Следующая команда демонстрирует, как сгенерировать самоподписанный сертификат с SAN для электронной почты nobody@example.com
:
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
-keyout example.key -out example.crt -subj '/CN=Nobody' \
-extensions san \
-config <(echo '[req]'; echo 'distinguished_name=req';
echo '[san]'; echo 'subjectAltName=email:nobody@example.com')
Фокус здесь в том, чтобы включить минимальный раздел [req]
, который достаточно хорош для OpenSSL, чтобы обойтись без своего основного openssl.cnf
файла.
В OpenSSL ≥ 1.1.1 это можно сократить до:
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
-keyout example.key -out example.crt -subj '/CN=Nobody' \
-addext 'subjectAltName=email:nobody@example.com'
Здесь мы используем новую опцию -addext
, поэтому нам больше не нужны -extensions
и -config
.
Не забудьте проверить содержимое сгенерированного сертификата:
openssl x509 -noout -text -in example.crt
См. также: https://security.stackexchange.com/a/198409/133603 и https://stackoverflow.com/a/41366949/19163
В openssl.cnf
наверху добавьте запись SAN = "email:copy"
(чтобы иметь значение по умолчанию в случае, если переменная среды SAN
не установлен), и в соответствующем использовании раздела SubjectAltName = ${ENV::SAN}
. Теперь просто звоните SAN="email:copy, email:adress@two" openssl ...
, где email:copy
удостоверяется, что основной адрес используется также. (Адаптированный отсюда)
openssl.conf
допустимо. Самая простая проверка пытается установить второе соединение (или scp
что-то), не сокращая первый один
– Tobias Kienzler
12.03.2013, 15:26