Как добавить тему оповещения в SSL-сертификаты? - PullRequest
40 голосов
/ 05 января 2012

Я использую openssl для создания самозаверяющих сертификатов.Я получаю эту ошибку с сертификатами, которые я сгенерировал: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: отсутствуют альтернативные имена субъектов

Кто-нибудь знает, как указать «Альтернативное имя субъекта»при создании сертификата?Вот как я создаю хранилище ключей:

sudo $JAVA_HOME/bin/keytool -genkey -dname "CN=192.168.x.xxx, OU=I, O=I, L=T, ST=On, C=CA" -alias tomcat -validity 3650 -keyalg RSA -keystore /root/.keystore -keypass abcd -storepass abcd

Чтобы сгенерировать ключ:

 openssl s_client -connect 192.168.x.xxx:8443 2>/dev/null

Пожалуйста, помогите!Спасибо!

Ответы [ 3 ]

58 голосов
/ 05 января 2012

Хотя этот вопрос был более конкретно об IP-адресах в Subt Alt. Имена, команды похожи (используются DNS записи для имени хоста и IP записи для IP-адресов).

Процитирую себя:

Если вы используете keytool, начиная с Java 7, keytool имеет возможность включить альтернативное имя субъекта (см. таблицу в документации для -ext): вы можете использовать -ext san = dns: www.example.com или -ext Сан - = ф: 10.0.0.1

Обратите внимание, что вам нужна только Java 7 keytool, чтобы использовать эту команду. После того, как вы подготовили хранилище ключей, оно должно работать с предыдущими версиями Java.

(В остальной части этого ответа также упоминается, как это сделать с OpenSSL, но это не то, что вы используете.)

21 голосов
/ 27 марта 2013

IP и DNS можно указать с помощью дополнительного аргумента keytool -ext SAN=dns:abc.com,ip:1.1.1.1

Пример:

keytool -genkeypair -keystore <keystore> -dname "CN=test, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown" -keypass <keypwd> -storepass <storepass> -keyalg RSA -alias unknown -ext SAN=dns:test.abc.com,ip:1.1.1.1
6 голосов
/ 26 апреля 2017

Когда генерируется CSR, можно снова указать атрибут -ext , чтобы вставить его в CSR

keytool -certreq -file test.csr -keystore test.jks -alias testAlias -ext SAN=dns:test.example.com

завершить пример здесь: Как создать CSR с использованием SAN с использованиемKeytool

...