web-dev-qa-db-ja.com

.pemを.crtと.keyに変換します。

誰かが.crtファイルから証明書.keyおよび秘密鍵.pemファイルを抽出/変換する正しい方法/コマンドを教えてもらえますか?私はちょうどそれらが交換可能であることを読んだが、どうではない。

262
Lanbo

私はこれを使ってpemをcrtに変換することができました:

openssl x509 -outform der -in your-cert.pem -out your-cert.crt
384
C.B.

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ツールオプション

  • _名前_

    rsa - RSA鍵処理ツール

  • _概要_

    openssl rsa [-help] [-inform PEM | NET | DER] [-outform PEM | NET | DER] [-inファイル名] [-passin arg] [-outファイル名] [-passout arg] [-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
    

    rSAPublicKeyフォーマットが代わりに使用されることを除いて、-pubinや-puboutと同じです。

    -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ファイルと互換性のある形式です。これは、暗号化に無塩RC4を使用します。あまり安全ではないので、必要なときにだけ使用してください。

    IISの一部の新しいバージョンでは、エクスポートされた.keyファイルに追加のデータがあります。これらをユーティリティで使用するには、バイナリエディタでファイルを表示して文字列 "private-key"を探し、バイトシーケンス0x30、0x82までトレースバックします(これはASN1シーケンスです)。この時点以降のすべてのデータを別のファイルにコピーし、それを-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
    
286
evergreen

Pemファイルからキーと証明書を抽出するには

抽出キー

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

キーを抽出する別の方法...

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

CAチェーンを含むすべての証明書を抽出する

openssl crl2pkcs7 -nocrl -certfile foo.pem | openssl pkcs7 -print_certs -out foo.cert

テキストで最初の証明書をDERとして抽出する

openssl x509 -in foo.pem -outform DER -out first-cert.der
23
Highway of Life