У нас есть служба весенней загрузки (2.0) с включенной конечной точкой отдыха SSL. мы добавили следующие свойства в наш application.properties
server.ssl.enabled:true
server.ssl.key-store-type=JKS
server.ssl.key-store:test.jks
server.ssl.key-store-password:123234
server.ssl.key-alias: test-service
server.ssl.ciphers=RSA_WITH_AES_256_CBC_SHA256
server.ssl.protocol=TLS
Но мы получаем это исключение при запуске службы
Caused by: java.lang.IllegalArgumentException: None of the [ciphers] specified are supported by the SSL engine : [[]]
at org.apache.tomcat.util.net.SSLUtilBase.getEnabled(SSLUtilBase.java:91) ~[tomcat-embed-core-8.5.28.jar!/:8.5.28]
at org.apache.tomcat.util.net.SSLUtilBase.<init>(SSLUtilBase.java:65) ~[tomcat-embed-core-8.5.28.jar!/:8.5.28]
at org.apache.tomcat.util.net.jsse.JSSEUtil.<init>(JSSEUtil.java:144) ~[tomcat-embed-core-8.5.28.jar!/:8.5.28]
at org.apache.tomcat.util.net.jsse.JSSEImplementation.getSSLUtil(JSSEImplementation.java:50) ~[tomcat-embed-core-8.5.28.jar!/:8.5.28]
at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:104) ~[tomcat-embed-core-8.5.28.jar!/:8.5.28]
at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:87) ~[tomcat-embed-core-8.5.28.jar!/:8.5.28]
at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:225) ~[tomcat-embed-core-8.5.28.jar!/:8.5.28]
at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1150) ~[tomcat-embed-core-8.5.28.jar!/:8.5.28]
at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:591) ~[tomcat-embed-core-8.5.28.jar!/:8.5.28]
at org.apache.catalina.connector.Connector.startInternal(Connector.java:1018) ~[tomcat-embed-core-8.5.28.jar!/:8.5.28]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ~[tomcat-embed-core-8.5.28.jar!/:8.5.28]
Любая помощь в решении этой проблемы ?. Пробовал с флагом Cipher Suite с помощью Customizer
@Bean
public WebServerFactoryCustomizer<TomcatServletWebServerFactory> sessionManagerCustomizer() {
msgLogger.info("Inside webserver container bean to enable cipher suite config");
return server -> server.addConnectorCustomizers((connector) -> {
((AbstractHttp11Protocol<?>) connector.getProtocolHandler())
.setUseServerCipherSuitesOrder(Boolean.toString(true));
});
}
Буду признателен за любую оказанную помощь. Мы застряли в этом больше двух дней. Спасибо
Нет, это не дубликат. Клиентская система отправляет RSA_WITH_AES_256_CBC_SHA256, тогда как SSL для tomcat - TLS_RSA_WITH_AES_256_CBC_SHA256, из-за чего я получаю исключение
Ошибка говорит «Ни один из [шифров] указан не поддерживается». Запись server.ssl.ciphers=RSA_WITH_AES_256_CBC_SHA256 - это Спецификация, на которое она ссылается, и в ней говорится, что ни один из перечисленных шифров (все 1 из них) не является поддержанный. Судя по моему чтению трассировки стека, ошибка возникает, когда он пытается инициализировать SSL Engine, то есть перед он подключился к удаленной системе, поэтому ошибка не в удаленной системе, а полностью в вашей конфигурации.
Поскольку шифр клиентской системы RSA_WITH_AES_256_CBC_SHA256 не был обнаружен механизмом SSL, я получил исключение после включения журнала SSL (javax.net.ssl.SSLHandshakeException: нет общих наборов шифров). Из-за чего мне пришлось указать это в файле свойств. Вот когда у меня возникла эта проблема при запуске службы
Если вы запустите код, показанный в дубликате, вы увидите, какие шифры у вас есть. Если вывод будет как в дубликате, вы увидите, что такого шифра, как RSA_WITH_AES_256_CBC_SHA256, нет. Один с префиксом TLS_DHE_, а другой - только с TLS_.
@Andreas, согласно этому: stackoverflow.com/questions/1179672/… JCE включен по умолчанию уже начиная с определенной второстепенной версии основных выпусков Java.




Краткий ответ от дублировать: Вам необходимо установить файлы политики юрисдикции неограниченной надежности Java Cryptography Extension (JCE).