概要
このドキュメントでは、複数のURLを持つCloudCenterで使用できる自己署名証明書を作成する方法について説明します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
使用するコンポーネント
このドキュメントの情報は、CentOS7に基づくものです。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。対象のネットワークが実稼働中である場合には、どのようなコマンドについても、その潜在的な影響について確実に理解しておく必要があります。
問題
CloudCenterに標準で付属している証明書、またはCisco Call Manager(CCM)設定ウィザードを使用して作成できる証明書には、Google Chromeなどの特定のブラウザがエラーとして処理し、警告するサブジェクト代替名(SAN)がありません。これは上書きできますが、SANがなければ、証明書は1つの特定のURLからのみ有効です。
たとえば、IPアドレス10.11.12.13に対して有効な証明書がある場合、ドメインネームシステム(DNS)名がwww.opencart.comである場合、そのURLが証明書の目的ではない証明書エラーが表示されます(www.opencart.comが10.11.12.13に属するホストファイルにリストされているされている場合も)。 CloudCenterのサブテナントがシングルサインオン(SSO)を使用している場合は、各SSOサーバに独自のURLが割り当てられます。
解決方法
この問題を修正する最も簡単な方法は、同じIPアドレスにリダイレクトするURLをリストするSANを含む新しい自己署名証明書を作成することです。このガイドは、このプロセスにベストプラクティスを適用する試みです。
ステップ1:ルートディレクトリに移動し、証明書を格納する新しいフォルダを作成します。
sudo -s
cd /root
mkdir ca
ステップ2:新しいフォルダに移動し、サブフォルダを作成して、証明書、秘密キー、およびログを整理します。
cd ca
mkdir certs crl newcerts private
chmod 700 private
touch index.txt
echo 1000 > serial
ステップ3:CAopenssl.confの内容を/root/ca/openssl.cnfにコピーします
注:このファイルには、認証局(CA)の設定オプションと、CloudCenterに適したデフォルトオプションが含まれています。
ステップ4:CAの秘密キーと証明書を生成します。
openssl genrsa -aes256 -out private/ca.key.pem 4096
chmod 400 private/ca.key.pem
openssl req -config openssl.cnf -key private/ca.key.pem -new -x509 -days 7300 -sha256 -extensions v3_ca -out certs/ca.cert.pem
chmod 444 certs/ca.cert.pem
ステップ5:CAは、任意の証明書が有効であることを確認する究極の方法です。この証明書は不正なユーザによってアクセスされることはなく、インターネットに公開されることもありません。この制限により、エンド証明書に署名する中間CAを作成する必要があります。これにより、中間認証局の証明書が侵害された場合に失効し、新しい証明書が発行される場合に中断が発生します。
ステップ6:中間CAの新しいサブディレクトリを作成します。
mkdir /root/ca/intermediate
cd /root/ca/intermediate/
mkdir certs crl csr newcerts private
chmod 700 private
touch index.txt
echo 1000 > serial
echo 1000 > /root/ca/intermediate/crlnumber
ステップ7:Intermediateopenssl.confの内容を/root/ca/intermediate/openssl.cnfにコピーします。
注:このファイルには、CAに固有の設定を行うための小さな調整を除き、CAに対してほぼ同じ設定オプションが含まれています。
ステップ8:中間キーと証明書を生成します。
cd /root/ca
openssl genrsa -aes256 -out intermediate/private/intermediate.key.pem 4096
chmod 400 intermediate/private/intermediate.key.pem
openssl req -config intermediate/openssl.cnf -new -sha256 -key intermediate/private/intermediate.key.pem -out intermediate/csr/intermediate.csr.pem
ステップ9:中間証明書にCA証明書を署名します。これにより、ブラウザが証明書の信頼性を検証するために使用する信頼のチェーンが構築されます。
openssl ca -config openssl.cnf -extensions v3_intermediate_ca -days 3650 -notext -md sha256 -in intermediate/csr/intermediate.csr.pem -out intermediate/certs/intermediate.cert.pem
chmod 444 intermediate/certs/intermediate.cert.pem
ステップ10:CAチェーンを作成します。インターネット上のCAが必要ないため、ブラウザがCAまで認証を検証するために使用するCAチェーンを作成できます。
cat intermediate/certs/intermediate.cert.pem certs/ca.cert.pem > intermediate/certs/ca-chain.cert.pem
chmod 444 intermediate/certs/ca-chain.cert.pem
ステップ11:CCMの新しいキーと証明書を作成します。
openssl genrsa -out intermediate/private/ccm.com.key.pem 2048
openssl req -new -sha256 -key intermediate/private/ccm.com.key.pem -subj "/C=US/ST=NC/O=Cisco/CN=ccm.com" -reqexts SAN -config <(cat intermediate/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:ccm.com,DNS:www.ccm.com,IP:10.11.12.13")) -out intermediate/csr/ccm.com.csr
ステップ12:コマンドに必要なすべてのフィールドがあり、手動で編集する必要があります。
- /C=USは国を表します(2文字の制限)
- /ST=NCは状態を参照し、スペースを含めることができます
- /O=シスコは組織を指す
- /CN=ccm.comは共通名を参照します。これはCCMへのアクセスに使用するメインURLである必要があります。
- SAN\nsubjectAltName=は代替名です。共通名はこのリストに記載する必要があり、SANの数に制限はありません。
ステップ13:中間証明書を使用して最終証明書に署名します。
openssl ca -config intermediate/openssl.cnf -extensions server_cert -days 375 -notext -md sha256 -in intermediate/csr/ccm.com.csr -out intermediate/certs/ccm.com.cert.pem
ステップ14:証明書が正しく署名されたことを確認します。
openssl verify -CAfile intermediate/certs/ca-chain.cert.pem intermediate/certs/ccm.com.cert.pem
ステップ15:[OK]または[Fail]を返すことができます。
ステップ16:新しい証明書、そのキー、およびCAチェーンをCatalinaフォルダにコピーします。
cd /root/ca/intermediate/certs
cp ccm.com.cert.pem /usr/local/tomcat/conf/ssl/ccm.com.crt
cp ca-chain.cert.pem /usr/local/tomcat/conf/ssl/ca-chain.crt
cd ../private
cp ccm.com.key.pem /usr/local/tomcat/conf/ssl/ccm.com.key
ステップ17:クライアントユーザの所有権を付与し、権限を正しく設定します。
chown cliqruser:cliqruser ccm.com.crt
chown cliqruser:cliqruser ccm.com.key
chown cliqruser:cliqruser ca-chain.crt
chmod 644 ccm.com.crt
chmod 644 ccm.com.key
chmod 644 ca-chain.crt
ステップ18:変更を行う前にserver.xmlファイルをバックアップします。
cd ..
cp server.xml server.xml.bak
ステップ19: server.xmlの編集:
- <Connector port="10443" maxHttpHeaderSize="8192"で始まるセクションを見つけます
- SSLCertificateFileをccm.com.crtを指定するように変更します。
- SSLCertificateKeyFileをccm.com.keyを指定するように変更します。
- SSLCACertificateFileをca-chain.crtをポイントするように変更します
ステップ20:Tomcatを再起動します。
service tomcat stop
service tomcat start
ステップ21:CCMは、ステップ13で指定されたすべてのDNS名とIPアドレスに有効な新しい証明書を使用します。
ステップ22:CAはガイドの時点で作成されているため、ブラウザはデフォルトで有効であると認識しないため、証明書を手動でインポートする必要があります。
ステップ23:任意の有効なURLを使用してCCMに移動し、Ctrl+Shift+iを押すと、開発者ツールが開きます。
ステップ24:図に示すように[View Certificate]を選択します。
ステップ25:図に示すように[Details]を選択します。
ステップ26:図に示すように、[Copy To File]を選択します。
ステップ27:信頼できないCAに関するエラーが発生した場合は、[Certification Path]に移動して、中間およびルート証明書を表示します。図に示すように、これらのファイルをクリックして証明書を表示し、ファイルにコピーすることもできます。
ステップ28:証明書をダウンロードしたら、オペレーティングシステム(OS)またはブラウザの指示に従って、これらの証明書を信頼された機関および中間機関としてインストールします。