2017-02-17 20 views
0

Так что я несколько раз бил головой по этой проблеме.Как включить шифр TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 с Apache 2.4 и mod_ssl

Проблема в том, что у меня есть приложение iOS, которое загружается в некоторый веб-контент. Попытки выполнить свою работу просто прекрасны, но дросселируются с ошибкой «Произошла ошибка SSL и не удалось создать безопасное соединение с сервером».

Я побежал URL через SSLLabs и увидел, что я следующее сообщение об ошибке перечислены в разделе Рукопожатие Simulation:

Apple ATS 9/iOS 9 "Server sent fatal alert: handshake_failure"

Не зная многое о нем, кажется, связано с не в состоянии обеспечить шифрования в WebView приложения, которое может гарантировать Forward Secrecy.

Список допустимых шифров для Apple ATS 9/iOS 9 указан here.

I соответствует этому списку к выходу openssl ciphers который я предоставил here

Прежде всего, шифры из списка OpenSSL и шифры из SSLLabs выглядят в двух различных форматах/именовании. Но, кроме того, похоже, что я не поддерживаю ни одного из ECDHE_ECDSA[...], если только не прочитаю его неправильно.

В отсутствие ничего лучшего, я просто возиться с ним и конфигурации SSL моего хозяина теперь эти строки в них:

SSLProtocol -ALL +TLSv1.2 
SSLCipherSuite TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:ECDHE-RSA-AES256-GCM- 
SHA384:HIGH:!RC4:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK 
SSLHonorCipherOrder On 

Это кажется не делать абсолютно ничего.

Это перестает иметь смысл для меня, когда я смотрю на доступные SSLLabs отчеты TLSv1.2. Я разместил этот список her. На мой взгляд, это совсем не соответствует тому, что я определил в SSLCipherSuite, но при сравнении этого списка со списком поддерживаемых шифров для ATS кажется вполне понятным, почему он жалуется.

Я признаю, что я немного над головой здесь. Я хотел бы понять, что происходит, но я честно не знаю, с чего начать.

  1. Есть ли у меня правильные шифры?
  2. Если нет, где я могу их получить (я в настоящее время на openssl 1.0.2k и Apache 2.4.25)
  3. Если у меня есть правильные шифры, как список openssl соответствует списку из SSLLabs?
  4. Как включить правильные шифры на сервере?

Большое спасибо за ваше время.

+0

Если это действительно полный список шифров, обнаруженных SSLLabs, то у вас, вероятно, есть другое определение SSLCipherSuite где-то в конфигурации apache. Обратите внимание, что невозможно использовать разные SSLCipherSuite для разных VirtualHost, поэтому, пожалуйста, проверьте все файлы конфигурации. –

+0

Ваши имена шифров неверны, как вы заметили (https://www.openssl.org/docs/man1.0.2/apps/ciphers.html имеет оба формата). Я не уверен, почему у вас не было бы шифров ECDHE, но попробуйте: https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=apache-2.4.18&openssl = 1.0.2k & hsts = no & profile = intermediate –

+0

@SteffenUllrich Я уверен, что нет другой конфигурации. Ну, по крайней мере, насколько я могу быть. Я тестирую настройку только с одним VirtualHost. –

ответ

0

Извините за поздний ответ. Все ваши комментарии были точкой в ​​правильном направлении. Тем не менее, я обнаружил, что настоящим виновником является флаг USE на dev-libs/openssh и net-misc/openssl. Из-за проблем с лицензированием шифры, которые я искал, не были включены из-за отсутствия флага bindist по умолчанию.

Я добавил оба на мой /etc/portage/packages.use с bindist отключен. Например:

dev-libs/openssl -bindist 
net-misc/openssh -bindist 

И затем я перекомпилировал оба. После восстановления обоих пакетов и всего, что от них зависело, все мои шифры ECDHE_ECDSA [...] были легко доступны.

 Смежные вопросы

  • Нет связанных вопросов^_^