内容

概要

前提条件

要件

使用するコンポーネント

問題

解決方法

概要

このドキュメントでは、複数のURLを持つCloudCenterで使用できる自己署名証明書を作成する方法について説明します。

前提条件

要件

次の項目に関する知識があることが推奨されます。

- 証明書

- Linux

使用するコンポーネント

このドキュメントの情報は、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の編集：

1. <Connector port="10443" maxHttpHeaderSize="8192"で始まるセクションを見つけます

2. SSLCertificateFileをccm.com.crtを指定するように変更します。

3. SSLCertificateKeyFileをccm.com.keyを指定するように変更します。

4. 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)またはブラウザの指示に従って、これらの証明書を信頼された機関および中間機関としてインストールします。