Я использую openssl в Mac OS X 10.9 для создания самозаверяющего сертификата для служб удаленных рабочих столов Windows Server.
Используя команду ниже, я могу сгенерировать сертификат,
openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout myserver.key -out myserver.crt
Однако мне нужно добавить расширенную строку использования ключа Аутентификация сервера (1.3.6.1.5.5.7.3.1) и я не могу понять, как это сделать в приведенной выше команде.
Я пробовал использовать опцию openssl -extfile с файлом, содержащим это,
[= default ]
extendedKeyUsage = 1.3.6.1.5.5.7.3.1
Однако я получаю сообщение об ошибке «-extfile option is not found»
Пока 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) какие еще биты вы можете указать в разделах расширения.