1. ホーム
  2. ssl

[解決済み] pem、crt、keyファイルの違いについて

2022-03-01 09:29:11

質問

opensslが生成するファイルの違いとその検出方法がわからず困っています。

例えば、私は秘密鍵付きの自己署名証明書を生成し、p12からJKSファイルを生成しようとしています。 形式を使用します。私は狂ったようにググっていますが、次のコマンドを使用できるように正しく生成する方法がまだ分かっていません。

openssl pkcs12 -export -in user.pem -inkey user.key -certfile user.pem -out testkeystore.p12
keytool -importkeystore -srckeystore testkeystore.p12 -srcstoretype pkcs12 -destkeystore wso2carbon.jks -deststoretype JKS

出典 https://www.ibm.com/support/pages/how-generate-jks-keystore-existing-private-key

自己署名証明書と秘密鍵を生成するいくつかの異なるコマンドを見つけましたが、結果のファイルを上記のコマンドにマップする方法がわかりませんし、さらに悪いことに、これらのコマンドが何をするのかがわかりません。 つまり、どんなファイルを生成するかは分かるし、証明書と秘密鍵がそれに署名するために使われることも理解できるのですが(あるいはその逆かもしれませんが:|)、これらのコマンドの違いは何なのか、そしてcert.pem === certificate.crt なのか - これらのファイル拡張子は私を狂わせることになります。

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem

これは、私がopensslコマンドで同様の問題を抱えている別の状況です。この時点で、私はいくつかのRFCを読む準備ができています(こんなことにならなければいいのですが :)

よろしくお願いします。

解決方法を教えてください。

これらのファイル名は、鍵の生成と検証のプロセスの異なる部分を表しています。 この名前は単なる慣例であり、これらのファイルを pepperoni.pizza であり、内容は同じですので、ファイル名の使い分けを意識してください。

PKIについて簡単に説明すると、鍵は公開鍵と秘密鍵の2つに分かれる。 公開鍵は広く一般に配布することができ、秘密鍵を用いて生成された情報を検証することはできますが、複製することはできません。 秘密鍵は秘密にしておかなければならない。

.key ファイルは一般に秘密鍵であり、クライアントが検証するためのデータを暗号化し、パッケージ化するためにサーバーが使用します。

.pem ファイルは通常、公開鍵であり、クライアントがサーバーから送信されたデータを検証し、復号化するために使用されます。

.p12 ファイルには鍵の両側が埋め込まれているので、管理者は簡単に鍵の両側を管理することができます。

.cert または .crt ファイルは証明書署名要求で、信頼できる第三者が秘密鍵に直接アクセスすることなく鍵ペアの所有権を確認するために使用します (これにより、あなたのウェブサイトを直接知らないエンドユーザが、証明書が有効であると確信することができます)。 自己署名のシナリオでは、自分の秘密鍵を使った証明書署名要求を使って、自分の秘密鍵を検証します(したがって自己署名です)。 あなたのspeficアプリケーションによっては、これは必要ではないかもしれません。(ウェブサーバーやRPCサーバーには必要ですが、それ以外にはあまり必要ありません)。

JKSキーストアは、上記のコンポーネントの一部または全部を保存・管理し、各鍵に対して許可または拒否される関連能力のデータベースを保持するためのJava用ネイティブファイル形式です。

あなたが挙げたコマンドは私には問題なく見えますし、異なるファイルが何のためにあるのかを尋ねる以上の疑問は見当たりません。 もし、もっと情報が必要なら、質問を充実させてください。