Haproxyで複数のSSL証明書を構成する


28

私のhaproxyインスタンスは2つのドメインにサービスを提供します(主にメインサイトでのXSSを回避するため)。

ルールは次のようになります

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

これで、SSLは/etc/ssl/haproxy.pemデフォルトの証明書として使用します。これはの証明書でexample.comあり、ではありませんexample.io

複数のドメイン名の証明書を指定するにはどうすればよいですか?

回答:


60

たとえばhaproxy1.pem、すべての証明書をファイルに連結したり、haproxy2.pemすべてのpemファイルを含むディレクトリを指定したりできます。

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

あたりとしてhaproxyドキュメント

次に、設定で次のようなものを使用します。

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の詳細を読む

SSLサポートはhaproxyの開発段階にあり、明らかにパフォーマンスにかなりの影響があることに注意してください。

このスレッドで説明されている他のソリューションがあります:https : //stackoverflow.com/questions/10684484/haproxy-with-multiple-https-sites

お役に立てれば。


連結するときに証明書/キーの順序は重要ですか?
エリックアイグナー

たとえば、ディレクトリを指定する場合、順序は任意です。証明書を含める場合は、一致するキーを含めるようにします。
リコ

私はあなたが提案した方法で設定しましたが、haproxyはすべてのドメインで最初の証明書を使用し続けます:(
Erik Aigner

crt-list同じ結果で試してみた
エリックエグ

1
ああ!それはトリックをしました!
エリックアイグナー

9

証明書のリストを連結または指定する必要はもうありません。フォルダーを指定するだけです。

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

注:フォルダーが空ではなく、有効なPEMファイルが存在することを確認してください。存在しない場合、HAProxyは実行されません。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.