Назад | Перейти на главную страницу

HAProxy - цепочка CA клиента ssl не может быть проверена

Ситуация:

Я хочу, чтобы это работало: запросы поступают от клиентов и идут на 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