Это руководство показывает, как создать 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


