Haproxy'de birden fazla SSL sertifikası yapılandırma


28

Haproxy örneğim 2 alan adı veriyor (çoğunlukla ana sitede XSS'yi önlemek için).

Kurallar böyle bir şeye benziyor

bind :443 ssl crt /etc/ssl/haproxy.pem

acl is_static   hdr_end(Host) -i example.com
acl is_api      hdr_end(Host) -i api.example.com
acl is_files    hdr_end(Host) -i example.io

redirect scheme https if !{ ssl_fc } is_static is_api

Artık SSL /etc/ssl/haproxy.pem, varsayılan sertifika olarak kullanmaktadır , ki bu sertifika için sertifika example.comolup olmadığını example.io.

Birden fazla alan adı için sertifikaları nasıl belirleyebilirim?

Yanıtlar:


60

Dosyalar söylemek içine tüm sertifikalarını arada kullanabilirsiniz haproxy1.pemve haproxy2.pemya tüm pem dosyaları içeren bir dizin belirtebilirsiniz.

cat cert1.pem key1.pem > haproxy1.pem 
cat cert2.pem key2.pem > haproxy2.pem

Gereğince HAProxy docs

Sonra yapılandırmada şunun gibi bir şey kullanın:

defaults
  log 127.0.0.1 local0
  option tcplog

frontend ft_test
  mode http
  bind 0.0.0.0:443 ssl crt /certs/haproxy1.pem crt /certs/haproxy2.pem 
  use_backend bk_cert1 if { ssl_fc_sni my.example.com } # content switching based on SNI
  use_backend bk_cert2 if { ssl_fc_sni my.example.org } # content switching based on SNI

backend bk_cert1
  mode http
  server srv1 <ip-address2>:80

backend bk_cert2
  mode http
  server srv2 <ip-address3>:80

SNI hakkında devamını oku

SSL desteğinin haproxy için geliştirme aşamasında olduğunu ve aynı zamanda görünüşte önemli bir performansa sahip olduğunu unutmayın.

Bu konuda konuşulan diğer çözümler var: https://stackoverflow.com/questions/10684484/haproxy-with-multiple-https-sites

Bu yardımcı olur umarım.


Sertifika / anahtar siparişi birleştirirken önemli mi?
Erik Aigner

Önemli olduğunu sanmıyorum, örneğin bir dizin belirtirseniz, siparişin keyfi olması gerekir. Bir sertifika eklerseniz eşleşen anahtarın da dahil edildiğinden emin olurum.
Rico

Önerdiğin gibi ayarladım, ama haproxy her etki alanı için ilk sertifikayı kullanmaya devam ediyor :(
Erik Aigner

crt-listAynı sonuçla da denedim
Erik Aigner

1
Aaaah evet! Hile yaptım!
Erik Aigner

9

Artık uzlaşmaya veya sertifika listesi belirtmeye gerek yok, sadece bir klasör belirtin:

frontend public
    bind *:443 ssl crt /etc/haproxy/ssl/

Not: klasörün boş olmadığından ve geçerli PEM dosyalarının bulunduğundan emin olun, aksi takdirde HAProxy çalışmaz.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.