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コマンドを使用しました。