507

.crtファイルから証明書と秘密鍵.keyファイルを抽出/変換する正しい方法/コマンドを教えてもらえ.pemますか? それらは交換可能であると読みましたが、方法ではありません。

4

7 に答える 7

674

これを使用してpemをcrtに変換できました:

openssl x509 -outform der -in your-cert.pem -out your-cert.crt
于 2013-01-23T16:23:03.357 に答える
545

OpenSSL を使用した変換

これらのコマンドを使用すると、証明書とキーをさまざまな形式に変換して、特定の種類のサーバーまたはソフトウェアと互換性を持たせることができます。

  • DER ファイル (.crt .cer .der) を PEM に変換する

    openssl x509 -inform der -in certificate.cer -out certificate.pem
    
  • PEM ファイルを DER に変換する

    openssl x509 -outform der -in certificate.pem -out certificate.der
    
  • 秘密鍵と証明書を含む PKCS#12 ファイル (.pfx .p12) を PEM に変換します

    openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes
    
    You can add -nocerts to only output the private key or add -nokeys to only output the certificates.
    
  • PEM 証明書ファイルと秘密鍵を PKCS#12 (.pfx .p12) に変換する

    openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
    
  • PEM を CRT に変換 (.CRT ファイル)

    openssl x509 -outform der -in certificate.pem -out certificate.crt
    

OpenSSL 変換 PEM

  • PEM を DER に変換する

    openssl x509 -outform der -in certificate.pem -out certificate.der
    
  • PEMをP7Bに変換

    openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
    
  • PEM を PFX に変換する

    openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
    

OpenSSL 変換 DER

  • DER を PEM に変換する

    openssl x509 -inform der -in certificate.cer -out certificate.pem
    

OpenSSL 変換 P7B

  • P7B を PEM に変換する

    openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
    
  • P7B を PFX に変換する

    openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
    
    openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
    

OpenSSL 変換 PFX

  • PFX から PEM への変換

    openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
    

OpenSSL による RSA キーの生成

  • コマンド ラインで OpenSSL を使用すると、最初に公開鍵と秘密鍵を生成する必要があります。このファイルは、-passout 引数を使用してパスワードで保護する必要があります。この引数にはさまざまな形式があるため、それについては OpenSSL のドキュメントを参照してください。

    openssl genrsa -out private.pem 1024
    
  • これにより、1024 ビットを使用する private.pem というキー ファイルが作成されます。このファイルには実際には秘密鍵と公開鍵の両方が含まれているため、このファイルから公開鍵を抽出する必要があります。

    openssl rsa -in private.pem -out public.pem -outform PEM -pubout
    
    or
    
    openssl rsa -in private.pem -pubout > public.pem
    
    or
    
    openssl rsa -in private.pem -pubout -out public.pem
    

    これで、公開鍵だけを含む public.pem が作成されます。これをサード パーティと自由に共有できます。公開鍵を使用して自分で何かを暗号化し、秘密鍵を使用して復号化するだけで、すべてをテストできます。まず、暗号化するデータが少し必要です。

  • サンプルファイル:

    echo 'too many secrets' > file.txt
    
  • file.txt にいくつかのデータが含まれているので、OpenSSL と公開鍵を使用して暗号化します。

    openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
    
  • これにより、file.ssl と呼ばれる file.txt の暗号化されたバージョンが作成されます。このファイルを見ると、バイナリ ジャンクであり、誰にとってもあまり役に立ちません。これで、秘密鍵を使用して暗号化を解除できます。

    openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
    
  • これで、decrypted.txt に暗号化されていないファイルが作成されます。

    cat decrypted.txt
    |output -> too many secrets
    

OpenSSL の RSA TOOLS オプション

  • 名前

    rsa - RSA 鍵処理ツール

  • あらすじ

    openssl rsa [-help] [-inform PEM|NET|DER] [-outform PEM|NET|DER] [-in ファイル名] [-passin 引数] [-out ファイル名] [-passout 引数] [-aes128] [- aes192] [-aes256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-text] [-noout] [-modulus] [-check] [-pubin] [-pubout] [-RSAPublicKey_in] [-RSAPublicKey_out] [-engine id]

  • 説明

    rsa コマンドは、RSA キーを処理します。それらは、さまざまなフォームと印刷されたコンポーネントの間で変換できます。このコマンドは、秘密鍵の暗号化に従来の SSLeay と互換性のある形式を使用することに注意してください。新しいアプリケーションでは、pkcs8 ユーティリティを使用して、より安全な PKCS#8 形式を使用する必要があります。

  • コマンドオプション

    -help
    

    使用上のメッセージを印刷します。

    -inform DER|NET|PEM
    

    入力フォーマットを指定します。DER オプションは、PKCS#1 RSAPrivateKey または SubjectPublicKeyInfo 形式と互換性のある ASN1 DER エンコード形式を使用します。PEM 形式がデフォルトの形式です。追加のヘッダー行とフッター行でエンコードされた DER 形式の base64 で構成されています。入力では、PKCS#8 形式の秘密鍵も受け入れられます。NET フォームは、NOTES セクションで説明されている形式です。

    -outform DER|NET|PEM
    

    これは出力形式を指定します。オプションの意味は -inform オプションと同じです。

    -in filename
    

    このオプションが指定されていない場合は、標準入力からキーを読み取る入力ファイル名を指定します。キーが暗号化されている場合は、パス フレーズの入力を求めるプロンプトが表示されます。

    -passin arg
    

    入力ファイルのパスワード ソース。arg の形式の詳細については、openssl の PASS PHRASE ARGUMENTS セクションを参照してください。

    -out filename
    

    これは、このオプションが指定されていない場合、キーを書き込む出力ファイル名または標準出力を指定します。暗号化オプションが設定されている場合は、パス フレーズの入力を求めるプロンプトが表示されます。出力ファイル名は、入力ファイル名と同じであってはなりません。

    -passout password
    

    出力ファイルのパスワード ソース。arg の形式の詳細については、openssl の PASS PHRASE ARGUMENTS セクションを参照してください。

    -aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea
    

    これらのオプションは、秘密鍵を出力する前に、指定された暗号で暗号化します。パス フレーズの入力を求められます。これらのオプションのいずれも指定されていない場合、キーはプレーン テキストで書き込まれます。つまり、rsa ユーティリティを使用して、暗号化オプションなしで暗号化されたキーを読み取ると、キーからパス フレーズを削除したり、暗号化オプションを設定することで、パス フレーズを追加または変更したりできます。これらのオプションは、PEM 形式の出力ファイルでのみ使用できます。

    -text
    

    エンコードされたバージョンに加えて、さまざまな公開鍵または秘密鍵のコンポーネントをプレーンテキストで出力します。

    -noout
    

    このオプションは、暗号化されたバージョンのキーの出力を防ぎます。

    -modulus
    

    このオプションは、キーのモジュラスの値を出力します。

    -check
    

    このオプションは、RSA 秘密鍵の一貫性をチェックします。

    -pubin
    

    デフォルトでは、入力ファイルから秘密鍵が読み取られます。このオプションを使用すると、代わりに公開鍵が読み取られます。

    -pubout
    

    デフォルトでは、秘密鍵が出力されます。このオプションを使用すると、代わりに公開鍵が出力されます。入力が公開鍵の場合、このオプションは自動的に設定されます。

    -RSAPublicKey_in, -RSAPublicKey_out
    

    -pubin および -pubout と同様ですが、代わりに RSAPublicKey 形式が使用されます。

    -engine id
    

    エンジンを (一意の ID 文字列で) 指定すると、rsa は指定されたエンジンへの機能参照を取得しようとし、必要に応じてエンジンを初期化します。エンジンは、使用可能なすべてのアルゴリズムのデフォルトとして設定されます。

  • ノート

    PEM 秘密鍵形式では、ヘッダー行とフッター行を使用します。

    -----BEGIN RSA PRIVATE KEY-----
    
    -----END RSA PRIVATE KEY-----
    

    PEM 公開鍵形式は、ヘッダー行とフッター行を使用します。

    -----BEGIN PUBLIC KEY-----
    
    -----END PUBLIC KEY-----
    

    PEM RSAPublicKey 形式は、ヘッダー行とフッター行を使用します。

    -----BEGIN RSA PUBLIC KEY-----
    
    -----END RSA PUBLIC KEY-----
    

    NET フォームは、古い Netscape サーバーおよび Microsoft IIS の .key ファイルと互換性のある形式で、暗号化に unsalted RC4 を使用します。あまり安全ではないため、必要な場合にのみ使用してください。

    IIS の一部の新しいバージョンでは、エクスポートされた .key ファイルに追加のデータが含まれています。ユーティリティでこれらを使用するには、バイナリ エディタでファイルを表示し、文字列「private-key」を探してから、バイト シーケンス 0x30、0x82 (これは ASN1 SEQUENCE です) までさかのぼります。この時点以降のすべてのデータを別のファイルにコピーし、それを -inform NET オプションを使用して rsa ユーティリティへの入力として使用します。

    RSA秘密鍵のパスフレーズを削除するには:

     openssl rsa -in key.pem -out keyout.pem
    

    トリプル DES を使用して秘密鍵を暗号化するには:

     openssl rsa -in key.pem -des3 -out keyout.pem
    

    秘密鍵を PEM から DER 形式に変換するには:

      openssl rsa -in key.pem -outform DER -out keyout.der
    

    秘密鍵のコンポーネントを標準出力に出力するには:

      openssl rsa -in key.pem -text -noout
    

    秘密鍵の公開部分だけを出力するには:

      openssl rsa -in key.pem -pubout -out pubkey.pem
    

    秘密鍵の公開部分を RSAPublicKey 形式で出力します。

      openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
    
于 2016-07-16T06:59:01.917 に答える
45

前提条件

openssl インストールする必要があります。Windows にGit Bashがインストールされている場合は、それを試してください。代替バイナリはここにあります。

.keyステップ1 :抽出.pem

openssl pkey -in cert.pem -out cert.key

.crtステップ 2 :抽出.pem

openssl crl2pkcs7 -nocrl -certfile cert.pem | openssl pkcs7 -print_certs -out cert.crt
于 2020-02-20T08:31:24.803 に答える
7

これは私がWindowsで行ったことです。

  1. open ssl exe を含む zip ファイルをGoogleからダウンロードします。
  2. zip ファイルを解凍し、bin フォルダーに移動します。
  3. bin フォルダーのアドレス バーに移動し、cmd と入力します。これにより、このフォルダーでコマンド プロンプトが開きます。
  4. .pem ファイルをこの bin フォルダーに移動/配置します。
  5. 2 つのコマンドを実行します。1 つは証明書を作成し、2 番目はキー ファイルを作成します。
openssl x509 -outform der -in yourPemFilename.pem -out certfileOutName.crt
openssl rsa -in yourPemFilename.pem -out keyfileOutName.key
于 2021-02-14T11:04:40.507 に答える