bg-tutorials

Как сгенерировать CSR на GlassFish

Это руководство показывает, как создать CSR (Certificate Signing Request) для GlassFish (ныне Eclipse GlassFish) с помощью утилиты Java keytool.

GlassFish выделяется одной полезной особенностью: свежая установка уже поставляется с хранилищем ключей (keystore.p12 в Eclipse GlassFish 7.1 и новее, или keystore.jks в старых сборках) и записью сертификата по умолчанию с псевдонимом s1as. Вы можете сгенерировать CSR напрямую из этого существующего ключа или заменить его новым ключом с тем же псевдонимом. В любом случае тот же псевдоним будет использован при импорте подписанного сертификата, так что ключ, CSR и выданный сертификат хранятся в одном месте.

Что вам понадобится

  • Работающая установка GlassFish (или Eclipse GlassFish). Хранилище ключей по умолчанию находится в директории config домена, например glassfish/domains/domain1/config/keystore.p12 в Eclipse GlassFish 7.1 и новее, или keystore.jks в старых сборках.
  • Установленная Java, чтобы команда keytool была доступна. GlassFish поставляется с JDK, поэтому keytool обычно уже доступен в PATH. Проверьте это командой keytool -help.
  • Доступ к оболочке или терминалу на сервере GlassFish. Приватный ключ должен оставаться на этом сервере.
  • Точное полное доменное имя (FQDN), которое вы хотите защитить, например www.yourdomain.com, плюс любые дополнительные имена хостов для поля SAN.
  • Юридические данные вашей организации (страна, штат/область, населённый пункт, название организации) для поля Distinguished Name в CSR.
  • Мастер-пароль GlassFish для домена. Значение по умолчанию — changeit; на рабочих серверах меняйте его командой asadmin change-master-password.

Два способа создать CSR

Если вы уже создали свой CSR, переходите сразу к разделу отправка CSR, а затем к установке SSL-сертификата на GlassFish.

Существует два распространённых способа работы с keytool в GlassFish. Выберите тот, который подходит вашей ситуации:

  • Вариант A: создать CSR из существующего ключа s1as (рекомендуется). Новый домен GlassFish уже имеет приватный ключ с псевдонимом s1as внутри хранилища ключей по умолчанию (keystore.p12 в 7.1+, keystore.jks в старых сборках). Самый быстрый и наименее рискованный путь — оставить этот ключ на месте и просто экспортировать из него CSR. Переходите к варианту A.
  • Вариант B: заменить ключ s1as по умолчанию новым ключом, затем создать CSR. Используйте этот вариант, если хотите точно знать размер ключа и DN или подозреваете, что ключ по умолчанию мог быть использован или скомпрометирован. Переходите к варианту B.

Какой бы вариант вы ни выбрали, псевдоним должен оставаться s1as (или, если вы его измените, вам также придётся обновить domain.xml соответствующим образом). Прослушиватель HTTPS в GlassFish ищет сертификат по псевдониму, поэтому несоответствие псевдонима означает, что GlassFish не сможет найти ключ, и TLS не запустится.

Вариант A: создание CSR из существующего ключа s1as

Шаг 1: Перейдите в директорию config GlassFish

Откройте терминал и перейдите в директорию, где хранится хранилище ключей вашего домена. В стандартной установке это папка config домена domain1:

cd /opt/glassfish7/glassfish/domains/domain1/config

Скорректируйте путь в соответствии с тем, куда вы установили GlassFish (старые сборки GlassFish 4 вкладывают установку в корневую папку glassfish4/; Eclipse GlassFish 6, 7 и 8 обычно устанавливаются в glassfish7/, glassfish8/ или аналогичную папку). Если вы создали собственный домен, замените domain1 на имя этого домена. Выполните ls *.p12 *.jks в этой директории, чтобы узнать точное имя файла хранилища ключей: в Eclipse GlassFish 7.1 и новее вы увидите keystore.p12; в старых сборках — keystore.jks. Подставляйте это имя файла везде, где в командах ниже указано keystore.jks.

Шаг 2: Убедитесь, что запись s1as существует

Выведите содержимое хранилища ключей и проверьте, что s1as присутствует и является PrivateKeyEntry:

keytool -list -v -keystore keystore.jks -alias s1as

Введите пароль хранилища ключей (по умолчанию changeit; на рабочем сервере он должен совпадать с мастер-паролем вашего домена). В выводе должна присутствовать строка Entry type: PrivateKeyEntry. Если вместо этого появится сообщение Alias <s1as> does not exist, переходите к варианту B и создайте новую запись.

Шаг 3: Экспортируйте CSR с SAN

Современные браузеры и клиенты TLS проверяют сертификаты по расширению Subject Alternative Name (SAN), а не только по Common Name. Запросите SAN прямо в CSR, чтобы CA включил их в выданный сертификат:

keytool -certreq 
  -alias s1as 
  -keystore keystore.jks 
  -file glassfish.csr 
  -ext san=dns:yourdomain.com,dns:www.yourdomain.com

Что означают флаги:

  • -alias s1as: существующий псевдоним сертификата GlassFish. Приватный ключ под этим псевдонимом подписывает запрос.
  • -keystore keystore.jks: хранилище ключей GlassFish по умолчанию. Eclipse GlassFish 7.1 и новее поставляются с хранилищем PKCS12 с именем keystore.p12; старые сборки используют хранилище JKS с именем keystore.jks. Используйте то имя файла, которое реально существует в этой директории. Сама команда одинакова в обоих случаях; keytool сам определяет формат.
  • -file glassfish.csr: имя выходного файла CSR. Выберите любое удобное имя.
  • -ext san=dns:…: расширение Subject Alternative Name. Перечислите каждое имя хоста, которое должен покрывать сертификат, включая как голый корневой домен (yourdomain.com), так и субдомен www. Добавляйте дополнительные записи через запятую, например dns:api.yourdomain.com.

keytool запросит пароль хранилища ключей и запишет CSR в файл glassfish.csr в текущей директории. Поле Subject (Distinguished Name) CSR берётся из того, что хранится в записи s1as; в свежей установке GlassFish это автоматически сгенерированный самоподписанный сертификат, поэтому DN не будет соответствовать вашей компании. Большинство CA проверяют только Common Name и список SAN, позволяя переопределить остальные поля DN в форме заказа, но если вам нужен CSR, в котором DN уже содержит юридические данные вашей компании, используйте вариант B.

Вариант B: замена ключа s1as по умолчанию новым

Используйте этот вариант, если хотите полностью контролировать размер ключа и DN, или если предпочитаете не использовать повторно заводской ключ. Порядок действий: удалить запись s1as по умолчанию, создать новый ключ с тем же псевдонимом, затем экспортировать CSR. Сохранение псевдонима s1as означает, что вам не придётся впоследствии трогать domain.xml.

Шаг 1: Сделайте резервную копию хранилища ключей

Прежде чем что-либо удалять, скопируйте текущее хранилище ключей, чтобы иметь возможность откатиться при необходимости. Находясь в директории config домена:

cp keystore.jks keystore.jks.bak

Шаг 2: Удалите запись s1as по умолчанию

keytool -delete -alias s1as -keystore keystore.jks

Введите пароль хранилища ключей, когда будет предложено.

Шаг 3: Создайте новый приватный ключ с тем же псевдонимом

Сгенерируйте новый RSA-ключ длиной 2048 бит с псевдонимом s1as и укажите DN прямо в команде, чтобы она выполнялась без интерактивных запросов:

keytool -genkeypair 
  -alias s1as 
  -keyalg RSA -keysize 2048 
  -keystore keystore.jks 
  -dname "CN=www.yourdomain.com, O=Your Company LLC, L=San Jose, ST=California, C=US" 
  -validity 825

Что означают флаги:

  • -alias s1as: повторное использование псевдонима GlassFish по умолчанию, так что domain.xml не требует изменений.
  • -keyalg RSA -keysize 2048: RSA-ключ длиной 2048 бит является текущим публичным минимумом. Для новых ключей, которые вы планируете использовать несколько лет, разумным обновлением будет 3072 бита. Большинство публичных CA также принимают ECDSA (-keyalg EC -groupname secp256r1) для более компактного и быстрого ключа.
  • -keystore keystore.jks: хранилище ключей GlassFish по умолчанию. Подставьте keystore.p12 в Eclipse GlassFish 7.1 и новее. keytool сохраняет существующий формат хранилища (JKS в старых установках, PKCS12 в 7.1+); оба варианта здесь подходят.
  • -dname «CN=…»: поля Distinguished Name, записываемые в CSR. Укажите точные, юридически корректные данные вашей компании:
  • CN: точное FQDN, которое вы защищаете, например www.yourdomain.com, или wildcard-имя вроде *.yourdomain.com. Не вводите имя человека, несмотря на формулировку запроса keytool в интерактивном режиме.
  • O: полное юридическое название вашей компании.
  • L: полное название населённого пункта (без сокращений).
  • ST: полное название штата или региона (не используйте двухбуквенный код).
  • C: двухбуквенный код страны по ISO, например US, GB, DE.
  • OU (Organizational Unit): это поле больше не выдаётся публичными CA. Не включайте его в DN.

keytool запросит пароль хранилища ключей и пароль ключа. В домене GlassFish пароль хранилища ключей, пароль ключа и мастер-пароль домена должны совпадать, иначе GlassFish не сможет разблокировать ключ при запуске, и HTTPS не заработает. Нажмите Enter при запросе пароля ключа, чтобы использовать тот же пароль, что и у хранилища ключей.

Шаг 4: Экспортируйте CSR с SAN

Та же команда, что и в варианте A, но применённая к вашему новому ключу:

keytool -certreq 
  -alias s1as 
  -keystore keystore.jks 
  -file glassfish.csr 
  -ext san=dns:yourdomain.com,dns:www.yourdomain.com

Введите пароль хранилища ключей. keytool запишет CSR в файл glassfish.csr в текущей директории.

Важно: сохраняйте псевдоним s1as

Самая распространённая ошибка с keytool в GlassFish — изменение псевдонима на каком-то этапе, будь то при создании ключа или при импорте подписанного сертификата. Возникают два типа сбоев:

  • Неверный псевдоним у ключа. Прослушиватель HTTPS в GlassFish настроен на псевдоним s1as в domain.xml. Если вы создадите ключ с другим псевдонимом, GlassFish не сможет его найти, и прослушиватель откатится к самоподписанному сертификату по умолчанию (или не запустится вовсе). Если вам действительно нужен другой псевдоним, придётся обновить каждую ссылку на s1as в domain.xml соответствующим образом.
  • Неверный псевдоним при импорте. Когда CA возвращает подписанный сертификат, вы должны импортировать его обратно в тот же псевдоним, который содержит приватный ключ. Импорт с новым псевдонимом сохранит сертификат как отдельную доверенную запись без привязанного приватного ключа, и TLS работать не будет.

Запомните эти три значения, прежде чем закрыть терминал:

  • Псевдоним (по умолчанию s1as; сохраняйте его).
  • Путь к файлу хранилища ключей, например glassfish/domains/domain1/config/keystore.p12 (или keystore.jks в старых сборках).
  • Пароль хранилища ключей (который должен совпадать с мастер-паролем домена).

Проверьте CSR перед отправкой

Обнаружьте опечатки в DN или пропущенные SAN, прежде чем CA их проверит. Выведите содержимое CSR с помощью keytool:

keytool -printcertreq -file glassfish.csr

Либо, если установлен OpenSSL, используйте его:

openssl req -noout -text -in glassfish.csr

Убедитесь в трёх вещах в выводе: поле Subject отображает ваш точный DN, Subject Alternative Name перечисляет все нужные имена хостов, а размер Public-Key соответствует тому, что вы запросили (RSA 2048 бит или другое выбранное значение). Вы также можете вставить CSR в наш декодер CSR для аналогичной проверки прямо в браузере.

Отправьте CSR своему удостоверяющему центру

Откройте файл glassfish.csr в любом текстовом редакторе. Это обычный текстовый файл, начинающийся с ——BEGIN CERTIFICATE REQUEST—— и заканчивающийся строкой ——END CERTIFICATE REQUEST——. Скопируйте весь блок целиком, включая эти строки заголовка и окончания, и вставьте его в поле CSR при оформлении заказа у вашего CA. В Windows используйте Ctrl + A, затем Ctrl + C, чтобы захватить весь текст; в macOS используйте Cmd + A, затем Cmd + C.

После того как CA проверит ваш запрос и выдаст сертификат, продолжайте с разделом как установить SSL-сертификат на GlassFish. Вы импортируете цепочку CA как доверенную, затем импортируете подписанный сертификат обратно в псевдоним s1as в том же файле хранилища ключей (keystore.p12 в 7.1+, keystore.jks в старых сборках), и наконец настроите прослушиватель HTTPS на использование этого псевдонима.

Сэкономьте 10% на SSL-сертификатах при заказе сегодня!

Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10

Детальное изображение дракона в полете
Написано

Опытный автор контента, специализирующийся на SSL-сертификатах. Превращает сложные темы кибербезопасности в понятный, увлекательный контент. Вносите свой вклад в повышение уровня цифровой безопасности с помощью впечатляющих рассказов.

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.