Mac 上の Chrome ブラウザが Centos 上の Apache 2.4 に SSL/TLS 経由で安全に接続できない

Mac 上の Chrome ブラウザが Centos 上の Apache 2.4 に SSL/TLS 経由で安全に接続できない

当社は、Leaf Web アプリケーションを実行する複数のサイトを運営しています。当社の構成は Centos 7.9、.NET Web API、Apache 2.4 で実行されています。

このシステムは、イントラネットにアクセスするスタッフのみが使用します。自己署名された機関のルート証明書、中間証明書、および中間証明書によって署名 (発行) されたサーバー証明書を使用します。opensslチェーンを示します。

$ openssl s_client -connect leaf.ourdomain:443 -showcerts -CAfile path_to_root_cert/RootCert.cer 2> /dev/null | egrep "Certificate chain| s:| i:"
Certificate chain
 0 s:/CN=leaf.ourdomain
   i:/DC=org/DC=our_dc/CN=Our system CA
 1 s:/DC=org/DC=our_dc/CN=Our system CA
   i:/CN=Our System

私たちの機関の名前は分かりにくくしましたが、他の部分はすべてそのままにしています。

Chrome は Mac 上で実行されており、Mac のキーチェーン アクセス アプリでルート証明書を使用するように構成されています。これにより、Leaf の運用展開で安全でプライベートな接続が確立されます。

実稼働システムの VM クローンを構成しています。新しい秘密キーと、中間証明書によって署名されたサーバー証明書を作成しました。httpd.conf新しいドメイン名に合わせて変更されました。サーバー証明書、秘密キー、中間証明書はサーバーに保存され、次の httpd 属性がそれらをポイントするようになりました。

  SSLCertificateFile "/etc/pki/tls/certs/omop-leaf-temp_hpc_our_domain_ssl.cer"
  SSLCertificateKeyFile "/etc/pki/tls/private/omop-leaf-temp_hpc_our_domain_ssl.key"
  SSLCertificateChainFile "/etc/pki/tls/certs/Intermediate.cer"

サーバーのドメイン名は確認されているようです。難読化されているのは ですomop-leaf-temp.hpc.our_domain。この名前は、1) httpsリクエストのURL、2) Chromeによって報告されるエラーメッセージ、3) の に使用さCNSSLCertificateFileます。これは、

$ openssl x509 -text -in ./omop-leaf-temp_xxxx.cer| grep CN= | grep omop
        Subject: C=US, ST=xxx, L=xxx, O=Our System, OU=xxx, CN=-hpc.our_domain/emailAddress=leaf-support@xxx

しかし、本番システムへの安全な接続を確立する Chrome インスタンスは、VM クローンではその接続を確立できません。 Chrome は VM クローン内のサーバーへの安全な接続を確立できません

「PEM エンコード チェーン」は 3 つの証明書を識別します。順番はSSLCertificateFile、、、SSLCertificateChainFileそして Chrome がキーチェーン アクセスを通じて取得する自己署名ルート証明書です (推測ですが)。これで問題ないと思います。

httpdChrome が接続を試行したときに、ログにエラー ( error_log、、leaf_access_logおよびを含む) が報告されません。です。leaf_ssl_error_logLogLevelwarn

困惑しています。CN が正しく、証明書チェーンが良好なのに、Chrome が報告するのはなぜでしょうかYour connection is not private?NET::ERR_CERT_COMMON_NAME_INVALIDこの問題をさらに調査して修正するにはどうすればよいでしょうか?

ありがとう

答え1

一般名が間違っているようです:

./omop-leaf-temp_xxxx.cer| grep CN= | grep omop 件名: C=US、ST=xxx、L=xxx、O=Our System、OU=xxx、CN= "

しかし、「-hpc.our_domain/emailAddress=leaf-support@x」は「omop-leaf-temp.hpc.our_domain」とはかなり異なります。

答え2

@dave_thompson_085 が指摘しているように、サーバーの証明書には、サーバーの名前を含む SubjectAlternativeName (SAN) 拡張子が必要です。

これにより、Chrome (バージョン 102.0.5005.115) と Safari (バージョン 15.0) の両方がサーバーとの安全な接続を確立できるようになります。

証明書は以下を使用して作成されました

openssl req \
-newkey rsa:4096 \
-nodes \
-keyout omop-leaf-temp_redacted.key \
-out omop-leaf-temp_redacted.csr \
-config csr_with_san.conf \
-days 730 \
-batch \
-verbose

この設定ファイルで

[ req ]
default_bits              = 2048
default_md              = sha256
distinguished_name    = req_distinguished_name
req_extensions     = req_ext
prompt = no

[ req_distinguished_name ]
countryName                 = US
stateOrProvinceName       = New York
localityName                  = New York City
organizationName          = redacted
organizationalUnitName  = redacted
commonName                  = omop-leaf-temp.redacted
emailAddress                  = redacted

[ req_ext ]
subjectAltName          = @alt_names

[alt_names]
DNS.1                   = omop-leaf-temp.redacted

クライアントが安全な接続を確立したかどうかを評価するコードの開発者には、誤ったエラーではなく、証明書に SAN が必要であることを示す明確なエラーを提供するよう強く勧めますERR_CERT_COMMON_NAME_INVALID

関連情報