#chiroito ’s blog

Java を中心とした趣味の技術について

Let's Encrypt で発行した証明書を OpenShift で使う

OpenShift で使う方法を紹介します。 cert-managerもありますが、ここでは手作業で行います。

環境

  • OpenShift 4.15

Let's Encrypt で証明書を発行

こちらを参照:

b.chiroito.dev

OpenShift に証明書を適用

証明書は/etc/letsencrypt/live/自分のドメインディレクトリにあります。 まずは、そこへ移動します。

その後、以下を実行するだけです。

oc create configmap letsencrypt-ca --from-file=ca-bundle.crt=./cert.pem -n openshift-config
oc patch proxy/cluster --type=merge --patch='{"spec":{"trustedCA":{"name":"letsencrypt-ca"}}}'

oc create secret tls letsencrypt --cert=./fullchain.pem --key=./privkey.pem -n openshift-ingress
oc patch ingresscontroller.operator default --type=merge -p '{"spec":{"defaultCertificate": {"name": "letsencrypt"}}}' -n openshift-ingress-operator

うまくいかなかったときは、以下のコマンドで元に戻せます。

oc delete configmap letsencrypt-ca -n openshift-config
oc patch proxy/cluster --type=merge --patch='{"spec":{"trustedCA":null}}'
oc delete secret letsencrypt -n openshift-ingress
oc patch ingresscontroller.operator default --type=merge -p '{"spec":{"defaultCertificate": null}}' -n openshift-ingress-operator

Let's Encrypt の証明書を作成する

Let's Encrypt で証明書を発行します

必要なもの

独自のドメインが必要です。

環境

  • Ubuntu 24 on WSL

証明書を作成

まず、はLet's Encryptとやり取りしながら証明書を作成してくれるツールをインストールします。

> sudo apt-get install certbot

ツールのインストールが終わったら、証明書を発行します。

export DOMAIN=自分のドメイン
export EMAIL=自分のメールアドレス
sudo certbot certonly --agree-tos --email ${EMAIL} \
--preferred-challenges dns --manual \
-d *.apps.${DOMAIN} -d *.api.${DOMAIN}

以下のようにログが出力されます。

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None
Requesting a certificate for *.apps.自分のドメイン and *.api.自分のドメイン
Performing the following challenges:
dns-01 challenge for api.自分のドメイン

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name:

_acme-challenge.api.自分のドメイン.

with the following value:

FvF51oEbOpQkTXsE7ACKW39a8phbL--vHIXDViHsHc8

Before continuing, verify the TXT record has been deployed. Depending on the DNS
provider, this may take some time, from a few seconds to multiple minutes. You can
check if it has finished deploying with aid of online tools, such as the Google
Admin Toolbox: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.api.自分のドメイン.
Look for one or more bolded line(s) below the line ';ANSWER'. It should show the
value(s) you've just added.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

このような感じで自分のドメインにTXTレコードを追加します。

書かれているGoogle Admin Toolboxへアクセスし、TXTレコードが正しいことを確認します。

正しかったらエンターを入力します。 正しくなかったら、正しくなるまで待ちましょう。 時間がかかっても正しくならない場合は、ドメイン側の設定が間違っているかもしれません。

Waiting for verification...
Cleaning up challenges

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/apps.自分のドメイン/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/apps.自分のドメイン/privkey.pem
This certificate expires on 2024-09-11.
These files will be updated when the certificate renews.

NEXT STEPS:
- This certificate will not be renewed automatically. Autorenewal of --manual certificates requires the use of an authentication hook script (--manual-auth-hook) but one was not provided. To renew this certificate, repeat this same certbot command before the certificate's expiry date.
Subscribe to the EFF mailing list (email: 自分のメール).

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

証明書は/etc/letsencrypt/liveディレクトリにできています。