1.9. Quarkus CLI コマンドと開発用認証局
TLS レジストリーは、開発用認証局 (CA) と信頼済み証明書を生成するための Quarkus CLI コマンドを備えています。これにより、自己署名証明書をローカルで使用する必要がなくなります。
次のスニペットは、2 つのサブコマンドを含む quarkus tls コマンドの説明を示しています。
> quarkus tls
Install and Manage TLS development certificates
Usage: tls [COMMAND]
Commands:
generate-quarkus-ca Generate Quarkus Dev CA certificate and private key.
generate-certificate Generate a TLS certificate with the Quarkus Dev CA if
available.
ほとんどの場合、Quarkus 開発用 CA を一度生成してから、この CA によって署名された証明書を生成します。Quarkus 開発用 CA は、ローカルで証明書に署名するために使用できる認証局です。この CA は開発を目的とする場合にのみ有効であり、ローカルマシン上でのみ信頼されます。生成された CA は $HOME/.quarkus/quarkus-dev-root-ca.pem に配置され、システムのトラストストアにインストールされます。
1.9.1. 自己署名証明書と CA 署名証明書の違いについて リンクのコピーリンクがクリップボードにコピーされました!
TLS を使用して開発する場合、次の 2 種類の証明書を使用できます。
- 自己署名証明書: この証明書は、それを使用する同じエンティティーによって署名されたものです。デフォルトでは信頼されません。このタイプの証明書は、通常、認証局 (CA) が利用できない場合や、簡単なセットアップが必要な場合に使用されます。実稼働環境には適しておらず、開発目的でのみ使用する必要があります。
- CA 署名証明書: この証明書は、信頼できるエンティティーである証明書 CA によって署名されたものです。この証明書はデフォルトで信頼されており、実稼働環境での標準的な選択肢です。
ローカル開発には自己署名証明書を使用できますが、制限があります。curl、wget、httpie などのブラウザーやツールは通常、自己署名証明書を信頼しないため、OS に CA を手動でインポートする必要があります。
この問題を回避するには、開発用 CA を使用して証明書に署名し、その CA をシステムのトラストストアにインストールします。これにより、システムが CA によって署名されたすべての証明書を信頼するようになります。
Quarkus は、開発用 CA とこの CA によって署名される証明書の生成を簡素化します。
1.9.2. 開発用 CA の生成 リンクのコピーリンクがクリップボードにコピーされました!
開発用 CA は、ローカルで証明書に署名するために使用できる認証局です。生成された CA は開発を目的とする場合にのみ有効であり、ローカルマシン上でのみ信頼されることに注意してください。
開発用 CA を生成するには、次のように指定します。
quarkus tls generate-quarkus-ca --install \
--renew \
--truststore
- 1
--installは、CA をシステムのトラストストアにインストールします。Windows、Mac、Linux (Fedora および Ubuntu) がサポートされています。ただし、ブラウザーによっては、生成された CA を手動でインポートする必要がある場合があります。詳細は、ブラウザーのドキュメントを参照してください。生成された CA は$HOME/.quarkus/quarkus-dev-root-ca.pemに配置されます。- 2
--renewは、CA がすでに存在する場合に CA を更新します。このオプションを使用すると、秘密鍵が変更されます。そのため、CA によって署名された証明書を再生成する必要があります。CA の有効期限が切れた場合は、自動的に更新されます。--renewオプションは必要ありません。- 3
--truststoreは、CA 証明書を含む PKCS12 トラストストアも生成します。
証明書をインストールするときに、システムのトラストストアに証明書をインストールするためのパスワードの入力を求められたり、Windows のダイアログで確認を求められたりすることがあります。
Windows では、管理者権限を持つターミナルから管理者として実行し、システムのトラストストアに CA をインストールしてください。
1.9.3. 信頼済み (署名済み) 証明書の生成 リンクのコピーリンクがクリップボードにコピーされました!
前提条件
Quarkus 開発用 CA をインストールしたら、信頼済み証明書を生成します。この証明書は Quarkus 開発用 CA によって署名され、システムによって信頼されます。
quarkus tls generate-certificate --name my-certこのコマンドは、Quarkus 開発用 CA によって署名された証明書を生成します。開発用 CA は、適切にインストールまたはインポートされた場合にシステムによって信頼されます。
証明書は
./.certs/に保存されます。次の 2 つのファイルが生成されます。
-
$NAME-keystore.p12: 秘密鍵と証明書が含まれています。パスワードで保護されています。 $NAME-truststore.p12: テスト用などにトラストストアとして使用できる CA 証明書が含まれています。以下に示すその他のオプションも利用できます。
Usage: tls generate-certificate [-hrV] [-c=<cn>] [-d=<directory>] -n=<name> [-p=<password>] Generate a TLS certificate with the Quarkus Dev CA if available. -c, --cn=<cn> The common name of the certificate. Default is 'localhost' -d, --directory=<directory> The directory in which the certificates will be created. Default is `.certs` -n, --name=<name> Name of the certificate. It will be used as file name and alias in the keystore -p, --password=<password> The password of the keystore. Default is 'password' -r, --renew Whether existing certificates will need to be replaced証明書を生成するときに
.envファイルも生成されます。これにより、Quarkus 開発モードがこれらの証明書を認識するようになります。アプリケーションを開発モードで実行して、これらの証明書を使用します。
./mvnw quarkus:dev ... INFO [io.quarkus] (Quarkus Main Thread) demo 1.0.0-SNAPSHOT on JVM (powered by Quarkus 999-SNAPSHOT) started in 1.286s. Listening on: http://localhost:8080 and https://localhost:8443HTTPS (
https://localhost:8443/q/dev) を使用するか、curlリクエストを発行して Dev UI を開きます。curl https://localhost:8443/hello Hello from Quarkus REST%重要Quarkus 開発用 CA がインストールされていない場合、Quarkus は自己署名証明書を生成します。
1.9.4. 自己署名証明書の生成 リンクのコピーリンクがクリップボードにコピーされました!
Quarkus 開発用 CA がインストールされている場合でも、自己署名証明書を生成できます。
quarkus tls generate-certificate --name my-cert --self-signed
これにより、Quarkus 開発用 CA によって署名されない自己署名証明書が生成されます。
1.9.5. Quarkus 開発用 CA のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
システムから Quarkus 開発用 CA をアンインストールする方法は、OS によって異なります。
1.9.5.1. Windows で CA 証明書を削除する リンクのコピーリンクがクリップボードにコピーされました!
管理者権限で Powershell ターミナルを使用して、Windows 上の CA 証明書をリスト表示します。
# First, we need to identify the serial number of the CA certificate > certutil -store -user Root root "Trusted Root Certification Authorities" ================ Certificate 0 ================ Serial Number: 019036d564c8 Issuer: O=Quarkus, CN=quarkus-dev-root-ca # <-That's the CA, copy the Serial Number (the line above) NotBefore: 6/19/2024 11:07 AM NotAfter: 6/20/2025 11:07 AM Subject: C=Cloud, S=world, L=home, OU=Quarkus Dev, O=Quarkus Dev, CN=quarkus-dev-root-ca Signature matches Public Key Non-root Certificate uses same Public Key as Issuer Cert Hash(sha1): 3679bc95b613a2112a3d3256fe8321b6eccce720 No key provider information Cannot find the certificate and private key for decryption. CertUtil: -store command completed successfully.保存されている CA 証明書を削除します。
$Serial_Numberを CA 証明書のシリアル番号に置き換えます。> certutil -delstore -user -v Root $Serial_Number
1.9.5.2. Linux で CA 証明書を削除する リンクのコピーリンクがクリップボードにコピーされました!
Fedora の場合:
sudo rm /etc/pki/ca-trust/source/anchors/quarkus-dev-root-ca.pem sudo update-ca-trustUbuntu の場合:
sudo rm /usr/local/share/ca-certificates/quarkus-dev-root-ca.pem sudo update-ca-certificates
1.9.5.3. Mac で CA 証明書を削除する リンクのコピーリンクがクリップボードにコピーされました!
Mac の場合:
sudo security -v remove-trusted-cert -d /Users/clement/.quarkus/quarkus-dev-root-ca.pem