質問: ### 前提 WEB APIシステムにおいて、不正アクセスを防止するために、 SSLとクライアント証明書を使ってシステムを作ろうと考えています。 それをするのに必要な証明書関連の設定は、以下の手順で行うものだと認識しています。 サーバー 自己証明書を作成・インストール クライアント証明書を作成・クライアントに配布 クライアント クライアント証明書を受け取る。・・・1 パスワードを受け取る。・・・2 クライアント証明書をパスワードを指定してインストール。 ### 知りたいこと そして、上記手順内の 1クライアント証明書の受け取り 2パスワードの受け取り を具体的にどのようにするのが一般的なのか、そして安全なのかを知りたいのです。 また、クライアント証明書の具体的な管理についても知りたいです。 実装するコンピューターは、サーバーもクライアントもWindowsです。 ご教授の程、よろしくお願い致します。 ### 補足 取引関係のある特定のユーザがこのWEB APIにアクセスすることを想定しています。 このため、サーバーが悪意を持った人によって作られたことを心配する必要がないと考え、自己サーバー証明書でも問題ないと考えています。 ### 回答者様からのご指導を受けた結果のまとめ <結論> SSLクライアント証明書の配布は、正式な認証局に任せた方が良い。 サーバー証明書もクライアント証明書もどちらも正式な認証局による発行が必須である。 SSLの暗号通信機能だけでも利用したいなら、クライアント証明書を利用せず自己証明書だけを利用する。 <理由> SSLクライアント証明書を配布するには厳しい審査が必要。その作業を自前で行うのは無理がある。 ### 環境 Microsoft Windows 10 Pro (Version 1903) Microsoft Visual Studio Community 2019 Microsoft .NET Framework 4.7.2
回答: > > 自己証明書を作成・インストール > > クライアント証明書を作成・クライアントに配布 > > > このような設定(クライアント証明書のルートを自己証明書からにする)で行うのであれば、クライアント証明書は**有害無益**といって間違いありません。 ルート証明書につながるような、まっとうなクライアント証明書を出すには、認証局の力が必要不可欠ですので、認証局と詳細を詰めた上でやっていくほうがいいでしょう。