PEMファイルをJavaKeyStore形式に変換する
1. 概要
前のチュートリアルでは、Java KeyStore(JKS)をPEM形式に変換する方法を示しました。 このチュートリアルでは、PEM形式を標準のJava KeyStore(JKS)形式に変換します。 Java KeyStoreは、一致する秘密鍵とともに証明書を格納するコンテナです。
keytoolコマンドとopensslコマンドを組み合わせて使用して、PEMからJKSに変換します。 keytool コマンドはJDK(Java Development Kit)に付属しており、PEMからPKCS12への変換に使用されます。 2番目のコマンドopensslは、をダウンロードする必要があり、その役割はPKCS12からJKSに変換することです。
2. ファイル形式
JKSは、Java8までKeyStoresのデフォルト形式であったJava固有のファイル形式です。 Java 9以降、 PKCS#12がデフォルトのKeyStore形式です。 JKSにもかかわらず、PKCS#12は、暗号化されたデータを格納するための標準化された言語に依存しない形式です。 PKCS#12形式は、PKCS12またはPFXとも呼ばれます。
PEM(Privacy Enhanced Mail)も証明書コンテナ形式です。PEMファイルはBase64でエンコードされています。 これにより、異なるシステム間の変換中にデータがそのまま維持されます。
さらに、PEMファイルには1つ以上のインスタンスを含めることができ、各インスタンスはプレーンテキストのヘッダーとフッターで区切られます。
-----BEGIN CERTIFICATE-----
// base64 encoded
-----END CERTIFICATE-----
3. PEMからJKS形式への変換
次に、すべての証明書と秘密鍵をPEMからJKS形式に変換する手順を実行します。
例として、自己署名証明書を作成します。
3.1. PEMファイルの作成
openssl を使用して、key.pemとcert.pemの2つのファイルを生成することから始めます。
openssl req -newkey rsa:2048 -x509 -keyout key.pem -out cert.pem -days 365
ツールは、PEMパスフレーズおよびその他の情報を入力するように促します。
すべてのプロンプトに応答すると、opensslツールは2つのファイルを出力します。
- key.pem (秘密鍵)
- cert.pem (公開証明書)
これらのファイルを使用して、自己署名証明書を生成します。
3.2. PKCS12証明書の生成
ほとんどの場合、証明書は公開鍵暗号化標準#12(PKCS12)形式です。 それほど頻繁ではありませんが、Java KeyStore(JKS)形式を使用します。
PEMをPKCS12形式に変換しましょう:
openssl pkcs12 -export -in cert.pem -inkey key.pem -out certificate.p12 -name "certificate"
コマンドの実行中に、key.pem用に以前に作成したパスフレーズを入力するように求められます。
Enter pass phrase for key.pem:
次に、certificate.p12の新しいパスワードを要求するプロンプトが表示されます。
Enter Export Password:
その後、 authentication.p12KeyStoreがPCKS12形式で保存されます。
3.3. PKCS#12からJKS
最後のステップは、PKCS12からJKS形式に変換することです。
keytool -importkeystore -srckeystore certificate.p12 -srcstoretype pkcs12 -destkeystore cert.jks
コマンドが実行されると、cert.jksファイルの新しいパスワードの入力を求められます。
Enter destination keystore password:
また、前に作成したcertificate.p12パスワードの入力を求められます。
Enter source keystore password:
次に、最終的な出力が表示されます。
Entry for alias certificate successfully imported.
Import command completed: 1 entries successfully imported, 0 entries failed or cancelled
結果は、JKS形式で保存された cert.jksKeyStoreです。
4. 結論
この記事では、中間のPKCS12形式を使用して、PEMファイルをJKS形式に変換する手順について説明しました。
ヘルプツールとして、keytoolおよびopensslコマンドを使用しました。