ダウンロードのための HTTPS のカスタマイズ

このページでは、HTTPS ダウンロードでの CA バンドルの使用方法とカスタマイズ方法について説明します。

このトピックでは、「ダウンロード」という単語は、アクション・コマンド prefetchdownload によって発生する効果のみを指します。このコマンドは、カタログやその他の必須データをダウンロードするために BigFix アプリケーション (BigFix Inventory など) によっても呼び出される可能性があります。

サイト収集や BigFix コンポーネント間の通信 (サーバーとクライアント間の通信など) は、このトピックの影響を受けません。

収集のための HTTPS のカスタマイズに関する詳細については、収集のための HTTPS のカスタマイズを参照してください。

概要

HTTPS プロトコルの主な目的は、アクセスされた Web サイトの認証とプライバシーの保護、および交換されたデータの整合性確保です。これを達成するために、信頼できるサード・パーティ (認証局) を使用したリモート・サーバー証明書の検証とチャンネル暗号化を行います。チェックはハンドシェイク中に実行され、失敗すると接続は中断されます。通信は悪意のある攻撃から保護されます。

バージョン 10 パッチ 8 以降、HTTPS URL からのダウンロードをサポートするには、リモート・サーバー ID を検証するための適切な信頼された証明書を提供する必要があります。

パブリック CA、プライベート CA、自己署名証明書

BigFix コンテンツの大部分は、プラットフォーム構成をさらに変更しなくても動作します。カスタマイズが必要となるのは、使用する証明書のタイプに応じて、特定の場合に限られます。

  • 外部/パブリック CA によって署名された証明書: アクションは不要。
  • 内部/プライベート CA によって署名された証明書: 証明書の追加が必要。カスタム証明書 を参照してください。
  • 自己署名証明書: 証明書の追加が必要。カスタム証明書 を参照してください。

BigFix に付属の証明書

curl Web サイトでは、Mozilla に付属しているものと同じ証明書が含まれている事前作成パッケージが提供しています。

このパッケージは、ca-bundle.crt という証明書バンドルでコピーされ、BES サポート・サイトで配信されます。証明書バンドルは、BigFix バージョンに応じて、さまざまな場所で検索されます。

  • バージョン 10 パッチ 8 では、サーバー/リレーとクライアントの両方が、BigFix クライアント・インストール・パスの下の BES サポート・サイト・ディレクトリーから CA バンドルをロードします。
    注: BigFix サーバー/リレーが管理者権限なしで実行されている場合、例えば Windows AD 上のドメイン・ユーザーは、クライアント・パスの下にあるフォルダーを読み取ることができません。この場合は、カスタム CA バンドルを指定する必要があります。以下のカスタム証明書のセクションを参照してください。
  • バージョン 10 パッチ 9 以降、BigFix サーバー/リレーでは、BigFix サーバー/リレー・ディレクトリーの下で最後に収集された BES サポート・フォルダーからバンドルがロードされます。このフォルダーには、プロセスに与えられた権限に関係なく、常にアクセスできます。例えば、UNIX プラットフォームのバンドル・パスは次のようになります。
    /var/opt/BESServer/wwwrootbes/bfmirror/bfsites/enterprisemirror_<SiteID>_<SiteVersion>
    
    
    ca-bundle.crt ファイルが存在しないか読み取れない場合、サーバー/リレーはバージョン 10 パッチ 8 と同様にデフォルトのクライアント・パスにフォールバックします。BigFix クライアントについては、バンドルの場所はバージョン 10 パッチ 8 と同じです。

BigFix は、証明書の有効性やその有効期限について積極的な監視を実行しません。証明書の有効期限前に警告は表示されません。期限切れまたは無効な証明書を使用すると、ダウンロードは失敗します。

信頼されていないサイトからの HTTPS ダウンロードの有効化

バージョン 10 パッチ 8 以降では、次の設定を使用して、信頼されていないサイトからのダウンロードを許可または禁止できます。
  • _BESRelay_Download_UntrustedSites (サーバー/リレー)。これはブール値設定です。0 (デフォルト値) に設定すると、信頼できないサイトからのダウンロードは許可されません。1 に設定すると、信頼できないサイトからのダウンロードが許可されます。
  • _BESClient_Download_UntrustedSites (クライアント)。上で説明したとおりですが、この設定はクライアントに対して機能します。

カスタム証明書

バージョン 10 パッチ 8 以降では、カスタム CA バンドル (自己署名証明書を含む) をコンポーネント (サーバー、リレー、クライアント) に設定できます。設定はパッチのバージョンに応じて変わります。

バージョン 10 パッチ 8 以降では、次のパラメーターを設定できます。
  • _BESRelay_Download_CACertPath (サーバー/リレー)。これは、カスタム CA バンドルの絶対パスを宣言できるストリング設定です。これは、デフォルトの値をオーバーライドします。
  • _BESClient_Download_CACertPath (クライアント)。上で説明したとおりですが、この設定はクライアントに対して機能します。
注: これらのパラメーターはバージョン 10 パッチ 9 以降でも認識されますが、非推奨とみなされるため、使用すべきではありません。認識されるのはレトロ互換性のためです。ただし、動作はわずかに異なります。バージョン 10 パッチ 8 とは異なり、カスタム・バンドルは他の証明書に追加され、他の証明書は上書きされません。10.0.9 以降のバージョンでは、デフォルトの証明書を無視する特定のパラメーターが提供されます (後述)。

カスタム証明書のデフォルト・ディレクトリー

バージョン 10 パッチ 9 では、すべての BigFix コンポーネント (サーバー、リレー、クライアント) 用に事前定義されたフォルダーが導入され (<StorageFolder>/TrustedDownloadCerts)、これを使用してカスタム証明書やバンドルを格納できます。HTTPS ダウンロードを実行すると、このフォルダーに含まれる .crt ファイルと .pem ファイルはすべてデフォルトの証明書に追加されます。例えば、デフォルトの Linux/UNIX インストールでは、クライアント・カスタム CA バンドルのフォルダーのフル・パスは/var/opt/BESClient/TrustedDownloadCerts で、リレー・カスタム CA バンドルのフル・パスは /var/opt/BESRelay/TrustedDownloadCerts です。

拡張子が .pem.crt のファイルのみがロードされ、証明書バンドルと単一の証明書の両方を含むことができます。このようなファイルに対してチェックは行われません。ファイルに無効なデータが含まれている場合、ダウンロードに失敗する可能性があります。

<StorageFolder>/TrustedDownloadCerts 内に .crt ファイルを作成するサンプル・タスクを次に示します。このサンプルは、サーバー、リレー、クライアントの <StorageFolder>/TrustedDownloadCerts ディレクトリーを取得する方法を理解するためのテンプレートとしても使用できます。

<?xml version="1.0" encoding="UTF-8"?>
 <BES xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="BES.xsd">
 	<Task>
 		<Title>Add Download Certificate</Title>
 		<Description><![CDATA[Sample Task for creating and downloading a custom certificate.]]></Description>
 		<Relevance>if exists property "in proxy agent context" then ( not in proxy agent context ) else true</Relevance>
 		<Category></Category>
 		<Source>Internal</Source>
 		<SourceID></SourceID>
 		<SourceReleaseDate>2023-02-14</SourceReleaseDate>
 		<SourceSeverity></SourceSeverity>
 		<CVENames></CVENames>
 		<SANSID></SANSID>
 		<MIMEField>
 			<Name>x-fixlet-modification-time</Name>
 			<Value>Tue, 14 Feb 2023 15:04:24 +0000</Value>
 		</MIMEField>
 		<Domain>BESC</Domain>
 		<DefaultAction ID="Action1">
 			<Description>
 				<PreLink>Click </PreLink>
 				<Link>here</Link>
 				<PostLink> to deploy this action.</PostLink>
 			</Description>
 			<ActionScript MIMEType="application/x-Fixlet-Windows-Shell"><![CDATA[
 // This is a sample Task for reading the TrustedDownloadCerts folder and copying a certificate
 // This Task will add a certificate in the bundle.
 // The certificate will be added in the Server folder if the Server is installed, on the Relay folder if the relay is installed, in the Client folder otherwise  
 
 if {exists main gather service}
     if {windows of operating system}
 	    parameter "storageDir" = "{value "StoragePath" of key "HKEY_LOCAL_MACHINE\SOFTWARE\BigFix\Enterprise Server\GlobalOptions" of registry as string}" 
 	else
 	    parameter "storageDir" = "{key ("StoragePath") of section ("Software\BigFix\Enterprise Server\GlobalOptions") of file "/var/opt/BESServer/besserver.config"}"
 	endif
 elseif {exists relay service}
     if {windows of operating system}
 	    parameter "storageDir" = "{value "StoragePath" of key "HKEY_LOCAL_MACHINE\SOFTWARE\BigFix\Enterprise Server\GlobalOptions" of registry as string}" 
 	else
 	    parameter "storageDir" = "{key ("StoragePath") of section ("Software\BigFix\Enterprise Server\GlobalOptions") of file "/var/opt/BESRelay/besrelay.config"}"
 	endif
 else
     parameter "storageDir" = "{storage folder of client}"
 endif
 
 delete __appendfile 
 
 appendfile -----BEGIN CERTIFICATE-----
 appendfile MIIDhTCCAm2gAwIBAgIEFtnq9zANBgkqhkiG9w0BAQsFADBbMScwJQYDVQQDDB5SZWdlcnkgU2V
 appendfile Zi1TaWduZWQgQ2VydGlmaWNhdGUxIzAhBgNVBAoMGlJlZ2VyeSwgaHR0cHM6Ly9yZWdlcnkuY29
 appendfile MQswCQYDVQQGEwJVQTAgFw0yMzAyMjcwMDAwMDBaGA8yMTIzMDIyNzEwMDYyMFowRzETMBEGA1U
 appendfile AwwKbXlzaXRlLmNvbTEjMCEGA1UECgwaUmVnZXJ5LCBodHRwczovL3JlZ2VyeS5jb20xCzAJBgN
 appendfile BAYTAlVBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAh8F7GgL4IQrc8E4AHJBmdYu
 appendfile X7DEJ0X5XnXeD+tj5XVe7AE3lsoFqLkrNo/mWzZrp9y6ZHoew9AaLrJgUmFdU5c/1aUhWlVtBU+
 appendfile tOBqnZNRKEy+AsObZ2lYryNTVwAbTieTLVPM4pDNr6dwZen1tWfVIKg/2NiApTjwCdamalljP2J
 appendfile V+NxLsjFhGg8q8lD0JJiqoNUm1bi22JrqWJ8Z9cXXmuiNHzUxzVW7XaxzXyWXE4WNWZMIO/gUl5
 appendfile mP9VjXvyXymzMoeDxjMg9cyyrni5ZJsv8Uqkq6ni/Tml6QOYahjNOYmHF8j9v+vTLI/YwfFF4lU
 appendfile QXcOXsHxWyepkwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgN
 appendfile HQ4EFgQUeokEssftpr4W/DjX8EDSYkr9V3AwHwYDVR0jBBgwFoAUeokEssftpr4W/DjX8EDSYkr
 appendfile V3AwDQYJKoZIhvcNAQELBQADggEBAE64aGOnSfA0ePiu6CguxH5GKojTM6N7z2ouzPJGymrVPdM
 appendfile jNfb81Xm+VJ0Eervw8uz/D3NYVCJy4/Q+gvAyYGHFmRxmIue/4RjsOK482WkeICGTsZWggoz3wX
 appendfile 12ZX13noMCULcU1lI83eNBn3LFvA/bYH7cwSBGxmLidg1jkbATktZMQYJXIQ6cNtst4NgfMZPzj
 appendfile w6b9+1tf6ohk+zjYNWPf3N58mziQ3JayWaZFqCHkPVvJYITUPySf4vkhcBNvkWF2W+w4SujpqAE
 appendfile xAdZcMwfwCgUGpyAPeNfPxmQcEwVpDyhK+jfMWLB74swoq/1/k2EwKd4rq/PcOoC394=
 appendfile -----END CERTIFICATE-----
 
 move "__appendfile" "{parameter "storageDir" & "/TrustedDownloadCerts/testCert.crt"} 
 ]]></ActionScript>
 		</DefaultAction>
 	</Task>
 </BES>

その他の証明書

バージョン 10 パッチ 9 以降では、<StorageFolder>/TrustedDownloadCerts に加えて、次のパラメーターを使用してカスタム・ディレクトリーを指定できます。

  • _BESRelay_Download_CaCertDirectory (サーバー/リレー)。このストリング設定により、ユーザーがカスタム CA バンドルを保存するフォルダーのフル・パスを宣言できます。このフォルダーに含まれる .crt ファイルと .pem ファイルはすべてデフォルトの証明書に追加されます。
  • _BESClient_Download_CaCertDirectory (クライアント)。上で説明したとおりですが、この設定はクライアントに対して機能します。

デフォルトの証明書の無効化

また、バージョン 10 パッチ 9 以降では特定のパラメーターを設定し、デフォルトの証明書を無視してカスタム証明書のみを使用できます。

  • _BESRelay_Download_IgnoreDefaultCaCerts (サーバー/リレー)。ブール値設定であり、次の 2 つの値が可能です。0 および 1。1 に設定すると、コンポーネントは BES サポートの下にあるデフォルトの ca-bundle.crt 証明書バンドルを無視するように指示されます。デフォルト値は 0 です。
  • _BESClient_Download_IgnoreDefaultCaCerts (クライアント)。上で説明したとおりですが、この設定はクライアントに対して機能します。

概要

次の図は、バージョン 10 パッチ 9 から証明書のリストの構築に使用される場所の概要を示しています。明示的に無視されるか空でない限り、すべてのコントリビューションは証明書リストに追加されます。

ダウンロードの設定について詳しくは、ダウンロード を参照してください。

トラブルシューティングのヒント

Linux/UNIX プラットフォームでは、curl ユーティリティーを使用して、カスタム証明書バンドルが有効であって、HTTPS を介した特定のダウンロードで動作していることを確認できます。

例えば、Linux/UNIX サーバー・インストールでは、ダウンロード URL が https://download.server.url/file-to-download である場合、次のコマンドでデフォルトの証明書バンドルをテストできます。

curl --cacert 
/var/opt/BESServer/wwwrootbes/bfmirror/bfsites/enterprisemirror_<SiteID>_<SiteVersion>
/ca-bundle.crt -o file-to-download https://download.server.url/file-to-download

パラメーター <SiteID><SiteVersion> を置き換えて、BES サポート・サイトの最新バージョンの実際のディレクトリー名を取得する必要があることに注意してください。

カスタム証明書バンドルをテストするには、次のコマンドを実行できます (パラメーターを適切な値に置き換えること)。

curl --cacert </path-to-certificate/custom-certificate.pem> 
-o file-to-download https://download.server.url/file-to-download
注: 一部の Windows バージョンでは、PowerShell がコマンドレット Invoke-WebRequest を curl 実行ファイルにマッピングしますが、これは証明書を検証するための信頼できる方法ではありません。その代わりに、次のように OpenSSL を使用してください。

Windows プラットフォームでは、OpenSSL を使用して同じテストを実行できます。次の例では、download.server.url は HTTPS サーバーのアドレスであり、C:\path\to\certificate\certificate-bundle.pem は証明書バンドルへのローカル・パスです。

openssl.exe s_client -connect download.server.url:443 -CAfile 
C:\path\to\certificate\certificate-bundle.pem
この場合、コマンドの戻りコードをその出力で確認する必要があり、これは多くの行で構成されている可能性があります。「Verify return code」で始まる行を調べてください。次の例を参考にしてください。
  • Verify return code: 0 (OK)
  • Verify return code: 20 (ローカル発行者証明書を取得できない)
  • Verify return code: 18 (自己署名証明書)