Ситуация:
Я хочу, чтобы это работало: запросы поступают от клиентов и идут на haproxy через порт 443 (ssl), а затем он должен идти на бэкэнд на 80-порт.
У меня есть сертификат сервера, предоставленный промежуточным сертификатом ca (ca1), ca1 и клиентским сертификатом. НО я не нашел решения для запроса правильного сертификата сервера из центра сертификации Windows на сервер haproxy (ubuntu). может быть причиной шаблонов. Я запросил сертификат сервера Windows Machine и скопировал его на haproxy.
И ПРОБЛЕМА В журнале HAProxy есть эта ошибка «Цепочка клиентских сертификатов ssl не может быть проверена»
конфиг haproxy:
интерфейс https_frontend
bind 192.168.14.167:443 ssl crt /etc/haproxy/cert/request/server.pem ca-file /etc/haproxy/cert/request/ca1-certificate.pem verify optional crt-ignore-err all no-sslv3
режим http
журнал / dev / журнал local7
опция httplog
use_backend web_server_1 если {ssl_fc_has_crt}
default_backend web_server_2
бэкэнд web_server_1
режим http
опция httplog
server w7 192.168.11.109:80 проверить
бэкэнд web_server_2
режим http
опция httplog
сервер xp 192.168.13.205:80 проверить
эта схема не работает.
дополнительная информация: лог из winXP, где я запускал opennssl
C: \ OpenSSL-Win32 \ bin> openssl s_client -connect haproxy2: 443 -cert client.pem -CAfile ca1-certificate.pem -state -showcerts
316: ошибка: 14094418: подпрограммы SSL: SSL3_READ_BYTES: предупреждение tlsv1 неизвестно ca:. \ Ssl \ s3_pkt.c: 1275: номер предупреждения SSL 48
316: ошибка: 140790E5: подпрограммы SSL: SSL23_WRITE: сбой подтверждения ssl:. \ Ssl \ s23_lib.c: 184: ... cer info ... Проверить код возврата: 20 (невозможно получить сертификат местного эмитента)
(извините за мой английский, если он плохой) Я прочитал много сообщений об этом, но не нашел решения.
В файлах server.pem и client.pem должно быть 3 раздела, и они должны выглядеть так:
-----BEGIN RSA PRIVATE KEY-----
<lots of base64 encoded data>
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
<lots of base64 encoded data>
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
<lots of base64 encoded data>
-----END CERTIFICATE-----
Частный ключ может не быть RSA, но он должен быть первым. Первый сертификат - это подписанный сертификат сервера. Второй сертификат должен быть сертификатом CA. Вы можете скопировать и вставить каждый раздел с помощью текстового редактора. Чтобы проверить свой сертификат, запустите это.
$ openssl verify -CAfile ca1-certificate.pem server.pem
server.pem: OK