#java
#java
Вопрос:
Мне нужно создать локальный сертификат для работы ssl.
Я делаю следующие три шага, и все идет правильно
/usr/lib/jvm/jdk-7u80/jre/bin/keytool -genkey -alias tomcat -keyalg RSA
/usr/lib/jvm/jdk-7u80/jre/bin/keytool -export -alias tomcat -file tomcat.crt
sudo /usr/lib/jvm/jdk-7u80/jre/bin/keytool -import -trustcacerts -file tomcat.crt -alias tomcat -keystore /usr/lib/jvm/jdk-7u80/jre/lib/security/cacerts
Проблема в том, что при создании сертификата я перепутал данные, и я хочу сделать это снова.
Но я не знаю, как все стереть.
Я удалил файл tomcat.crt из своего дома
И я выполнил:
/usr/lib/jvm/jdk-7u80/jre/bin/keytool -delete -alias tomcat -keystore /usr/lib/jvm/jdk-7u80/jre/lib/security/cacerts
Но когда я снова запускаю:
/usr/lib/jvm/jdk-7u80/jre/bin/keytool -genkey -alias tomcat -keyalg RSA
Я получаю следующую ошибку
Key tool error: java.lang.Exception: The key pair has not been generated, the alias <tomcat> already exists
И я не знаю, где еще мне нужно что-то удалить, чтобы иметь возможность восстановить сертификат с самого начала
Ответ №1:
genKey также принимает аргумент хранилища ключей
-genkeypair {-alias alias} {-keyalg keyalg} {-keysize keysize} {-sigalg sigalg} [-dname dname] [-keypass keypass] {-validity valDays} {-storetype storetype} {-keystore keystore} [-storepass storepass] {-providerClass provider_class_name {-providerArg provider_arg}} {-v} {-protected} {-Jjavaoption}
Итак, я предполагаю, что здесь может происходить то, что genkey создает пару ключей в хранилище ключей, которое не является тем, с которым вы передаете -keystore
другим командам.
Попробуйте -delete
без -keystore
опции получить доступ к тому же хранилищу ключей, в котором вы -genkey
создали ключи.
Ответ №2:
Примечание: Команда может быть короче, если приняты параметры по умолчанию или вы хотите, чтобы вам предлагали ввести различные значения. Всякий раз, когда вы выполняете команду keytool, значения по умолчанию используются для неопределенных параметров, которые имеют значения по умолчанию, и вам предлагается ввести любые требуемые значения. Для команды genkey параметры со значениями по умолчанию включают псевдоним (по умолчанию используется mykey), срок действия (90 дней) и хранилище ключей (файл с именем .keystore в вашем домашнем каталоге). Обязательные значения включают dname, storepass и keypass.
Как указано на официальной странице руководства Oracle внизу.
Итак, при создании ключа ваше хранилище ключей, ~/.keystore
однако при удалении псевдонима вы удаляете его из cacerts
.
После этого, когда вы пытаетесь создать новый ключ, вы не указываете никакого хранилища ключей, следовательно, по умолчанию ~/.keystore
указывается, где ключ с псевдонимом уже существует, поскольку вы никогда не удаляли его оттуда!
Я надеюсь, что это поможет и рекомендовал бы прочитать больше об использовании keytool