Кто-нибудь знает, как использовать StartCom SSL без хранилища ключей в Java ИЛИ использовать пользовательское хранилище ключей? - PullRequest
1 голос
/ 06 ноября 2011

Я нашел следующий пост, который, я думаю, может помочь, потому что мне нужен способ проверки моего веб-сайта (к которому подключается мое java-приложение) без использования хранилища ключей java:

http://www.mombu.com/programming/java/t-ssl-for-java-without-keystores-1366416.html

Тем не менее, я довольно новичок в мире SSL и не знаю, какие файлы и пароли мне нужно использовать, так что если кто-нибудь может указать мне правильное направление, это было бы здорово.Если вы не догадались, я получил свой SSL-сертификат от StartSSL, который запускается / принадлежит / что-то от StartCom Ltd. Вот пост, который я использовал для помещения деталей в хранилище ключей:

https://forum.startcom.org/viewtopic.php?t=1390

Заранее спасибо!

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

1 Ответ

1 голос
/ 06 ноября 2011

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

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

Отдельное хранилище ключей, называемое trustore, используется для хранения сертификатов открытых ключей объектов, которым вы доверяете.

Эти хранилища ключей можно поместить в ваш путь к классам и указать путь в вашем приложении в виде кода (это параметры виртуальной машины, которыеповлияет на все приложения, работающие на этой виртуальной машине):

Properties properties = System.getProperties();
properties.put("javax.net.ssl.keyStore", path/to/keystorefile);
properties.put("javax.net.ssl.keyStorePassword", keyStorePassword);
properties.put("javax.net.ssl.trustStore", path/to/truststore);
properties.put("javax.net.ssl.trustStorePassword", trustStorePassword);

РЕДАКТИРОВАТЬ:

Да, вы можете указать расположение хранилища ключей и доверенных лиц и их пароли в файле свойств и загрузитьфайл свойств как myProperties.load(myProperties.getClass().getResourceAsStream("/path/to/proertyfile.properties"));

, а затем использовать его в своем коде как (обработка исключений опущена) (это не повлияет на другие приложения):

KeyStore mykeystore = KeyStore.getInstance("JKS");
InputStream is = new FileInputStream("/path/from/myproperties");
mykeystore.load(is, myKeystorePasswordFromProperties.toCharArray());
...