Я пытаюсь сделать POST
вызов на защищенный веб-сайт:NoSuchAlgorithmException: дер KeyStore не доступен
шаги:
1) Перейти к https://www.mywebsite.com (для справки)
2) Экспорт хранилище данных на вышеуказанном веб-сайте до C:\Program Files\Java\jre7\lib\security
.
3) Импорт его cacerts добавить самоподписанные подписи с использованием Keytool в
keytool -import -alias my-cert -file c:\cert.crt -keystore %JAVA_HOME%/jre/lib/security/cacerts
После выполнения вышеуказанных шагов, которые я использовал следующую программу:
String keystorePathAndName = "C:\\Program Files\\Java\\jre7\\lib\\security\\mykeystore";
String keystoreType = "der";
String keystorePass = "";
Integer port = 8089;
if (System.getProperty("port") != null) {
port = Integer.valueOf(System.getProperty("port"));
}
// Create a server listening on port 8089
Component component = new Component();
Server server = component.getServers().add(Protocol.HTTPS, port);
Series<Parameter> params = server.getContext().getParameters();
params.add("keystorePath", keystorePathAndName);
params.add("keystoreType", keystoreType);
params.add("keystorePassword", keystorePass);
component.getDefaultHost().attach("/Simulator",new UserApplication());
component.start();
Журналов ошибок:
Exception in thread "main" java.security.KeyStoreException: der not found
at java.security.KeyStore.getInstance(KeyStore.java:616)
at org.restlet.engine.ssl.DefaultSslContextFactory.createSslContext(DefaultSslContextFactory.java:299)
at org.restlet.engine.connector.HttpsServerHelper.start(HttpsServerHelper.java:92)
at org.restlet.Server.start(Server.java:579)
at org.restlet.Component.startServers(Component.java:642)
at org.restlet.Component.start(Component.java:567)
at com.user.app.userapp.main.AppServer.main(AppServer.java:78)
Caused by: java.security.NoSuchAlgorithmException: der KeyStore not available
at sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
at java.security.Security.getImpl(Security.java:695)
at java.security.KeyStore.getInstance(KeyStore.java:613)
... 6 more
ОБНОВЛЕНИЕ:
В ответ на ответ Лоло я не получаю PKCS12
или JKS
форматов при попытке сохранить хранилище ключей.
Пожалуйста, проверьте мое обновление в вопросе. В моем диалоговом окне сохранения не указаны параметры сохранения типа 'JKS' или' PKSC12'. –
Я в замешательстве. Ваш скриншот показывает, что вы сохраняете сертификат, а не хранилище ключей или хранилищ. Вам необходимо эффективно сохранить файл сертификата (который может иметь расширение «.der»), затем импортировать его в truststore_ с соответствующим форматом (используя «keytool»). Или я чего-то не хватает? – Lolo
да, это то, что я делаю. Я сохранил его как '.der', а затем импортировал с помощью keytool' keytool -import -alias my-cert -file c: \ cert.crt -keystore% JAVA_HOME%/jre/lib/security/cacerts', тогда мой код дает исключение как я упомянул «NoSuchAlgorithmException: der KeyStore недоступно». –