[解決済み] Java Keystore を PEM 形式に変換する
2022-05-09 13:58:58
質問
私はkeytoolとopensslアプリケーションを使用して、JavaキーストアファイルからPEMファイルに変換しようとしています。しかし、私は変換を行うための良い方法を見つけることができませんでした。何かアイデアはありますか?
キーストアを直接PEMに変換する代わりに、私は最初にPKCS12ファイルを作成し、関連するPEMファイルとキーストアに変換しようとしました。しかし、私はそれらを使用して接続を確立することができませんでした。(PEMファイルとKeystoreファイルがあれば、セキュアな接続が可能です。Start from a java keystore file"のような制限はありません)。そのため、他のフォーマットから開始することは、私の場合、許容範囲内です)
しかし、jksからpemへの直接変換方式が望ましい。
どのように解決するのですか?
少なくともjdk6を使用すれば、かなり簡単です...。
bash$ keytool -keystore foo.jks -genkeypair -alias foo \. -dname 'CN=foo.example.com,L=Melbourne,ST=Victoria,C=AU'。 keystoreのパスワードを入力します。 新しいパスワードを再入力してください。 の鍵パスワードを入力します。 (鍵屋のパスワードと同じならRETURN): bash$ keytool -keystore foo.jks -exportcert -alias foo | \? openssl x509 -inform der -text キーストアパスワードを入力:asdasd 証明書です。 データ バージョン: 3 (0x2) シリアルナンバー:1237334757 (0x49c03ae5) 署名アルゴリズム: dsaWithSHA1 発行者:C=AU, ST=Victoria, L=Melbourne, CN=foo.example.com 有効期限 以前はありません。3月18日 00:05:57 2009 グリニッジ標準時 以降 : 2009年6月16日 00:05:57 GMT 件名 C=AU、ST=Victoria、L=Melbourne、CN=foo.example.com 件名 公開鍵情報 公開鍵のアルゴリズム: dsaEncryption DSAの公開鍵です。 パブ 00:e2:66:5c:e0:2e:da:e0:6b:a6:aa:97:64:59:14: 7e:a6:2e:5a:45:f9:2f:b5:2d:f4:34:27:e6:53:c7: bash$ keytool -importkeystore -srckeystore foo.jks \. -destkeystore foo.p12 \. -srcstoretype jks \? -deststoretype pkcs12 保存先のキーストアのパスワードを入力します。 新しいパスワードを再入力してください。 移行元のキーストアパスワードを入力します。 エイリアスfooのエントリーが正常にインポートされました。 インポートコマンドが完了しました。 1 つのエントリが正常にインポートされ、0 つのエントリが失敗またはキャンセルされました。 bash$ openssl pkcs12 -in foo.p12 -out foo.pem インポートパスワードを入力してください。 MAC認証済み OK PEMパスフレーズを入力します。 Verifying - PEMパスフレーズを入力します。 bash$ openssl x509 -text -in foo.pem 証明書です。 データ バージョン: 3 (0x2) シリアル番号:1237334757 (0x49c03ae5) 署名アルゴリズム: dsaWithSHA1 発行者:C=AU, ST=Victoria, L=Melbourne, CN=foo.example.com 有効期限 以前はありません。3月18日 00:05:57 2009 グリニッジ標準時 以降 : 2009年6月16日 00:05:57 GMT 件名 C=AU、ST=Victoria、L=Melbourne、CN=foo.example.com 件名 公開鍵情報 公開鍵のアルゴリズム: dsaEncryption DSAの公開鍵です。 パブ 00:e2:66:5c:e0:2e:da:e0:6b:a6:aa:97:64:59:14: 7e:a6:2e:5a:45:f9:2f:b5:2d:f4:34:27:e6:53:c7: bash$ openssl dsa -text -in foo.pem DSA鍵の読み込み PEMパスフレーズを入力します。 プライベートキーです。(1024ビット) priv: 00:8f:b1:af:55:63:92:7c:d2:0f:e6:f3:a2:f5:ff: 1a:7a:fe:8c:39:dd パブ 00:e2:66:5c:e0:2e:da:e0:6b:a6:aa:97:64:59:14: 7e:a6:2e:5a:45:f9:2f:b5:2d:f4:34:27:e6:53:c7:
で終わってしまうんですね。
- foo.jks - java 形式の鍵ストア。
- foo.p12 - PKCS#12 形式の鍵ストア。
- foo.pem - keystore のすべてのキーと証明書、PEM 形式。
(この最後のファイルは、お好みで鍵と証明書に分割することができます)。
コマンドの概要 - JKS keystore を作成します。
keytool -keystore foo.jks -genkeypair -alias foo \
-dname 'CN=foo.example.com,L=Melbourne,ST=Victoria,C=AU'
コマンドの概要 - JKSキーストアをPKCS#12キーストアに変換し、PEMファイルに変換します。
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
JKSキーストアに複数の証明書があり、そのうちの1つのエイリアスに関連する証明書と鍵だけをエクスポートしたい場合、次のバリエーションを使用することができます。
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcalias foo \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
コマンドの概要 - JKS keystore と PEM ファイルを比較します。
keytool -keystore foo.jks -exportcert -alias foo | \
openssl x509 -inform der -text
openssl x509 -text -in foo.pem
openssl dsa -text -in foo.pem
関連
-
をインスタンス化することができません。
-
Javaエラーメッセージがenclosingクラスでない
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スレッド "main "での例外をEclipseで解決 java.lang.Error: 未解決のコンパイル問題、コンパイラとパッケージの不整合
-
IllegalArgumentException この例外を解決する方法
-
Eclipseで "XXXX "の解決策を(型に)解決することができない
-
Spring boot runs with Error creating bean with name 'entityManagerFactory' defined in class path resource
-
エラーの解決方法 jarfile XXX.jarにアクセスできません。
-
が 'X-Frame-Options' を 'deny' に設定しているため、フレーム内にある。
-
Javaエラーメッセージがenclosingクラスでない
-
java.lang.NoClassDefFoundError: org.apache.jasper.el.ELContextImpl クラスを初期化できませんでした。
-
javax.net.ssl.SSLException: 読み取りエラー: ssl=0xdeae5100: システムコール中の I/O エラー、接続 res
-
java 例外。Javaツールの初期化