ビジネスパートナーの1人が、TLS SHA256証明書を使用してAPIに接続するように要求しています。これらのリクエストを生成する方法がわかりません。以前、opensslを使用してこれらのリクエストを作成しましたが、SHa1を使用してSSL証明書を生成しました。 opensslを使用してこのリクエストを生成できますか?そうでない場合、どうすれば彼らが求めているものを生成できますか?
私はこの分野の専門家ではないので、私が求めていることが理にかなっているかどうかさえわかりません。
CSRハッシュと証明書ハッシュは関連していません
要求と実際の証明書のハッシュタイプは互いに関連していません。
CAはCSRの署名をチェックします。このようにして、CAはCSRが転送中に変更されていないことを確認できます。これがCSRの署名のすべてです。
必要なハッシュをCAに通知する公式(または準公式の)帯域内方法はありません。代わりに、CA会社は複数のCAを実行する場合があり、そのうちの1つはSHA256のみを使用します。 SHA256が必要な場合は、その特定のSHA256-only-CAのWebサイトでCSRを送信します。 (そしてSHA1-CAのウェブサイトにはありません。)
「SHA1で署名されたCSRを送信すると、私の証明書はSHA1で署名されます。」これは通常行われません。 ( これをしばらくの間使用していたことがわかっている唯一のCAは、Gandi.netでした 。)
SHA256でCSRに署名する方法
つまり、-sha256
パラメータは、次のようにSHA256でCSRに署名します。
openssl req -new -newkey rsa:2048 -nodes -sha256 -out www.example.com.sha256.csr -keyout www.example.com.key -subj "/ C = US/ST = ExampleState/L = ExampleLocation/O = ExampleOrganization/CN = www.example.com "
CSRのハッシュタイプをチェックする方法
そして、これはあなたのCSRのハッシュタイプを見つける方法です:
$ openssl req -in www.example.com.sha256.csr -noout -text | grep Signature
Signature Algorithm: sha256WithRSAEncryption
良い。希望どおりにSHA256を使用しています。
OpenSSLを使用している場合は、-sha256
コマンドラインオプション。SHA-256署名アルゴリズムでCSRを生成します。