回答:
暗号化証明書のファイル拡張子は、期待したほど標準化されていません。デフォルトでは、Windowsは.crt
ファイルのダブルクリックをWindowsルート証明書ストアに証明書をインポート.cer
する要求として扱いますが、証明書を表示するためだけにファイルを要求として扱います。したがって、Windowsには、各タイプのファイルをダブルクリックしたときに何が起こるかについて固有の異なる意味があるという点で異なります。
しかし、それらをダブルクリックしたときにWindowsがそれらを処理する方法は、2つの違いだけです。どちらの拡張機能も、パブリック証明書が含まれていることを示しています。証明書ファイルの名前を変更して、私が見た任意のシステムファイルまたは構成ファイルで、1つの拡張子を別の拡張子に置き換えることができます。また、Windows以外のプラットフォーム(およびWindowsでも)では、ファイルの内容が正しい限り、両者に違いがないため、使用する拡張子に特に注意を払う必要はなく、どちらも同じように扱います。
混乱を招くのは、証明書データをファイルに保存する標準的な方法が2つあることです。1つは「バイナリ」X.509エンコーディングで、もう1つは通常「-----BEGIN CERTIFICATE-----
」で始まる「テキスト」base64エンコーディングです。これらは同じデータを異なる方法でエンコードします。ほとんどのシステムは両方の形式を受け入れますが、必要な場合は、opensslまたは他のツールを使用して一方を他方に変換できます。証明書ファイル内のエンコーディングは、誰かがファイルに付けた拡張子とはまったく無関係です。
ドキュメントmod_sslによると:
SSLCertificateFile:
Name: SSLCertificateFile
Description: Server PEM-encoded X.509 certificate file
証明書ファイルはPEMエンコードされたX.509証明書ファイルである必要があります:
openssl x509 -inform DER -in certificate.cer -out certificate.pem
zscaler
で実行さvagrant
れているときに、SSL証明書エラーを解決しますか?私はそれらを使用し、変換を使用してそれらをシンボリックリンクし、コンテンツをファイルにコピーしてから再プロビジョニングしましたが、まだ開発ボックスでエラーが発生します。win
vbox
homestead
scp
/etc/ssl/certs
ca-certificates.crt
google-recaptcha
tls
ssl
file_get_contents
基本的に、DERとBase64の2つのCER証明書エンコーディングタイプがあります。タイプDERが証明書(asn1エンコードルーチン)の読み込み中にエラーを返した場合は、PEMを試してみてください。
openssl x509 -inform DER -in certificate.cer -out certificate.crt
openssl x509 -inform PEM -in certificate.cer -out certificate.crt
PKCS#7でエンコードされた証明書データを含む.cerファイルがあり、それをPEMでエンコードされた証明書データ(通常は.crtまたは.pemファイル)に変換するとします。たとえば、PKCS#7でエンコードされたデータを含む.cerファイルは次のようになります。
----- BEGIN PKCS7 ----- MIIW4gYJKoZIhvcNAQcCoIIW0zCCFs8CAQExADALBgkqhkiG9w0BBwGggha1MIIH ... POI9n9cd2cNgQ4xYDiKWL2KjLB + 6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G + bKhADEA ----- END PKCS7 -----
PEM証明書データは次のようになります。
-----証明書の開始----- MIIHNjCCBh6gAwIBAgIQAlBxtqKazsxUSR9QdWWxaDANBgkqhkiG9w0BAQUFADBm ... nv72c / OV4nlyrvBLPoaS5JFUJvFUG8RfAEY = -----証明書の終了-----
.cerファイル(PKCS#7データを含む)を、予想されるPEMデータ(BEGIN CERTIFICATE
上記の例のブロック)に変換するOpenSSLコマンドがあります。certfile.cerと呼ぶファイルでこのコマンドを使用して、PKCS#7データをPEM形式に強制変換できます。
openssl pkcs7 -text -in certfile.cer -print_certs -outform PEM -out certfile.pem
.cerまたは.pemファイルには、1つ以上の証明書(おそらく証明書チェーン全体)が含まれている可能性があることに注意してください。
CERは、DERエンコードされたバイナリ形式のX.509証明書です。
CRTは、テキスト(base-64)エンコーディングでカプセル化されたバイナリX.509証明書です。
同じエンコーディングではありません。
.cerファイルを.crtファイルに変換する方法(それらは異なる方法でエンコードされています!)
openssl pkcs7 -print_certs -in certificate.cer -out certificate.crt
openssl x509 -inform der -in certificate.cer -out certificate.pem
unable to load PKCS7 object
私はコマンドを使用します:
openssl x509 -inform PEM -in certificate.cer -out certificate.crt
しかし、CERは、DER形式でエンコードされたバイナリ形式のX.509証明書です。CRTは、テキスト(base-64)エンコーディングでカプセル化されたバイナリX.509証明書です。
そのため、おそらく以下を使用する必要があります。
openssl x509 -inform DER -in certificate.cer -out certificate.crt
次に、証明書をインポートします。
CAをdirにコピーします。
/usr/local/share/ca-certificates/
コマンドを使用:
sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt
CAストアを更新します。
sudo update-ca-certificates
cerファイルがバイナリ形式の場合は、次の方法で変換する必要があります
openssl x509 -inform DER -in YOUR_CERTIFICATE.cer -out YOUR_CERTIFICATE.crt
.cerおよび.crtファイルは、キーストアにインポートする限り、交換可能でなければなりません。
.cerファイルの内容を見てください。-----BEGIN CERTIFICATE-----
行の前と行の後のすべてを消去し-----END CERTIFICATE-----
ます。BEGIN / END行が残り、その間にBase64でエンコードされたものがたくさんあります。
-----BEGIN CERTIFICATE-----
MIIDQTCCAqqgAwIBAgIJALQea21f1bVjMA0GCSqGSIb3DQEBBQUAMIG1MQswCQYD
...
pfDACIDHTrwCk5OefMwArfEkSBo/
-----END CERTIFICATE-----
次に、keytoolを使用してキーファイルにインポートします。
keytool -import -alias myalias -keystore my.keystore -trustcacerts -file mycert.cer
するだけ
openssl x509 -req -days 365 -in server.cer -signkey server.key -out server.crt
CER
そして、CRT
拡張子は何も意味しません。PKIベンダーが異なれば、同じものに対して異なる拡張子が使用されます。ファイルがバイナリの場合、おそらくASN.1 / DERでエンコードされています。ファイルがで人間が読める場合は-----BEGIN CERTIFICATE-----
、PEMでエンコードされています。何がありますか(DERまたはPEM)、何が必要ですか(DERまたはPEM)?