8.3 SSL証明書の生成

この項に従う必要があるのは、SSLを使用するようにイングレス・コントローラを構成する場合のみです。

本番環境では、信頼できる認証局にトレース可能な市販の証明書を使用することをお薦めします。

サンドボックス環境では、独自の自己署名証明書を生成できます。

ノート:

自己署名証明書を使用する場合、ブラウザ経由でイングレス・コントローラにアクセスすると、証明書エラーが発生します。

証明書を生成するためのサード・パーティCAの使用

SSLを使用するようにイングレス・コントローラを構成する場合は、証明書の共通名(CN)の問題を回避するためにワイルドカード証明書を使用する必要があります。ワイルドカード証明書は、プライマリ・ドメインとそのサブドメインを保護する証明書です。CNでは、*.yourdomain.comのようにワイルドカード文字(*)を使用します。

ワイルドカード証明書のキーおよび証明書署名リクエストの生成方法は、認証局によって異なります。詳細は、認証局のベンダーに問い合せてください。

SSL用にイングレス・コントローラを構成するには、次のファイルが必要です:
  • 証明書の秘密キー(oam.keyなど)。
  • 証明書(PEM形式のoam.crtなど)。
  • 信頼できる認証局(CA)の証明書(PEM形式のrootca.crtなど)。
  • チェーンに複数の信頼できるCA証明書がある場合、チェーン内のすべての証明書(rootca1.crtrootca2.crtなど)が必要です。

ファイルを取得したら、次のステップを実行します:

  1. 管理ホストで、$WORKDIR>/sslディレクトリを作成し、フォルダに移動します:
    mkdir $WORKDIR>/ssl
    cd $WORKDIR>/ssl
  2. 前述のファイルを$WORKDIR>/sslディレクトリにコピーします。
  3. CAのチェーンに複数の証明書がある場合は、すべてのCA証明書を含むbundle.pemを作成します:
    cat rootca.pem rootca1.pem rootca2.pem >>bundle.pem

自己署名証明書の使用

  1. 管理ホストで、$WORKDIR>/sslディレクトリを作成し、フォルダに移動します:
    mkdir $WORKDIR>/ssl
    cd $WORKDIR>/ssl
  2. 次のコマンドを実行して、自己署名証明書を作成します:
    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