HA プロキシが SSL 検証に失敗する

HA プロキシが SSL 検証に失敗する

HAではGoDaddyワイルドカード証明書を使用しています(ワイルドカード.pem)バックエンドにはカスタム CA 証明書があります。社内 CA は HA とすべてのサーバーによって信頼されています。すべてのバックエンド サーバーに個別に問題なくアクセスできますが、SSL 検証を有効にすると、ヘルス チェックがほぼすぐに 503 エラーで失敗します。

HA 構成

frontend api.qa.domain.com_esil_HTTPS_443_VS_172.20.25.69
    mode http
    bind 172.20.25.69:80
    bind 172.20.25.69:443 ssl crt /etc/hapee-2.4/ssl/Wildcard.pem ciphers ECDHE-RSA-AES128-CBC-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-CBC-SHA:AES128-SHA:AES256-SHA:ECDHE-ECDSA-AES128-SHA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS ssl-min-ver TLSv1.2
    http-after-response replace-header set-cookie "^(my.session=.*)" "\1; SameSite=Strict" 
    http-request set-var(txn.path) path
    http-request set-var(req.backend) str(api.qa.domain.com_loggingservices_http_33313_POOL) if { path -i -m beg /loggingservice/ }
    
    use_backend %[var(req.backend)]

    backend api.qa.domain.com_loggingservice_http_333_POOL
    mode http
    http-request return status 503 content-type "text/html; charset=utf-8" lf-file /etc/hapee-2.4/apps/app_offline.htm if { nbsrv() le 0 }

    balance roundrobin
    dynamic-cookie-key Av3ryS3curek3y
    option httpchk GET /loggingservice/v1/_healthcheck HTTP/1.1
    http-check send hdr host api.qa.domain.com
    http-check expect status 200
    server QA_SERVER1_Node 10.133.20.24:333 check ssl verify none

弊社の CA を使用して作成したバックエンド証明書を GoDaddy pem ファイルとマージする必要がありますか? 必要な場合、正しい順序は何でしょうか?

答え1

はい、カスタム CA 証明書を GoDaddy 証明書ファイルと結合して、HAProxy バックエンド サーバー構成の ca-file オプションの値として使用できる結合証明書ファイルを作成する必要があります。結合ファイル内の証明書の正しい順序は次のとおりです。

リーフ証明書(GoDaddy ワイルドカード証明書)

中間証明書(GoDaddy の証明書チェーン)

ルート証明書(カスタム CA 証明書)

結合された証明書ファイルを作成するには、テキスト エディターを使用して、各証明書ファイルの内容を正しい順序で 1 つのファイルにコピーして貼り付けます。または、次のように Linux の cat コマンドを使用してファイルを連結することもできます。

cat leaf.crt intermediate.crt customCA.crt > combined_cert.pem

結合された証明書ファイルを作成したら、次のように ssl verify required ca-file オプションを使用するように HAProxy バックエンド サーバーの構成を更新できます。

backend api.qa.domain.com_loggingservice_http_333_POOL
    mode http
    http-request return status 503 content-type "text/html; charset=utf-8" lf-file /etc/hapee-2.4/apps/app_offline.htm if { nbsrv() le 0 }

    balance roundrobin
    dynamic-cookie-key Av3ryS3curek3y
    option httpchk GET /loggingservice/v1/_healthcheck HTTP/1.1
    http-check send hdr host api.qa.domain.com
    http-check expect status 200
    server QA_SERVER1_Node 10.133.20.24:333 check ssl verify required ca-file /path/to/combined_cert.pem

この構成では、HAProxy はカスタム CA 証明書を使用してバックエンド サーバーによって提示された SSL 証明書を検証し、証明書が有効であればヘルス チェックに合格するはずです。

関連情報