Во-первых, я новичок в Spring-Boot и SSL в целом, но я провел несколько дней исследований и в основном пытаюсь получить простое приложение Spring-Boot, настроенное с помощью Client Authentication.Конфигурация аутентификации клиента Spring-Boot.
Я настроил разъем так:
private Connector createSslConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
try {
File keystore = getKeyStoreFile();
File truststore = keystore;
connector.setScheme("https");
connector.setSecure(true);
connector.setPort(sslPort);
protocol.setSSLEnabled(true);
protocol.setKeystoreFile(keystore.getAbsolutePath());
protocol.setKeystorePass("changeit");
protocol.setTruststoreFile(truststore.getAbsolutePath());
protocol.setTruststorePass("changeit");
protocol.setKeyAlias("apitester");
protocol.setClientAuth("need");
return connector;
}
catch (IOException ex) {
throw new IllegalStateException("cant access keystore: [" + "keystore"
+ "] or truststore: [" + "keystore" + "]", ex);
}
}
И контроллер, который выглядит так:
@RequestMapping("/test/{identifier}")
@ResponseBody
ResponseEntity<String> test(HttpServletRequest request, @PathVariable String identifier) {
return new ResponseEntity<String>("hello: " + identifier, HttpStatus.OK)
}
Однако, как только я запускаю мое приложение, я могу использовать браузер для навигации на localhost: sslport/hello/test/xxxx и получить ответ без загрузки любого сертификата клиента. Я ожидал, что вам будет предложено получить сертификат клиента.
Вы пробовали использовать 'https: // localhost: sslport/hello/test/xxxx'? –