LINUX.ORG.RU
решено ФорумAdmin

Клиентский сертификат в openssl s_client


0

1

Доброго времени суток.

На сервере настроена проверка клиентских сертификатов. Сертификаты подписываются локальным CA.

При использовании curl или firefix проблем нет. Но при использовании openssl s_client - 400 bad request

curl:

curl --key private.key --cert certificate.crt --url "https://megaserver.bz"
firefox:

  •  openssl pkcs12 -export -in certificate.crt -inkey private.key -out container.p12 -name "client certificate"
    
  • Правка -> Настройки -> Дополнительно -> Шифрование -> Просмотр сертификатов -> Ваши сертификаты -> Импортировать
  • перезапуск firefox
  • при доступе к megaserver.bz будет предоставлен выбор, какой сертификат использовать. При выборе подходящего сертификата доступ будет предоставлен

openssl: добавляю сертификат CA в /etc/ssl/certs, делаю

  c_rehash /etc/ssl/certs
  openssl s_client -key private.key -cert certificate.crt -connect megaserver.bz:443 -CApath /etc/ssl/certs/
 [...] 
GET / HTTP/1.1
HOST: megaserver.bz

HTTP/1.1 400 Bad Request
Server: nginx

И главное в debug логе nginx видно, что s_client даже не пытается слать сертификат.

Кто-нибудь сталкивался? Есть особенности в использовании openssl или nginx?

★★★★★

Оказалось дело в том, что на ip несколько name based virtual hosts, и на этапе установки ssl сессии nginx не пошлёт список CA. curl и firefox это обходят ( старшие товарищи подсказывают, что это есть в стандарте TLS ), а openssl в лоб хочет список CA на этапе установки сессии.

router ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.