Назад | Перейти на главную страницу

Как добавить расширенную строку использования ключа при создании самозаверяющего сертификата с помощью openssl

Я использую 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) какие еще биты вы можете указать в разделах расширения.