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.