Вы добавили SAN в CSR , но не сказали ca
включать расширения из CSR в сертификат. Видетьhttps://security.stackexchange.com/questions/150078/missing-x509-extensions-with-an-openssl-generated-certificateили справочную страницу дляca
также в Интернете по адресуcopy_extensions
РЕДАКТИРОВАТЬ :Вам также необходимо указать x509_extensions
в конфигурации ca
или эквивалентную, но менее удобную опцию командной строки -extensions
, в любом случае указывающую на раздел, который существует, но может быть пустым, если вам не нужны расширения, требуемые CA -. Сначала я этого не заметил, потому что никогда не пробовал в случае с расширениями из CSR только , а не конфиг, что нереально для большинства УЦ. Если вы укажете copy_extensions
, отличное от none
(, и в CSR есть некоторые ), но не укажите x509_extensions
, тогдаca
помещает расширения в сертификат, но не установите версию сертификата на v3, как того требуют стандарты (, такие как rfc5280 ), если присутствуют расширения.
Возможно, это ошибка; man-страница говорит, что x509_extensions/extensions
управляет настройкой v3, и , а не , говоря что-либо подобное о copy_extensions
, подразумевает, что это не так, но ИМХО, это, безусловно, очень неоптимальная функция. РЕДАКТИРОВАТЬ :это ошибка, которая будет исправлена, но до тех пор используйте обходной путь, см.https://unix.stackexchange.com/a/394465/59699
ОДНАКО :в моем тесте это на самом деле не решило вашу проблему. Несмотря на то, что сертификат имеет *.local
в SAN и CN и (теперь )в остальном действителен, мой Firefox (53.0.2 )и Chrome (59.0.3071.109 )по-прежнему отклоняют его с SSL _ОШИБКА _CERT _ДОМЕН _ОШИБКА и ОШИБКА _CERT _ОБЩЕЕ _ИМЯ _НЕДЕЙСТВИТЕЛЬНО соответственно. Я предположил, что они могут не исключать local
из обычной логики уровня 2+ -, и попробовал*.example.local
:Chrome принимает это, а Firefox — нет.Я также пробовал *.example.org
и Chrome, и IE11, такие как , , но все еще не Firefox (, и, конечно, присвоение себе имен в реальных TLD, таких как .org
, не является тем способом, которым DNS должен работать ). ].
Тут я застрял. При некоторой доработке OpenSSL можно заставить генерировать сертификат, содержащий почти все, что вы хотите, но что Firefox и Chrome примут , я не знаю. Я постараюсь изучить это и обновить, если я найду что-нибудь.
Надеюсь, вы имеете в виду , которое вы указали *.local
в качестве общего имени только для CSR сервера, а НЕ для сертификата CA (self -подписанного )). Если имена субъектов для ЦС и листовых сертификатов совпадают, ничто не будет надежно работать. РЕДАКТИРОВАТЬ :ваш отредактированный Q подтверждает, что они правильно отличались. Хотя в нем не упоминается также указание страны, штата и организации, как того требует политика ca
, которую вы использовали.
Примечание: «самоподписанный -» является техническим термином и означает подписанный одним и тем же ключом . Ваш сертификат ЦС является самоподписанным -. Сертификат вашего сервера подписан вами самостоятельно с помощью вашего собственного ключа, но он не самоподписанный -. Попытка применить инструкции для самоподписанного -сертификата к не -самоподписанному -сертификату была частью вашей проблемы.
И замечание Жиля о md5 для алгоритма подписи тоже верно.
РЕДАКТИРОВАТЬ :«Сброс» серийного номера (и индекса )для настройки openssl ca
— плохая идея, если только вы окончательно не откажетесь от сертификата ЦС и имени , для которых они использовались. Стандарты говорят, что данный ЦС не должен выдавать более одного сертификата с одним и тем же серийным номером в сертификате, и серийный файл — это способ openssl ca
(, а такжеx509 -req
)реализовать это. «Настоящие» (публичные )центры сертификации в настоящее время больше не используют простой счетчик, но включают энтропию для блокировки атак коллизий на PKI --google hashclash --, но это не проблема для личного центра сертификации, такого как ваш.Я легко могу поверить, что браузер (или другой надежный )недоволен, если он видит несколько сертификатов с одним и тем же серийным номером и именем CA, хотя я бы НЕ ожидал, что браузер будет постоянно хранить конечный сертификат --и, таким образом, видеть оба старые и новые в одном процессе, если они не работают долго ---, если вы не импортируете их в соответствующий магазин, в том числе в Firefox, если вы сделаете их постоянными «исключениями».
Шаблоны раскрываются только при совпадении имен файлов. Может быть, вместо этого вы можете использовать расширение скобок? Запустите скрипт с
pingall machine0{1..6}
, который будет расширен до
pingall machine01 machine02 machine03 machine04 machine05 machine06
подстановка — это другое название для генерации имени файла или расширения имени пути .
Это процесс, который преобразует подстановочные знаки оболочки в список файлов, которые им соответствуют. Его можно использовать только для существующих файлов.
Здесь вы можете вместо этого использовать фигурные скобки:
pingall machine{01..06}
Который оболочка расширяет до machine01
, machine02
... machine06
отдельные аргументы независимо от того, существуют ли файлы с таким именем в текущем каталоге (он не подставляется ).
Этот синтаксис взят из zsh
и также поддерживается последними версиями bash
и yash -o braceexpand
.
С ksh93
вы должны использовать:
pingall machine{1..6%02d}
хотя в этом конкретном случае вы также можете использовать:
pingall machine0{1..6}
С помощью команды GNU seq
вы также можете выполнить (, предполагая значение по умолчанию$IFS
):
pingall $(seq -f machine%02.0f 6)