При openssl x509
использовании -extfile
команды, которую вы используете openssl req
, необходимо -config
указать файл конфигурации.
Итак, вы можете использовать команду, подобную этой:
openssl req -x509 -config cert_config -extensions 'my server exts' -nodes \
-days 365 -newkey rsa:4096 -keyout myserver.key -out myserver.crt
Обычные подсказки для битов отличительного имени определены в файле конфигурации по умолчанию (который, вероятно, /System/Library/OpenSSL/openssl.cnf
в OS X), но этот файл не обрабатывается при использовании -config
, поэтому ваш файл конфигурации должен также включать некоторые биты DN. Таким образом, вышеприведенная ссылка cert_config
может выглядеть примерно так:
[ req ]
prompt = no
distinguished_name = my dn
[ my dn ]
# The bare minimum is probably a commonName
commonName = secure.example.com
countryName = XX
localityName = Fun Land
organizationName = MyCo LLC LTD INC (d.b.a. OurCo)
organizationalUnitName = SSL Dept.
stateOrProvinceName = YY
emailAddress = ssl-admin@example.com
name = John Doe
surname = Doe
givenName = John
initials = JXD
dnQualifier = some
[ my server exts ]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1
# 1.3.6.1.5.5.7.3.1 can also be spelled serverAuth:
# extendedKeyUsage = serverAuth
# see x509v3_config for other extensions
Как указано в комментарии, вы, вероятно, можете пропустить большинство полей DN. Для использования HTTPS, я думаю, все, что вам нужно, это CN, который соответствует вашему имени хоста.
В разделе «Формат выделенного имени и атрибута» в req (1) показано, как можно изменить вышеуказанную конфигурацию, чтобы запрашивать значения (и предоставлять значения по умолчанию), если вы хотите создать несколько похожих сертификатов / запросов.
Если вам нужны другие расширения сертификата, проверьте
x509v3_config (5),
какие другие биты вы можете указать в разделах расширения.