web-dev-qa-db-ja.com

HAProxyおよび中間SSL証明書の問題

現在、Ubuntu AWSクラスターでComodo SSL証明書を検証する際に問題が発生しています。ブラウザーはサイト/コンテンツを適切に表示し、関連するすべての証明書情報(少なくとも、確認したものすべて)を表示していますが、特定のネットワークプロキシとオンラインSSLチェッカーは、チェーンが不完全であることを示しています。

これを解決するために、次のことを試みました。

  1. Haproxyを最新の1.5.3にアップグレードしました
  2. すべての証明書(サイト、中間、w /およびw/outルート)を含む連結された「.pem」ファイルを作成しました
  3. Haproxy.cfgファイルの「bind」行に明示的な「ca-file」属性を追加しました。

「.pem」ファイルは、opensslを使用してOKを確認します。さまざまな中間証明書とルート証明書がインストールされ、/ etc/ssl/certsに表示されます。しかし、チェックはまだ不完全なチェーンで戻ってきます。

私たちがチェックできる他の何か、またはこれを修正しようとすることができる他の変更について誰かがアドバイスできますか?

事前に感謝します...

[〜#〜] update [〜#〜]:haproxy.cfg(私は信じています)からの唯一の関連する行は次の行です:

bind *:443 ssl crt /etc/ssl/domainaname.com.pem

PDATE 2openssl s_clientからの出力

CONNECTED(00000003)
depth=0 OU = Domain Control Validated, OU = COMODO SSL, CN = www.domainname.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 OU = Domain Control Validated, OU = COMODO SSL, CN = www.domainname.com
verify error:num=27:certificate not trusted
verify return:1
depth=0 OU = Domain Control Validated, OU = COMODO SSL, CN = www.domainname.com
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:/OU=Domain Control Validated/OU=COMODO SSL/CN=www.domainname.com
   i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO SSL CA

以下は、www.domainname.com.pemの内容です(haproxy構成で参照されています)。

Bag Attributes
    localKeyID: 01 00 00 00
    friendlyName: www.domainname.com
subject=/OU=Domain Control Validated/OU=COMODO SSL/CN=www.domainname.com
issuer=/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO SSL CA
-----BEGIN CERTIFICATE-----
[...]
-----END CERTIFICATE-----
-----BEGIN INTERMEDIATE CERTIFICATE-----
[...]
-----END INTERMEDIATE CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
[...]
-----END RSA PRIVATE KEY-----
4
Sam K

FWIW、私はこれの底に着くことができました。問題は、.pemファイルのさまざまな証明書に使用した区切り文字でした。

区切り文字は正確に-----BEGIN/END CERTIFICATE-----である必要があります-「中間」や「ルート」などはありません。

また、HAProxyの動作する.pemには、チェーン内のすべての中間証明書とルート証明書が含まれています。これは、すべての証明書を取得する唯一の方法であるように思われました。

1
Sam K

中間証明書を含める正しい順序:

-----BEGIN PRIVATE KEY----- [Your private key] -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- [Your certificate] -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- [Intermidate#1 certificate] -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- [Intermidate#2 certificate] -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- [Root certificate] -----END CERTIFICATE-----

awk 1 ORS='\\n' ~/your_path/cert.pem

文字列をコピー

そのようにdocker-compose.ymlに貼り付けます:

proxy: image: tutum/haproxy ports: - "80:80" - "443:443" environment: - "DEFAULT_SSL_CERT=-----BEGIN PRIVATE KEY-----\nMIIEvQIBADA......" links: - webapp

それは私にとって仕事です。

3
Dariusz