この記事では、接続キャッシュ上の Linux HTTPS セットアップ フローの詳細について説明します。
前提条件
クライアント接続メソッド
HTTPS サポートを設定する目的で、接続キャッシュ サーバーへの適切な接続方法を確認するには、次の手順を試してください。
配信の最適化ポリシーの構成を確認する
ネットワークで DHCP オプション 235 を使用して接続キャッシュ サーバーをアドバタイズする場合:
resolvectl status | grep -A 10 "Link"接続キャッシュ サーバーを参照する可能性がある DHCP によって提供される DNS またはドメイン情報を探します。
ネットワーク構成ファイルを確認する
Linux ディストリビューションによっては、ネットワーク構成に静的な接続キャッシュ参照が含まれている場合があります。
# For systems using NetworkManager cat /etc/NetworkManager/system-connections/* # For systems using netplan (Ubuntu 18.04+) cat /etc/netplan/*.yaml # For traditional /etc/network/interfaces cat /etc/network/interfaces接続キャッシュ サーバーへの接続をテストする
次のコマンドは、接続キャッシュ サーバー上のポート 80 への TCP 接続を確認します。
nc -zv [insert-mcc-server-ip-or-hostname] 80予期される出力:
Connection to [server] 80 port [tcp/http] succeeded!より詳細な情報を取得するには:
curl -v -I http://[insert-mcc-server-ip-or-hostname]/
ポート 443 可用性
ポート 443 の可用性をチェックする代替コマンド:
sudo netstat -tulpn | grep :443現在ポート 443 を使用しているプロセスを確認します。
sudo lsof -i :443
ファイアウォール構成の詳細
ファイアウォールが接続済みキャッシュ サーバーへの HTTPS トラフィックを傍受している場合 (TLS 検査など) をチェックするには、次を使用します。
一般的な Linux ディストリビューション:
Ubuntu/Debian (UFW):
# Check firewall status
sudo ufw status
# Allow port 443
sudo ufw allow 443/tcp
# Reload firewall
sudo ufw reload
# Verify rule was added
sudo ufw status numbered
RHEL/CentOS/Fedora (ファイアウォール):
# Check firewall status
sudo firewall-cmd --state
# Allow port 443 temporarily (until reboot)
sudo firewall-cmd --add-port=443/tcp
# Allow port 443 permanently
sudo firewall-cmd --permanent --add-port=443/tcp
# Reload firewall
sudo firewall-cmd --reload
# List all rules
sudo firewall-cmd --list-all
iptables (従来):
# Check current rules
sudo iptables -L -n -v
# Add rule for port 443
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Save rules (location varies by distribution)
# For Ubuntu/Debian:
sudo iptables-save | sudo tee /etc/iptables/rules.v4
# For RHEL/CentOS:
sudo service iptables save
SELinux に関する考慮事項
SELinux を有効にして RHEL/CentOS/Fedora を実行している場合は、SELinux ポリシーを構成する必要がある場合があります。
# Check SELinux status
sestatus
# Allow HTTP/HTTPS traffic
sudo setsebool -P httpd_can_network_connect 1
# If using custom ports, add them to SELinux
sudo semanage port -a -t http_port_t -p tcp 443
CSR の生成
Scenario-Based パラメーターの例
シナリオベースのパラメーターの例を確認し、それに応じて generateCsr.sh コマンドを編集します。
単一の Office - IP アドレスのみ
シナリオ: 静的 IP アドレスを使用して接続キャッシュに接続するようにクライアントが構成されている小規模ブランチ オフィス (たとえば、DOCacheHost ポリシーを "192.168.1.100" に設定するなど)。
./generateCsr.sh \
-algo RSA \
-keySizeOrCurve 2048 \
-csrName "mcc-branch-office" \
-subjectCommonName "192.168.1.100" \
-subjectCountry "US" \
-subjectState "TX" \
-subjectOrg "Contoso Corp" \
-sanIp "192.168.1.100"
エンタープライズ Standard - DNS ホスト名
シナリオ: クライアントが標準化されたホスト名 (mcc-server.contoso.com) を介して接続するエンタープライズ環境。
./generateCsr.sh \
-algo RSA \
-keySizeOrCurve 4096 \
-csrName "mcc-enterprise-prod" \
-subjectCommonName "mcc-server.contoso.com" \
-subjectCountry "US" \
-subjectState "Washington" \
-subjectOrg "Contoso Corporation" \
-sanDns "mcc-server.contoso.com"
DHCP 検出環境
シナリオ: 接続キャッシュ検出に DHCP オプション 235 を使用する環境。クライアントは、サーバーの実際のホスト名または DHCP によって提供される名前を使用して接続する可能性があります。
./generateCsr.sh \
-algo RSA \
-keySizeOrCurve 2048 \
-csrName "mcc-dhcp-discovery" \
-subjectCommonName "cache-server.corporate.local" \
-subjectCountry "US" \
-subjectState "FL" \
-subjectOrg "Corporate IT Services" \
-sanDns "cache-server.corporate.local,mcc-auto.corporate.local,fileserver.corporate.local"
ハイブリッド環境 - 混合クライアント接続
シナリオ: 移行中の混在環境では、一部のレガシ クライアントでは引き続き IP アドレスが使用され、新しいクライアントでは DNS 名が使用されます。 両方の接続方法について説明します。
./generateCsr.sh \
-algo RSA \
-keySizeOrCurve 2048 \
-csrName "mcc-hybrid-migration" \
-subjectCommonName "mcc-cache.contoso.com" \
-subjectCountry "US" \
-subjectState "CA" \
-subjectOrg "Contoso Inc" \
-sanDns "mcc-cache.contoso.com,cache.contoso.local" \
-sanIp "10.0.1.50,192.168.100.10"
地域の名前付けによるマルチサイト
シナリオ: 一貫性のある名前付け規則 (mcc-region-site 形式) を使用して、複数の接続済みキャッシュ ノードを持つ大きなorganization。 この例は、Seattle データセンター ノードの場合です。
./generateCsr.sh \
-algo RSA \
-keySizeOrCurve 4096 \
-csrName "mcc-seattle-dc1" \
-subjectCommonName "mcc-sea-dc1.corp.contoso.com" \
-subjectCountry "US" \
-subjectState "Washington" \
-subjectOrg "Contoso Corporation" \
-sanDns "mcc-sea-dc1.corp.contoso.com,mcc-seattle.contoso.com"
開発/テスト環境
シナリオ: 名前付けの要件が緩和された開発環境。 localhost テストとラボ ネットワーク アクセスをサポートします。
./generateCsr.sh \
-algo RSA \
-keySizeOrCurve 2048 \
-csrName "mcc-dev-lab" \
-subjectCommonName "localhost" \
-subjectCountry "US" \
-subjectState "Dev" \
-subjectOrg "IT Development" \
-sanDns "localhost,mcc-dev.lab.local,devserver.local" \
-sanIp "127.0.0.1,192.168.10.100,10.10.10.50"
楕円曲線を使用した高セキュリティ
シナリオ: セキュリティに配慮したorganization、パフォーマンスを向上させ、新しいセキュリティ標準に準拠するために最新の ECC 暗号化が必要です。
./generateCsr.sh \
-algo EC \
-keySizeOrCurve secp384r1 \
-csrName "mcc-secure-prod" \
-subjectCommonName "mcc-secure.defense.gov" \
-subjectCountry "US" \
-subjectState "VA" \
-subjectOrg "Department of Defense" \
-sanDns "mcc-secure.defense.gov"
クラウド/仮想マシンのデプロイ
シナリオ: パブリック接続とプライベート接続の両方を持つクラウド VM または仮想マシンにデプロイされた接続済みキャッシュ ノード。 オンプレミスのクライアントはプライベート IP/ホスト名を介して接続しますが、クラウドベースのクライアントではパブリック DNS 名を使用できます。
./generateCsr.sh \
-algo RSA \
-keySizeOrCurve 2048 \
-csrName "mcc-cloud-hybrid" \
-subjectCommonName "mcc-eastus.cloudapp.azure.com" \
-subjectCountry "US" \
-subjectState "WA" \
-subjectOrg "Contoso Corporation" \
-sanDns "mcc-eastus.cloudapp.azure.com,mcc-cloud.contoso.local,mcc-vm01.contoso.com" \
-sanIp "10.0.1.10,172.16.0.50"
Docker コンテナー環境
シナリオ: Docker コンテナーで実行されている接続キャッシュ。クライアントはホスト マシンの IP に接続しますが、コンテナー ネットワークには証明書を考慮する必要があります。
./generateCsr.sh \
-algo RSA \
-keySizeOrCurve 2048 \
-csrName "mcc-docker-host" \
-subjectCommonName "mcc-docker.company.local" \
-subjectCountry "US" \
-subjectState "CA" \
-subjectOrg "Company IT" \
-sanDns "mcc-docker.company.local,localhost" \
-sanIp "192.168.1.100,172.17.0.1,127.0.0.1"
CSR に署名する
.crt ファイルの種類に変換する
.cerを受け取った場合:mv xxxx.cer xxxx.crtまたは OpenSSL の場合:
openssl x509 -in xxxx.cer -out xxxx.crt.derを受け取った場合:openssl x509 -inform DER -in xxxx.der -out xxxx.crt
証明書の内容を確認する
変換後、証明書が正しいことを確認します。
openssl x509 -in xxxx.crt -text -noout
探してください:
- 件名: CSR の対象と一致する必要がある
- サブジェクトの別名: 構成されたすべての SAN を含める必要がある
- 有効: 日付の前ではない日付と後の日付ではない
- 署名アルゴリズム: 選択したアルゴリズム (RSA、EC など) と一致する必要があります