Enterprise IT Notes 003-PFX証明書をJKSに変換する

 

最近、クライアント認証にPFX証明書を使用する必要がありました。そのため、Javaキーストア(JKS)に変換する必要がありました。この投稿では、トラストストアとキーストアの両方を作成する方法を学習します。ニーズに基づいて、どちらか一方が必要になる場合があるためです。 

JSSE参照ガイドによると、トラストストアとキーストアの違いは、知らない場合は次のとおりです

TrustManager:リモート認証資格情報(したがって接続)を信頼するかどうかを決定します。

KeyManager:リモートホストに送信する認証資格情報を決定します。

次に、必要なのはOpenSSLとJava 7+だけです!###前提条件

1qaz @ WSX

### 1.pfxを介してキーファイルを生成する

まず、PFXファイルからキーを生成しましょう。このキーは後でp12キーストアに使用されます。

示例: openssl pkcs12 -in example.pfx -nocerts -out example.key

### OpenSSLディレクトリに移動します

CD c:\ OpenSSL-Win32 \ bin

openssl pkcs12 -in C:\ OpenSSL-Win32 \ bin \ JKS \ i-zhishi_com \ i-zhishi_com_20210103.pfx -nocerts -out C:\ OpenSSL-Win32 \ bin \ JKS \ i-zhishi_com \ i-zhishi_com_20210103.key

ここに示すように、PFXファイルのパスワードの入力を求められます。後で、PEMパスフェーズに入るように求められます。たとえば、ここではすべてに123456を使用しましょう。

### 2.pfxを介してCRTファイルを生成します

2番目のコマンドはほとんど同じですが、今回はnokeyとcrtについてです。

示例: openssl pkcs12 -in example.pfx -clcerts -nokeys -out example.crt

openssl pkcs12 -in C:\ OpenSSL-Win32 \ bin \ JKS \ i-zhishi_com \ i-zhishi_com_20210103.pfx -clcerts -nokeys -out C:\ OpenSSL-Win32 \ bin \ JKS \ i-zhishi_com \ i-zhishi_com_20210103.crt

### 3.CRTを介してtruststore.jksを生成します

これで、キーとcrtファイルができました。次のステップは、次のようにトラストストアを作成することです。

示例: keytoolの-import -file example.crt -alias exampleCA -keystore truststore.jks

### JDKディレクトリに移動します

c:\ OpenSSL-Win32 \ bin> cd "C:\ Program Files \ Java \ jdk1.7.0_79 \ bin"

C:\ Program Files \ Java \ jdk1.7.0_79 \ bin>

keytool -import -file C:\ OpenSSL-Win32 \ bin \ JKS \ i-zhishi_com \ i-zhishi_com_20210103 .crt -alias examplei-zhishiCA -keystore C:\ OpenSSL-Win32 \ bin \ JKS \ i-zhishi_com \ i-zhishi_com_20210103_truststore .jks

ここに表示されているように、このcrtファイルをJKSトラストストアにインポートしてパスワードを設定するだけです。質問の場合:「この証明書を信頼しますか?」「はい」と答えると、トラストストアに追加されます。

トラストストアのみが必要な場合は、ここで停止できます。

### 4. crt / key / crtを使用してkeystore.p12を作成します

最後のステップは、次のようにキーストアを作成することです。

示例: openssl pkcs12 -export -in example.crt -inkey example.key -certfile example.crt -name "examplecert" -out keystore.p12

openssl pkcs12 -export -in C:\ OpenSSL-Win32 \ bin \ JKS \ i-zhishi_com \ i-zhishi_com_20210103.crt -inkey C:\ OpenSSL-Win32 \ bin \ JKS \ i-zhishi_com \ i-zhishi_com_20210103.key -certfile C:\ OpenSSL-Win32 \ bin \ JKS \ i-zhishi_com \ i-zhishi_com_20210103.crt -name "examplei-zhishiCert" -out C:\ OpenSSL-Win32 \ bin \ JKS \ i-zhishi_com \ i-zhishi_com_20210103_keystore.p12

### 5..keystore.p12を介してkeystore.jksを作成します

多くの場合、このp12キーストアで十分です。ただし、それでもJKSキーストアが必要な場合は、次の1つの追加コマンドが必要です。

示例: keytool -importkeystore -srckeystore keystore.p12 -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype JKS

キーストアkeystore.p12をkeystore.jksにインポートしています...

### JDKディレクトリに移動します

c:\ OpenSSL-Win32 \ bin> cd "C:\ Program Files \ Java \ jdk1.7.0_79 \ bin"

C:\ Program Files \ Java \ jdk1.7.0_79 \ bin>

keytool -importkeystore -srckeystore C:\ OpenSSL-Win32 \ bin \ JKS \ i-zhishi_com \ i-zhishi_com_20210103_keystore.p12 -srcstoretype pkcs12 -destkeystore C:\ OpenSSL-Win32 \ bin \ JKS \ i-zhishi_com \ i-zhishi_com_20210103_keystore.jks -deststoretype JKS

キーストアkeystore.p12をkeystore.jksにインポートしています...

エイリアスexamplecertのエントリが正常にインポートされました。

インポートコマンドが完了しました:1エントリが正常にインポートされ、0エントリが失敗またはキャンセルされました

警告:

JKSキーストアは独自の形式を使用します。「keytool-importkeystore-srckeystore keystore.jks -destkeystore keystore.jks -deststoretype pkcs12」を使用して、業界標準形式であるPKCS12に移行することをお勧めします。

以上です!これがお役に立てば幸いです。ご質問やコメントがございましたら、お気軽にどうぞ。

ls //証明書ファイルを表示する

example.pfx

example.key

example.crt

keystore.p12

keystore.jks

truststore.jks

おすすめ

転載: blog.51cto.com/dynamic/2584075