Acmebot で Azure Key Vault に保管された証明書を apache2 で利用する

2023/10/04に公開

TL;DR

  • しばやんさんの acmebot を利用して Azure Key Vault に証明書を作成する
  • 作成された証明書を apache2 で利用できるように加工する
  • Mozilla SSL Configuration Generator で config を作成して利用する

はじめに

よたんさんの Azure Application GatewayのSSL証明書にLet's Encryptを使う を元にしばやんさんの Acmebot を動かし、Azure Key Vault に証明書を保存しておきます。

作成した証明書をダウンロードできるのは cert か pfx

Azure、というか Microsoft 界隈では pfx (pkcs12) 形式がよく利用されており、このままでは apache2 利用できません。
そのため、変換してあげる必要があります。

証明書をダウンロードする

証明書のダウンロードは難しくなく、Azure Portal から CER 形式でダウンロードします。
ただ、なぜかヘッダとフッタが欠けているので、ファイルの先頭に -----BEGIN CERTIFICATE----- を、最後に -----END CERTIFICATE----- を追加します。

デコードされた証明書が問題ないかどうかは以下のコマンドで確認できます。
Subject というところを確認して、該当のドメインであることを確認します。

openssl x509 -text -noout -in certificate.crt

秘密鍵を抽出する

次に、秘密鍵を抽出するために、Azure Portal から PFX 形式でダウンロードします。
これは apache2 では利用できないので、秘密鍵を取り出します。

openssl pkcs12 -in cert.pfx -nocerts -nodes -out key.pem

秘密鍵の確認は以下のコマンドで行います。

openssl rsa -text -noout -in key.pem

証明書と秘密鍵の組合せを確認する

証明書と秘密鍵の組合せが正しいかどうかは以下のコマンドで確認できます。
このふたつが合致していれば問題ないと考えられます。

openssl x509 -noout -modulus -in certificate.crt | openssl md5
openssl rsa -noout -modulus -in key.pem | openssl md5

Mozilla SSL Configuration Generator で config を作成する

ここはおまけですが、Mozlla が提供している SSL Configuration Generator で設定を作成すると簡単です。

https://ssl-config.mozilla.org/

SSLCertificateFile の部分には先程作成した certificate.crt を、SSLCertificateKeyFile の部分には先程作成した key.pem を指定します。
path は適当に /etc/apache2/ssl とかにしておきます。

参考

  • Azure Application GatewayのSSL証明書にLet's Encryptを使う

https://zenn.dev/yotan/articles/abfd178caae809

  • OpenSSL Essentials: Working with SSL Certificates, Private Keys and CSRs

https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrs

  • Mozilla SSL Configuration Generator

https://ssl-config.mozilla.org/

Discussion