OpenSSLを使用して秘密鍵を含むDER形式の自己署名証明書を生成するには?

OpenSSLを使用して秘密鍵を含むDER形式の自己署名証明書を生成するには?

タイトルからわかるように:

OpenSSLを使用して自己署名証明書を生成する方法ダック滞在秘密鍵が含まれています。?これは可能ですか?

証明書とその秘密鍵をPFX形式のファイルに結合する方法を説明する多数の投稿を見つけましたが、これは私が望むものではありません。

背景:

実際、この証明書をWindows証明書ストアにインポートする必要があります。しかし、まだLinux / OpenSSLを使用して証明書/キーを生成したいと思います。

まず、PEM形式で証明書を生成してから、秘密鍵ファイル(PEM形式)を追加してみました。 Windows証明書管理からファイルをインポートできますが、秘密鍵はありません。証明書は正しく表示されますが、秘密鍵がないと主張します。

次に、証明書と秘密鍵を取得し、PFXファイルに追加しました。問題は、OpenSSLが秘密鍵のエクスポートパスワードなしでPFXファイルを生成できないことです。 Windows証明書の管理では、PFXファイル(秘密鍵を含む)をインポートできますが、証明書を使用する必要があるサービスはあいまいなエラーメッセージで証明書の使用を拒否します。 2日間デバッグしてみましたが、役に立ちませんでした。エクスポートパスワードが問題である可能性があります(Windows証明書サブシステムは証明書をインポートした後にパスワードを要求しないことを期待していますが)。

したがって、最後の希望は、証明書と秘密鍵を含むDERファイルを生成することです。 Windowsツールを使用してこれらのファイルを生成できるため、証明書と秘密鍵をDERファイルに入れることができることを知っています。しかし、Linux / OpenSSLではどうすればいいですか?

私はさまざまな形式で同じ証明書を生成するために次のスクリプトのようなものを使用しています(これは現在のバージョンであり、多くのバリエーションを試しました)。

#!/bin/bash

# Generate RSA key
openssl genrsa -out key.pem 4096

# Generate certificate request
openssl req -new -nodes -key key.pem -out csr.pem -subj /CN=DAX

# Generate self-signed certificate (sign the certificate request)
openssl req -x509 -nodes -sha256 -days 36500 -key key.pem -in csr.pem -out cert.pem

# Add some extensions ...
openssl x509 -extfile /etc/ssl/pp-openssl.cnf -sha256 -days 36500 -signkey key.pem -in cert.pem -out ext.pem

# Append private key to the PEM certificate
cat key.pem >> ext.pem

# Create PFX and DER formats
openssl pkcs12 -nodes -export -out cert.pfx -inkey key.pem -in ext.pem
openssl x509 -outform der -out cert.cer -in ext.pem

最後の行は、PEM入力ファイルに含まれていても、秘密鍵をはっきりと削除します(DERファイルには含まれていません)。

修正する

Windowsツールを使用してこれらのファイルを生成できるため、証明書と秘密鍵をDERファイルに入れることができることを知っています。

上記の記述が間違っていることが事実として証明されています。テスト結果を間違って理解しました。以下の説明を参照してください。要するに、同じDERファイルに証明書と秘密鍵を持つことはできません。

しかし、後で参照できるように元の質問を保管しています。

関連情報