🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

HAProxy

HAProxyは、実行しているサーバーに向けたTCP接続を別のサーバーに転送する処理を行うソフトウェアです。HAProxyでは複数の転送先サーバーを設定することで、ロードバランサとして利用することもできます。また、HTTPに特化した設定項目も用意されており、リバースプロキシとしても利用できます。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

1回答

2127閲覧

HAProxyのSSL証明書について

antiwararug

総合スコア35

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

HAProxy

HAProxyは、実行しているサーバーに向けたTCP接続を別のサーバーに転送する処理を行うソフトウェアです。HAProxyでは複数の転送先サーバーを設定することで、ロードバランサとして利用することもできます。また、HTTPに特化した設定項目も用意されており、リバースプロキシとしても利用できます。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2021/01/04 03:51

編集2021/01/04 03:53

お世話になっております。

LinuxのHAProxyを使用してロードバランサの構築をしています。
同じバックエンドサーバ環境に本番環境と検証環境を構築しています。

apache(バックエンドサーバ)の設定で「example.jp」の場合は本番環境のドキュメントルートに、
「test.example.jp」の場合は検証環境のドキュメントルートに飛ぶよう設定しています。

現在、HAProxyで読み込んでいる証明書ファイルは「example.jp」のものです。
ですので「test.example.jp」へアクセスした場合も、「example.jp」の証明書が表示されています。

これを「test.example.jp」の場合は「test.example.jp」の自己証明書に、
「example.jp」の場合は「example.jp」の証明書が表示されるようにしたいです。

以下はHAProxyの設定内容になります。

haproxy

1frontend http-in 2 bind *:80 3 reqadd X-Forwarded-Proto:\ http 4 default_backend static 5 6frontend https 7 bind *:443 ssl crt /etc/haproxy/server.pem #「example.jp」の証明書 8 reqadd X-Forwarded-Proto:\ https 9 default_backend static 10#--------------------------------------------------------------------- 11# static backend for serving up images, stylesheets and such 12#--------------------------------------------------------------------- 13backend static 14 balance roundrobin 15 appsession PHPSESSID len 32 timeout 30m request-learn 16 server web01 XX0.2XX.XX0.XX0:80 check 17 server web02 XX0.2XX.XX0.XX1:80 check

以下のように記述した場合、HAProxyに証明書を複数読ませる事が出来るようです。
参考にしたサイト

haproxy

1frontend https 2 bind *:443 ssl crt /etc/haproxy/server.pem crt /etc/haproxy/test_server.pem #「example.jp」と「test.example.jp」の証明書

【質問】
証明書を複数読み込ませる情報はネットから拾えたのですが、その証明書がどのように振り分けられるのか、その情報がありません。
試してみるのが早いのですが、現在稼働中のサーバなので安易に触れない状況です。
上記のように証明書を複数読み込ませた場合の挙動をご存知の方はいますか?
ホスト名から勝手に判断してしかるべき証明書を使用してくれるのでしょうか?
マイナーなシステムかとは思いますが、何卒宜しくお願い致します。

【備考】
aclを使用して条件分岐させ、ホスト名によって使用する証明書を切り替える、という事が出来ればそれで良いのですが、aclでは条件によってバックエンドサーバを切り替える、という事しか出来ないみたいです・・。
参考にしたサイト

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

その証明書がどのように振り分けられるのか、その情報がありません。

公式ドキュメント crt に記載されている通りではないでしょうか?

The certificates will be presented to clients who provide a valid TLS Server Name Indication field matching one of their CN or alt subjects.

If no SNI is provided by the client or if the SSL library does not support TLS extensions, or if the client provides an SNI hostname which does not match any certificate, then the first loaded certificate will be presented. This means that when loading certificates from a directory, it is highly recommended to load the default one first as a file or to ensure that it will always be the first one in the directory.

投稿2021/01/04 05:11

CHERRY

総合スコア25218

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

antiwararug

2021/01/04 06:14

ご回答いただきありがとうございます。 こちらの内容を元に対応していきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問