質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Q&A

解決済

1回答

2307閲覧

SSL/TLS のサーバー証明書CSRで否認防止をつけるのはなぜ?

advanceboy

総合スコア8

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

0グッド

2クリップ

投稿2021/04/02 16:44

編集2021/04/04 16:15

SSL/TLS のサーバー証明書を作成する際の、証明書署名要求 (CSR) 作成のサンプルで、 keyUsage に nonRepudiation を指定しているものをよく見かけるのですが、なぜでしょうか?

そもそも、電子署名における否認防止の役割が理解できていないきらいがありますが、 PKI 上でサーバー証明書を信頼する上で、否認防止がどのような効果をもたらすのか、教えていただけないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

keyUsage に nonRepudiation を指定しているものをよく見かけるのですが、なぜでしょうか?

SSL/TLS証明書とは無関係なので意味がないケースもあると思いますが、S/MIME(メール保護)用も兼ねる証明書が発行されるケースもあって、その場合には意味があると思います。

SSL/TLSでの鍵の用法は digitalsignature ( 署名 ) であって、認証用に(一般にサーバが)作る署名を証明書に含まれる公開鍵で検証する、という使い方になります。keyencipherment ( 秘密情報の暗号化 ) は、今はもう使わない用途なので無くても良いはずですが、chromeはこの用途も無いと弾く挙動になっていることを少し前に確認しています。( RSA鍵の場合 ) ※以下で訂正・補足

さて、件の nonrepudiation ですが、これは否認防止用の署名を意味していて、S/MIMEの署名機能が丁度該当するということです。

なお、証明書にどのようなkeyusageを載せるかはCAが決めることなので、CSRに何を載せていてもあまり意味はないはずなのですが…。まあ、そこは申請時にどのような取り決めになっているか次第かと思います。

※訂正と補足
chromeの挙動についてテスト環境を設けて改めて確認したところ、digitalsignature用途のみのRSA鍵の証明書でも、特に弾かれることはありませんでした。念のため、chromiumの過去の何バージョンかで試してみたのですが同様でした。何か別の条件で弾かれていたのを勘違いしていた可能性がありますので、「keyenciphermentがないと弾かれた」は無しということで訂正させてください。
それどころか、digitalsignatureのみの証明書でもRSAでの暗号化を利用した鍵交換すら可能でした。もはやkeyusageの意味は一体…? という感じがしています。
イメージ説明

投稿2021/04/03 02:40

編集2021/04/04 01:17
angel_p_57

総合スコア1672

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

advanceboy

2021/04/03 07:31

ご回答いただきありがとうございました! > SSL/TLS証明書とは無関係なので やはり、そうでしたか。 モヤっていたのですっきりしました。 > /MIME(メール保護)用も兼ねる証明書が発行されるケース なるほど、そのようなケースがあったのですね。 Web サーバーで https を配信する手順の例として、 nonRepudiation を指定しているのを見かけるのですが、これは S/MIME と兼ねて使うことを意図しているとは思えませんし、 昔に有名なサイトとかで使用された例が、独り歩きしているだけかもしれませんね… SSL/TLS での鍵の用法についての説明もありがとうございます! > keyencipherment ( 秘密情報の暗号化 ) は、今はもう使わない用途なので無くても良いはずですが、chromeはこの用途も無いと弾く挙動になっていることを少し前に確認しています。( RSA鍵の場合 ) TLS 1.2 にて鍵交換が RSA となった場合は、 サーバー証明書の公開鍵で暗号化されるため、 keyEncipherment の指定が必要なのかな思っていました。 (つまり、 鍵交換 に RSA が使えない TLS 1.3 だけになれば不要?) ここら辺はもう少し勉強してみます。
advanceboy

2021/04/04 16:11

> ※訂正と補足 > [..] > それどころか、digitalsignatureのみの証明書でもRSAでの暗号化を利用した鍵交換すら可能でした。もはやkeyusageの意味は一体…? という感じがしています。 > 追加のご回答ありがとうございます! それどころか、 Chrome も IE も、 keyusage が critical 指定のみで、digitalsignature すら存在しない空っぽのものでもエラーが出ませんね。。。 拡張キー使用方法に "サーバー認証 (1.3.6.1.5.5.7.3.1)" が含まれている影響…? とも思ったのですが、こちらも消しても余裕で通りました。 Firefox のほうは、 keyusage を削除した時点で、 SEC_ERROR_INADEQUATE_KEY_USAGE のエラーが出ましたが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問