Ошибка SSL_ERROR_NO_CYPHER_OVERLAP с подписанным сертификатом

Моя компания предоставила клиенту приложение на основе Tomcat / MySQL, которое по умолчанию использует http. По просьбе клиента я включил использование https, создав самозаверяющий сертификат. Это сработало с учетом ожидаемой ошибки браузера при использовании самозаверяющего сертификата.

После проверки на проникновение они решили, что нам нужно отключить некоторые устаревшие протоколы ssl и шифров, поэтому я изменил коннектор ssl в моем tomcat server.xml чтобы выглядеть так:

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    clientAuth="false" sslProtocol="TLS" sslEnabledProtocols="TLSv1.2,TLSv1.1" ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_WITH_AES_128_GCM_SHA256"
    keystoreFile="/path/to/keystore/file"
    keystorePass="password" />

Это удовлетворило тест на проникновение, и приложение продолжало работать во всех трех основных браузерах (Chrome, Firefox и IE). Однако тест на проникновение также выявил, что в идеале мы не должны использовать самозаверяющий сертификат, поэтому, следуя этим руководствам , Я создал CSR и попросил клиента создать сертификат, подписанный для его внутреннего домена (к серверу можно было получить доступ по паре разных URL-адресов, следовательно, возникла необходимость создать CSR с SAN).

Я добавил сертификат в новое хранилище ключей и соответствующим образом изменил путь в файле server.xml. Теперь, когда я пытаюсь подключиться, я получаю следующую ошибку (это от Firefox, но все браузеры выдают аналогичную ошибку):

Secure Connection Failed

Произошла ошибка во время подключения к 172.31.1.36:8443. Не могут когда я пытаюсь подключиться, я получаю следующую ошибку (это из Firefox, но все браузеры выдают аналогичную ошибку):

Secure Connection Failed

Произошла ошибка во время подключения к 172.31.1.36:8443. Не могут когда я пытаюсь подключиться, я получаю следующую ошибку (это из Firefox, но все браузеры выдают аналогичную ошибку):

Secure Connection Failed

Произошла ошибка во время подключения к 172.31.1.36:8443. Не могут безопасно общаться с одноранговым узлом: нет общего алгоритма (ов) шифрования. Код ошибки: SSL_ERROR_NO_CYPHER_OVERLAP

Страница, которую вы пытаетесь просмотреть, не может быть отображена, поскольку не удалось проверить подлинность полученных данных. Пожалуйста, свяжитесь с владельцами веб-сайтов, чтобы сообщить им об этой проблеме.

Насколько я понимаю, сертификат не определяет, какие шифры или протоколы следует использовать, поэтому я не понимаю, почему это произошло. Это ошибка, которую я сделал при создании CSR, или это может быть ошибка, которую сделал клиент при создании сертификата?

-EDIT-

Кажется, я получаю ошибки везде, куда я обращаюсь. Если я пытаюсь импортировать ключ в хранилище ключей, я получаю либо следующее:

cat <keyfile> | openssl  pkcs12 -export -out <keystore>.p12
Enter pass phrase:
unable to load certificates

, либо это:

keytool -importkeystore -srckeystore <keyfile> -srcstoretype pkcs12 -destkeystore <keystore>.jks
Enter destination keystore password:
Re-enter new password:
Enter source keystore password:
keytool error: java.io.IOException: toDerInputStream rejects tag type 45

У меня есть заказчик, который отправляет мне цепочку сертификатов, и когда я пытаюсь импортировать его, я получаю эту ошибку:

keytool -import -trustcacerts -alias tomcat -file <certchain>.p7b -keystore <keystorefile>.jks
Enter keystore password:
keytool error: java.lang.Exception: Input not an X.509 certificate

Я нашел несколько решений о том, как преобразовать файл pkcs в x.509, но затем у меня появились другие ошибки, так что я полностью застрял. Группа 3 Требование состоит в том, чтобы каждая из этих групп принимала только электронные письма ...

В Office 365 (но практически любой Exchange должен иметь аналогичную проблему) создано несколько групп:

  • Группа 1
  • Группа 2
  • Группа 3

Требование состоит в том, чтобы каждая из этих групп принимала только электронные письма, отправленные им внутренними участниками (прошедшими проверку подлинности) и отправленные с определенного сервера за пределами Office 365, который находится в Linux.

Как настроить его так, чтобы он работает должным образом?

Я думал настроить группу на получение только аутентифицированных сообщений, установив соединители с этим сервером Linux, но поскольку ретранслятор будет анонимным, эти группы будут отклонять эти электронные письма. Я подумал о создании группы, которая будет содержать эти 3 группы и создать почтовое правило. Однако попытки создать правильное почтовое правило не увенчались успехом, потому что, хотя они позволяли участникам отправлять электронные письма из «одобренных» доменов, используя исключение, они также блокировали электронные письма, отправленные непосредственно пользователям (по правилу, что получатель является членом… где кажется, что членство в группе проверяется рекурсивно. »). Я играл с несколькими правилами, но не нашел ничего, что подходило бы. Мне не хватает таких параметров, как «ЕСЛИ НЕ из домена ..., отправлено в группу, сбросить электронную почту» для правила электронной почты, и обычно приходилось использовать исключения. Что не охватывало мой сценарий.

Какой правильный / предлагаемый способ сделать это?

enter image description here

0
задан 9 March 2017 в 19:38
1 ответ

Рекомендуемый подход заключается в использовании аутентифицированной учётной записи в Office 365. (Требуется лицензия, вероятно, поэтому и рекомендован подход :P )

https://support.office.com/en-us/article/How-to-set-up-a-multifunction-device-or-application-to-send-email-using-Office-365-69f58e99-c550-4274-ad18-c805d654b4c4

Это определенно гарантирует выполнение требования "Требовать аутентификации отправителя" в ваших группах.

То, что вы пытались сделать до сих пор, кажется, соответствует Варианту 3 в ссылке выше.

.
0
ответ дан 5 December 2019 в 08:29

Теги

Похожие вопросы