8.3 SSL証明書の生成
この項に従う必要があるのは、SSLを使用するようにイングレス・コントローラを構成する場合のみです。
本番環境では、信頼できる認証局にトレース可能な市販の証明書を使用することをお薦めします。
サンドボックス環境では、独自の自己署名証明書を生成できます。
ノート:
自己署名証明書を使用する場合、ブラウザ経由でイングレス・コントローラにアクセスすると、証明書エラーが発生します。証明書を生成するためのサード・パーティCAの使用
SSLを使用するようにイングレス・コントローラを構成する場合は、証明書の共通名(CN)の問題を回避するためにワイルドカード証明書を使用する必要があります。ワイルドカード証明書は、プライマリ・ドメインとそのサブドメインを保護する証明書です。CNでは、*.yourdomain.com
のようにワイルドカード文字(*)を使用します。
ワイルドカード証明書のキーおよび証明書署名リクエストの生成方法は、認証局によって異なります。詳細は、認証局のベンダーに問い合せてください。
SSL用にイングレス・コントローラを構成するには、次のファイルが必要です:
- 証明書の秘密キー(
oam.key
など)。 - 証明書(PEM形式の
oam.crt
など)。 - 信頼できる認証局(CA)の証明書(PEM形式の
rootca.crt
など)。 - チェーンに複数の信頼できるCA証明書がある場合、チェーン内のすべての証明書(
rootca1.crt
、rootca2.crt
など)が必要です。
ファイルを取得したら、次のステップを実行します:
- 管理ホストで、
$WORKDIR>/ssl
ディレクトリを作成し、フォルダに移動します:mkdir $WORKDIR>/ssl
cd $WORKDIR>/ssl
- 前述のファイルを
$WORKDIR>/ssl
ディレクトリにコピーします。 - CAのチェーンに複数の証明書がある場合は、すべてのCA証明書を含む
bundle.pem
を作成します:cat rootca.pem rootca1.pem rootca2.pem >>bundle.pem
自己署名証明書の使用
- 管理ホストで、
$WORKDIR>/ssl
ディレクトリを作成し、フォルダに移動します:mkdir $WORKDIR>/ssl
cd $WORKDIR>/ssl
- 次のコマンドを実行して、自己署名証明書を作成します:
例:openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout oam.key -out oam.crt -subj "/CN=<hostname>"
出力は次のようになります:openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout oam.key -out oam.crt -subj "/CN=oam.example.com"
Generating a 2048 bit RSA private key ..........................................+++ .......................................................................................................+++ writing new private key to 'oam.key' -----
SSLのKubernetesシークレットの作成
次のコマンドを実行して、SSLのKubernetesシークレットを作成します:
例:
kubectl -n mynginxns create secret tls <domain_uid>-tls-cert --key $WORKDIR>/ssl/oam.key --cert $WORKDIR>/ssl/oam.crt
ノート:
チェーンに複数のCA証明書がある場合、--cert <workdir>/bundle.crt
を使用します。
kubectl -n mynginxns create secret tls accessdomain-tls-cert --key /OAMK8S/ssl/oam.key --cert /OAMK8S/ssl/oam.crt
出力は次のようになります:secret/accessdomain-tls-cert created