現在一生懸命進められているSSLサーバ証明書のSHA-256化。
やっぱり、CSRの生成時にも-sha256のオプションを付けて生成しないとSSLサーバ証明書の署名アルゴリズムはsha256にならないのでしょうか。
どうやら認証局によって違うことが分かりました。
CSRの署名アルゴリズムはsha256で生成しなければならないのか
結論から言うと、CSR生成時のsha256の指定はいりません。
あれ、ちょっと肩すかしな感じですか?
なぜかと言うと、CSR生成の署名と、実際に発行されるSSLサーバ証明書の署名は全く別物だからです。
そもそも、デジタル署名とは、作成者を明確にするもの、データが改ざんされていないかを確認するものです。
CSRというデータには秘密鍵によるデジタル署名がされていますが、それは、そのCSRが秘密鍵を保有しているものが作ったものか、また、改ざんされていないかを確認するために付与されています。
一方、証明書を発行する際は、認証局の秘密鍵を使ってデジタル署名がされています。
まず、ここでデジタル署名が違うことが分かります。
- CSR:CSR作成者のデジタル署名
- 証明書:認証局のデジタル署名
そして、CSRのデジタル署名で使われている署名アルゴリズムが、そのまま証明書のデジタル署名の署名アルゴリズムになるのでは、という疑問がわくかもしれませんが、そうはなりません。
CSRの署名アルゴリズムがSHA-1でも、sha256の証明書は発行出来ますし、逆にsha256のCSRでもsha-1で発行出来ちゃいます。
要するに、SSLサーバ証明書の署名アルゴリズムは、CSRの署名アルゴリズムの影響は受けません、ということです。
ちなみに、シマンテックだとMD5の署名アルゴリズムで作ったCSRでも通りますし、もちろん、sha256の証明書として発行してくれます。
CSR生成時の署名アルゴリズムは何でもいいの?
では、CSRの署名アルゴリズムは何でもいいのか?となると実状はちょっと違うようです。
ええ~、一体どっちなんだよ、と。
サイトによっては、sha256の証明書を取得する際は、CSRもsha256の署名アルゴリズムで生成されている必要があるという案内をしているところがあります。
ttp://knowledge.sakura.ad.jp/tech/2766/
今まで説明したロジックから言えばCSRをsha256で生成する必要性はないのですが、まぁ、sha256の証明書だ済んだから、CSRもsha256で生成せいっ、ということなんでしょうかね。
その場合も合っている必要性があるのではなく、sha-1のCSRを受け付けない、という実装なんでしょうが。
SHA-1の危険性がうたわれている現在であれば、sha256以上を使うように案内すること自体を否定するつもりはありませんが、あまり混乱するような方向には持って行ってもらいたくないですね。
コメント