HTTPD + OpenSSL - Долгое время для подключения к порту 443, затем ssl_handshake_failure

Я знаю, что ssl_handshake_failure - это общая ошибка, однако это мое последнее средство, так как я занимаюсь этой проблемой в течение трех недель.

Я развертываю сервер HTTPD Apache на сервере AIX. У AIX нет стандартного репозитория, поэтому я установил его из пакетов RPM с perzl.org/aix/

. Мне было трудно решить все зависимости, но в конце концов я заставил его работать. Я надеюсь, что RPM не позволит мне сделать это без всех необходимых зависимостей.

Сервер apache работает довольно хорошо, когда я использую только HTTP через порт 80. Проблемы возникают, когда я пытаюсь подключиться к нему через порт 443.

Я тестирую это с помощью следующей команды:

openssl s_client -state -connect 127.0.0.1:443

Как только я запускаю эту команду, я получаю:

CONNECTED(00000003)
SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A

Затем OpenSSL ждет около двух минут, а затем выдает следующую ошибку:

804401144:error:140790E5:SSL routines:ssl23_write:ssl handshake failure:s23_lib.c:177:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 305 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID:
    Session-ID-ctx:
    Master-Key:
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1505947800
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

Это очень странно, кажется, что apache не отправляет никаких данных обратно , затем по истечении некоторого времени ожидания клиент OpenSSL "устает" ждать, а затем выдает ошибку.

Я попытался сохранить свою конфигурацию настолько простой, насколько мог, так как я просто хочу пока завершить рукопожатие.

Это мой httpd-ssl.conf

LoadModule ssl_module /opt/freeware/lib/httpd/modules/mod_ssl.so

Listen 443

SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4
SSLProtocol all -SSLv3


<VirtualHost *:443>

DocumentRoot "/usr/local/Tomcat/tomcat1/webapps/ROOT"
ServerName <server_name>:443
ServerAdmin root@localhost
ErrorLog "logs/httpd/ssl_error_log"
LogLevel trace8
TransferLog "logs/httpd/ssl_access_log"
LogLevel trace8

SSLEngine on

SSLCertificateFile "cert.crt"
SSLCertificateKeyFile "cert.key"


<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/var/www/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog "/var/log/httpd/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

</VirtualHost>

Я поместил все журналы на уровень trace8, но мне это не помогло, когда я пытаюсь завершить подтверждение ssl, это все, что я получил из ssl_error_log :

[ssl:info] [client 127.0.0.1:36193] AH01964: Connection to child 66 established (server <server_name>:443)
[ssl:trace2] ssl_engine_rand.c(125): Seeding PRNG with 136 bytes of entropy
[ssl:trace3] ssl_engine_kernel.c(1988): [client 127.0.0.1:36193] OpenSSL: Handshake: start
[ssl:trace3] ssl_engine_kernel.c(1996): [client 127.0.0.1:36193] OpenSSL: Loop: before/accept initialization
[ssl:info] [client 194.10.155.114:52781] AH01964: Connection to child 65 established (server <server_name>:443)
[ssl:trace2] ssl_engine_rand.c(125): Seeding PRNG with 136 bytes of entropy
[ssl:trace3] ssl_engine_kernel.c(1988): [client 194.10.155.114:52781] OpenSSL: Handshake: start
[ssl:trace3] ssl_engine_kernel.c(1996): [client 194.10.155.114:52781] OpenSSL: Loop: before/accept initialization

Версия OpenSSL:

OpenSSL 1.0.2j-fips  26 Sep 2016

Версия Apache HTTPD:

Server version: Apache/2.4.25 (Unix)

Есть идеи, что мне может не хватать, ребята? Почему для появления ошибки рукопожатия требуется значительное время, как и для ошибки тайм-аута?

Боюсь, это может быть что-то фиктивное, что я пропустил, или какие-то сложные проблемы с зависимостями, поскольку я не установил его ни из какого репо .

Есть предположения?

0
задан 21 September 2017 в 17:13
1 ответ

Используйте настоящее имя сервера вместо « ServerName : 443 ». https://httpd.apache.org/docs/current/en/mod/core.html#servername

«Если ServerName не указан, сервер пытается определить клиентское видимое имя хоста, сначала запросив у операционной системы имя хоста системы, и, если это не удается, выполнение обратного поиска на IP-адрес, присутствующий в системе. "

0
ответ дан 5 December 2019 в 07:26

Теги

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