Я разрабатываю соединение между нашим сервером IIS и клиентским сервером, на котором работает Apache. Я настроил 2 способа TLS (требуется HTTPS). Когда они пытаются подключиться к нам, они получают следующее, а мы просто получаем ошибку 500 для журнала в IIS.
E2E connection XX.XXX.XXX.XXX:XXXXX<->XX.XXX.XXX.XXX:XXXXX3 <==> XX.XXX.XXX.XXX:XXXXX<->XX.XXX.XXX.XXX:XXXXX established.
Using Cipher: ECDHE-RSA-AES256-SHA384 TLSv1.2 256
Connection error: ssl_hs_rxhelloreq:6290: renegotiation disallowed (40)
Client connection XX.XXX.XXX.XXX:XXXXX<->XX.XXX.XXX.XXX:XXX closed.
<SERVER_CLOSED>: 10.115.142.228:443 closed the connection
Я новичок в устранении неполадок TLS / SSL, но из того, что я могу прочитать, повторное согласование запрещено (40), похоже, является переломным моментом. Имеется в виду безопасное повторное согласование (шифра)? Может ли это позволить клиент?
Используя OpenSSL на нашем сервере, кажется, все читается нормально. Нормально ли постоянно пересматривать шифр? И почему я вижу несколько строк дважды, даже если это успешное соединение?
SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
SSL_connect:SSLv3 read server hello A
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server key exchange A
SSL_connect:SSLv3 read server done A
SSL_connect:SSLv3 write client key exchange A
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:SSLv3 flush data
SSL_connect:SSLv3 read finished A
GET / HTTP/1.0
SSL_connect:SSL renegotiate ciphers
SSL_connect:SSLv3 write client hello A
SSL_connect:SSLv3 read server hello A
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server key exchange A
SSL_connect:SSLv3 read server certificate request A
SSL_connect:SSLv3 read server done A
SSL_connect:SSLv3 write client certificate A
SSL_connect:SSLv3 write client key exchange A
SSL_connect:SSLv3 write certificate verify A
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:SSLv3 flush data
SSL_connect:SSLv3 read finished A
HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 106
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/8.5
TechnicalId:
EventName:
По иронии судьбы эта проблема была решена путем включения согласования clientcertnegotiation на сайте IIS. По умолчанию IIS запрашивает сертификат клиента только после того, как дана команда запроса (например, GET / HTTP / 1.0). Включение этого заставляет клиента аутентифицироваться при первом запросе. Обычно это не проблема, но, поскольку у нашего клиента строгие политики безопасности, это было необходимо.
Получите хэш сертификата и идентификатор приложения из текущей привязки SSL
Удалить существующую привязку SSL
Снова добавьте привязку SSL с новыми параметрами.
netsh http show sslcert ipport=<ip>:<port>
netsh http delete sslcert ipport=<ip>:<port>
netsh http add sslcert ipport=<ip>:<port> certhash= $certHash appid=$appId clientcertnegotiation=enable