Вопрос

Я пытаюсь отправить почту, используя JavaMail в порту 25 (без SSL), используя TLS, но с моим собственным Truststore (потому что оригинальные CACERTS TRUPTSTORE не содержат необходимых сертификатов, и я не хочу изменять Trustrate Trust Agstric of Java) Отказ У меня есть код, который может отправить почту, используя TLS, используя System TrustStore, настроив

mail.smtp.starttls.enable=true

Свойство, также, настраивая

System.setProperty("javax.net.ssl.trustStore", ...) 

Чтобы указать на правильное TrustStore, когда соединение идет безопасные работы. С момента своего обычного порта 25 мне не нужно настроить любой сокетэффективность Свойства (и реализации) либо. Я могу отправить почту, используя TLS на порт 25, используя System TrustStore.

Однако. Общее: я ищу другое решение, не модифицировать систему TrustStore ( Caqers. Файл, делая копию IT и изменить копию в порядке, хотя!) И свойства системы в настоящее время не требуются для его установки.

Что я уже пробовал:

  • Настройка моего собственного SSL сокетэффективность и используя свой собственный ключевой менеджер для загрузки другого Truststore. Это будет работать абсолютно идеально, когда не было необходимости отправлять по порту 25, но вместо этого я уже могу запустить безопасное соединение по порту 465. Однако .. Я не могу этого сделать, делать это Попытаюсь надежно подключиться к почтовому серверу, который не защищен, хотя.

  • Пытаясь настроить свой собственный сокетэффективность, но используя обычный розетка для реальной связи. Что в основном это то же самое, что вообще не используйте мою собственную сокету вообще и заканчиваются Java, используя файл TrustStore System CaCerts.

  • модифицировать Caqers. Файл System TrustStore. Это работает, но я не хочу изменять доверительный магазин системы, у меня не может быть разрешения на запись или пароль набора клавиш может быть изменен и т. Д.

  • модифицировать "javax.net.ssl.trustStore" Свойство системы, чтобы указать на мой собственный файл TrustStore. Работает красиво, но я тоже не хочу изменять свойства системы, потому что мой код работает на сервере, и я не знаю, какой другой код там и нуждается в недвижимости. Даже сохранение прежнего состояния и восстановления на самом деле не охраняется от других потоков, используя это свойство во время его модифицированного, поэтому мне не очень нравится это решение.

Итак .. Короче говоря: кто-нибудь знает решение о том, как я могу использовать не безопасное подключение к почтовому серверу в порту 25, переключитесь на TLS (настроив свойство Mail), это внутренне защищает соединение и использование моего собственного файла TrustStore Без модификации Caqers или системной собственности? Возможно, есть аналогичный путь к свойствам сокета, которые используются только тогда, когда не безопасное соединение идет безопасно?

Это было полезно?

Решение 2

Упс .. нашел его .. Есть два свойства сокета, которые можно пропустить .. Один для SSL, другой для не-SSL Factories ..

Другие советы

Начните приложение с -djavax.net.ssl.truststore = ...

Затем он будет иметь отношение только к вашему приложению Java и никаких других системных свойств.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top