#java #spring-boot #ssl #ibm-mq
#java #весенняя загрузка #ssl #ibm-mq
Вопрос:
мы используем spring boot для отправки сообщения ibm mq manager на удаленном сервере, а для аутентификации мы используем SSL-сертификат мы используем cipher suite для шифрования данных
Вопрос: почему мы получаем эту ошибку, хотя мы не используем учетные данные для аутентификации, а вместо этого используем ssl?
код прост, это метод в основном классе загрузки spring приложения
@PostConstruct
public void listen() {
System.setProperty("javax.net.debug", "true");
System.setProperty("javax.net.ssl.trustStore", sslkeyr );
System.setProperty("javax.net.ssl.keyStore", sslkeyr );
System.setProperty("javax.net.ssl.keyStorePassword", sslpass );
System.setProperty("com.ibm.mq.cfg.useIBMCipherMappings", "false");
System.setProperty("jdk.security.allowNonCaAnchor", "true" );
System.out.println("start sending message ....");
//ProducerService producerService=new ProducerService();
producerService.sendMessage();
System.out.println("start sending message sent success ....");
}
— и это файл свойств
server.ssl.key-store=/home/user/file.jks
server.ssl.key-store-password=pass
server.ssl.key-store-type=JKS
jdk.security.allowNonCaAnchor=true
ibm.mq.queueManager=qmName
ibm.mq.channel=channel
ibm.mq.connName=ip(port)
ibm.mq.sslCipherSuite=TLS_RSA_WITH_AES_256_CBC_SHA256
Подсказка: я использовал пример кода ibm ( https://github.com/ibm-messaging/mq-tls-ssl-wizard/blob/master/com.ibm.mq.ssl-wizard/src/tlswizard/samples/SSLSampleJMS.java) с теми же свойствами, конфигурацией и файлом jks
для отправки сообщения (но не с приложением spring boot) и успешного сообщения, отправленного и полученного MQ, но проблема возникает, когда мы использовали spring boot
Комментарии:
1. С 2035 всегда лучше проверить диспетчер очередей
AMQERR01.LOG
, чтобы узнать, в чем причина. Какserver.ssl.key-store-password=pass
сопоставляется сSystem.setProperty("javax.net.ssl.keyStorePassword", sslpass );
?2. в журнале отображается то же сообщение, что клиент должен быть уверен в имени пользователя и пароле, @Value(«$ {server.ssl.key-store-password}») частная строка sslpass; @joshMc
3. Прочитайте README для запуска Spring boot. В нем сообщается, что в конфигурации по умолчанию будет использоваться пользователь / пароль по умолчанию, и как вы должны настроить свойства так, чтобы ОНИ НЕ отправлялись, вместо этого явно указав пустого пользователя в свойствах.