🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
HTTPS

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

SSL

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

Q&A

解決済

3回答

7085閲覧

SSLクライアント証明書はどうやって配布すべきでしょうか?

firstlast

総合スコア138

HTTPS

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

SSL

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

0グッド

1クリップ

投稿2019/12/17 03:30

編集2019/12/18 16:36

前提

WEB APIシステムにおいて、不正アクセスを防止するために、
SSLとクライアント証明書を使ってシステムを作ろうと考えています。

それをするのに必要な証明書関連の設定は、以下の手順で行うものだと認識しています。

サーバー
自己証明書を作成・インストール
クライアント証明書を作成・クライアントに配布

クライアント
クライアント証明書を受け取る。・・・①
パスワードを受け取る。・・・②
クライアント証明書をパスワードを指定してインストール。

知りたいこと

そして、上記手順内の
①クライアント証明書の受け取り
②パスワードの受け取り
を具体的にどのようにするのが一般的なのか、そして安全なのかを知りたいのです。
また、クライアント証明書の具体的な管理についても知りたいです。

実装するコンピューターは、サーバーもクライアントもWindowsです。

ご教授の程、よろしくお願い致します。

補足

取引関係のある特定のユーザがこのWEB APIにアクセスすることを想定しています。
このため、サーバーが悪意を持った人によって作られたことを心配する必要がないと考え、自己サーバー証明書でも問題ないと考えています。

回答者様からのご指導を受けた結果のまとめ

<結論>
SSLクライアント証明書の配布は、正式な認証局に任せた方が良い。
サーバー証明書もクライアント証明書もどちらも正式な認証局による発行が必須である。
SSLの暗号通信機能だけでも利用したいなら、クライアント証明書を利用せず自己証明書だけを利用する。

<理由>
SSLクライアント証明書を配布するには厳しい審査が必要。その作業を自前で行うのは無理がある。

環境

Microsoft Windows 10 Pro (Version 1903)
Microsoft Visual Studio Community 2019
Microsoft .NET Framework 4.7.2

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

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

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

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

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

t_obara

2019/12/17 04:05

うーん、クライアントから見て、その配布された証明書が本当に安全なものなのか、本物なのか偽物なのかはどう判断すれば良いとお考えですか?
firstlast

2019/12/17 05:42

不特定多数のユーザではなく、取引関係のある特定のユーザがWEB APIにアクセスすることを想定していまして、サーバー証明書は自己証明書でも問題ないのかなと思っています。
t_obara

2019/12/17 08:11

それだと、オレオレレギュレーションになるので、大丈夫という基準をご提示いただかないと、判断ができなくなります。メールで送ってダブルクリックしてねでも良いの?って言われると、うーんてなりませんか?
firstlast

2019/12/18 01:16

グローバルサイン社のようなルート認証局が発行するルート証明書も、ある意味、自己証明書ですが、俗に言うオレオレ証明書との違いは、利用する人が信頼するかしないかだけの違いだと思います。このケースでは、信頼しているので問題ないのではないでしょうか?
guest

回答3

0

ベストアンサー

自己証明書を作成・インストール

クライアント証明書を作成・クライアントに配布

このような設定(クライアント証明書のルートを自己証明書からにする)で行うのであれば、クライアント証明書は有害無益といって間違いありません。

ルート証明書につながるような、まっとうなクライアント証明書を出すには、認証局の力が必要不可欠ですので、認証局と詳細を詰めた上でやっていくほうがいいでしょう。

投稿2019/12/17 04:13

maisumakun

総合スコア145973

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

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

maisumakun

2019/12/17 04:29 編集

試験的な用途やローカルのみの場合を除けば、SSL/TLS関係で有名なルート証明書につながらないような証明書を運用するのは適切ではありません。 (本題ではありませんが、Web APIに対してクライアント証明書までかけることは、そうそう行われるものではありません)
maisumakun

2019/12/17 06:02

> 不特定多数のユーザではなく、取引関係のある特定のユーザがWEB APIにアクセスすることを想定していまして、サーバー証明書は自己証明書でも問題ないのかなと思っています。 その特定のユーザーに、クライアント証明書はともかく、「ルート証明書の追加」まで強いる(≒その気になれば、相手のSSL通信の改ざんも可能になってしまう)というのも、少々無理のある話です。 クライアント証明書を使うぐらいにセキュリティに気を払うのであれば、それに自己署名証明書を使うのはアンバランスです。
firstlast

2019/12/17 06:04

<自己証明書について>  不特定多数のユーザではなく、取引関係のある特定のユーザがWEB APIにアクセスすることを想定していまして、この場合、自己証明書でも問題ないのかと思っていますが、問題ありますか? <Web APIにクライアント証明書をかけることについて>  確かにネットで検索しても、同様のシステムでクライアント証明書を使っているケースを見つけることが出来ませんでした。唯一、類似していると思ったのがマイクロソフト社のAzure VPNサービスの事例でした。Azure VPNが内部的にSSL通信を使用していて、クラアイント証明書をインストールする必要があるようです。取引関係のある特定のユーザ以外がURLを知り得た場合に不正アクセスの恐れがあるのでクライアント証明書を使えば解決できるのではと考えた次第です。
maisumakun

2019/12/18 07:49

> 取引関係のある特定のユーザ以外がURLを知り得た場合に不正アクセスの恐れがあるのでクライアント証明書を使えば解決できるのではと考えた次第です。 他の方法での認証でも解決できます。クライアント証明書でなければならない理由はありますでしょうか。
firstlast

2019/12/18 07:51

縛りはないです。教えて頂けますか?
firstlast

2019/12/18 13:31 編集

要件を挙げますね ・インターネットを経由して通信を行う。 ・特定ユーザだけが利用するシステムである。 ・特定のコンピュータand/or利用者だけが利用できる。 ・漏洩事件発生時にアクセスができないようにできる。 ・あらかじめ有効期間を設定できる。 ・Windows10で動作するシステムである。 ・IISまたはWCFを使ったシステムである。 ・極端にレスポンスが遅くない。 こんな感じです。
firstlast

2019/12/18 14:37 編集

手間を惜しまなければ、自分でシステムに実装すればいいだけのような気がしてきました。
firstlast

2019/12/18 16:18

結論:お二方のおっしゃる通り、正式な認証局は必要だという結論で納得するに至りました。t_obaraさんがおっしゃる通りSSLはクライアント証明書を発行する際にも厳しい審査が課されると推察します。その役割を自らが行うのは無理がありますね。 ご教授ありがとうございました。
guest

0

本題が証明書の配布や受け取りって事と補足に書かれている事を踏まえて、、、

クライアント証明書の配布については、数が少ないなら
・個別にメール(証明書とパスワードをまとめて、または別々に)
・キッティング作業に合わせてインポート
・端末を情シスが受け取り作業
と、マンパワーでカバーしている所が多い感じでした。
証明書はファイルで渡しちゃうと簡単にコピーされますので、
メールで送るとかは今のご時世だとNGだと思いますが。。
その点、誰かが頑張るパターンはファイルも渡さず、取り出しもできないように
できるので安全だと思います。(スマートでは無いですが)

ただ、懸念されているよう証明書の管理/運用が大変だと思いますし
数が多いと手間が大きいので、アプライアンス製品も検討されては如何でしょうか。
配布の仕組みや管理なんかも考えて作られているようなので、
既製品で属人化しないようにしても良いかもしれません。


Gléas
https://www.gleas.jp/

Account@Adapter+
https://www.hcnet.co.jp/solution/secure/syoumeisyo.html

RADIUS GUARD
https://www.scsk.jp/news/2014/press/product/20140212.html


WEB APIを証明書なら社内環境はもうセキュアなんでしょうけど
RADIUSも動作するのもあるので、社内の無線環境で認証に使いながら
証明書配布にも利用って事も可能だと思います。

投稿2019/12/18 16:48

nakagoshi999

総合スコア15

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

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

firstlast

2019/12/19 04:02

回答ありがとうございます。 正式な認証機関がやっているのと同等の管理を行なうという条件付きならば、サーバー証明書の作成からクライアント証明書の配布・インストールまですべて自前で行っても全然問題ないのだと思います。 クライアント証明書の配布を自前で行なっているマイクロソフトのAzure VPNサービスの事例は、インターネット経由での接続になると思うのですが、問題あるような気がします。(ちゃんと管理できるのか疑わしい。) https://docs.microsoft.com/ja-jp/azure/vpn-gateway/vpn-gateway-certificates-point-to-site
guest

0

グローバルサイン社のようなルート認証局が発行するルート証明書も、ある意味、自己証明書ですが、俗に言うオレオレ証明書との違いは、利用する人が信頼するかしないかだけの違いだと思います。このケースでは、信頼しているので問題ないのではないでしょうか?

認証局は一般公開するかは別として厳密な運用手順に従って管理されています。(参考:https://www.nii.ac.jp/hrd/ja/joho-karuizawa/h20/txt5.pdf)
ですので、安全基準を明確にして、その基準はどのように運用すると守られるのかを規定するわけです。もちろんうまくいかない場合もありますが、それも含めPDCAを回すところも規定されるわけです。

とはいえ、

WEB APIにアクセス

ということでユーザーのブラウザアクセスではないとするならば、オレオレにするより、普通に無償のサーバ証明書を利用するのが良いのではと思います。

投稿2019/12/18 05:31

t_obara

総合スコア5488

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

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

firstlast

2019/12/18 07:29

ありがとうございます。 教えて頂いたURLは、認証局の運営という観点からの資料だと思います。 認証局の役割として、不特定多数の利用者に対してそのサイトの安全性を保障することが挙げられると思います。今回のケースではその必要がないことから公の認証局が必要ないのではないかと思っているのです。
maisumakun

2019/12/18 07:35

> 今回のケースではその必要がないことから公の認証局が必要ないのではないかと思っているのです。 相手方にどう思われてもいいのであれば、好きにどうぞ。 オレオレ証明書を入れさせるような相手は、自分であればたとえ有名ベンダーであっても不信感を抱きます(Superfish事件なんてのもありましたし)。
firstlast

2019/12/18 07:43

ありがとうございます。 自己証明書の件については、アドバイスを参考にして、もう少し検討してみます。 クライアント証明書の運用手順について詳しく書かれたガイドライン等はどこかで見かけたことはありませんか?
firstlast

2019/12/18 07:47

配布方法、クライアント証明書ファイルの扱い、パスワードの配布方法、有効期限の管理方法、失効リストへの登録、漏洩事件発生時等の緊急措置などです。
maisumakun

2019/12/18 07:53 編集

> クライアント証明書の運用手順について詳しく書かれたガイドライン等はどこかで見かけたことはありませんか? 自分の回答の通りで、オレオレでない証明書を使うには認証局との連携が必須ですので、認証局と相談の上やっていきましょう。 …というより、クライアント証明書を必要とするセキュリティ強度のアプリケーションを作りたいのであれば、セキュリティ専門のコンサルなど、相応のリソースを割く必要があると考えます。セキュリティは「いちばん弱い箇所」が全体のセキュリティ強度になりますので、他の部分がそれに見合ったセキュリティ強度になっていなければコスト増になるだけで、全体のセキュリティ強化には資さないことになります。
firstlast

2019/12/18 07:55

ありがとうございます。 アドバイスを参考にもう少し検討してみます。
t_obara

2019/12/18 11:19

maisumakunさま>フォローありがとうございます。 わたしもそう思います。そしてクライアント証明書部分が一番弱い箇所になると認識しています。 そういう意味で、先の無償サーバ証明書という回答です。
firstlast

2019/12/18 16:19

t_obaraさん、ありがとうございました。正式な認証局が必要だと納得しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問