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

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

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

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

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

1回答

986閲覧

1台のサーバーで同じドメイン名のサイトごとにクライアント証明書を発行しクライアント認証にしたい

rackuer65

総合スコア5

SSL

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

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2020/03/16 05:55

編集2020/04/01 23:18

はじめまして。
WEBサーバー初心者です。
社内で公開している複数のサイトを以下の条件でクライアント認証にしたいのですが、
どのように実装すればよいのか、そもそも実現可能かどうかも分からず困っています。

前提

■1台のサーバーにサブディレクトリで複数のサイトを公開しています。

 例)
サイトA:https://xxx.jp/aaa/index.html
サイトB:https://xxx.jp/bbb/index.html

■自己認証局でサーバー証明書を作成し、それを基にクライアント証明書を作成。
(クライアント証明書のCommon Nameは全て「xxx.jp」)
※本番ではサーバー証明書を購入予定です。

環境・ソフト等

Windows Server2012 + Tomcat + OpenSSL

実現したいこと

1台のサーバー内のドメイン名が同じ複数のサイトに対し、
以下の様にサイトごとにクライアント証明書を発行し、クライアント認証にする。

サイトA:クライアント証明書Aがインストールされたクライアントのみアクセス可
サイトB:クライアント証明書Bがインストールされたクライアントのみアクセス可

試してみたこと

①1つのサイトに対しクライアント認証の実装はできました。
②2つのサイトに対し以下を試してみましたが、実現できませんでした。
・サイト数分Tomcatをインスタンス化し、サイトごとにポート、クライアント証明書を割り振る。
→1つのクライアント証明書で全てのサイトがアクセスできてしまう。

・サーバー証明書をサイト数分作成し、それを基にサイトごとにクライアント証明書を作成。
→1つのクライアント証明書で全てのサイトがアクセスできてしまう。

 ・クライアント証明書のCommon Nameをサイトごとに任意のCommon Nameを設定
→アクセスできない、または証明書エラー

自分なりに調べてみて、クライアント証明書作成の際に設定するCommon Nameにはドメイン名を設定しているため、ドメインが同じサイトの場合、どのサイトにアクセスしようとしているのかまでは判断できないのではないか、そのため、「実現したいこと」は実現できないのではないかと思えてきました。

教えて頂きたいこと

①そもそも1台のサーバーで同じドメイン名の複数サイトに対し、「実現したいこと」は実装可能なのでしょうか?
②もし可能な場合、実現方法をお教え頂けないでしょうか?
③「実現したいこと」が実現できない場合、それぞれのサイトをクライアント認証とする場合はどのようにすることが必要でしょうか?
(サイトごとにサーバーを分ける、サイトごとにドメインを変える等)

勉強中であるため認識違いがあるかもしれませんが、よろしくお願いします。

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

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

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

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

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

over

2020/04/02 00:10

サイトAとサイトBと分割しているように記載されていますが、IIS上ではどのように分割されているのでしょうか?証明書はIIS管理ツール左ペインにある「サイト」以下に作成したサイト毎に割り当てることができるので、そのように分割すれば可能では?と思っています(未検証ですが・・・)。 ただし、サイト毎に接続ポートは変更する必要がありますが。
rackuer65

2020/04/05 05:22

返事が遅くなり申し訳ありません。 > 証明書はIIS管理ツール左ペインにある「サイト」以下に作成したサイト毎に割り当てることができるの で、そのように分割すれば可能では? ありがとうございます。 なるほど。 なにぶん初心者なので、環境設定した担当者に確認してみます。
guest

回答1

0

自己解決

以下の方法で解決出来ました。

1.ApacheとTomcatを連携する。
2.クライアント証明書を作成する。その際に入力する”OU”(Organizational Unit Name)は一意とする。
3.Apacheの"http.conf"ファイルを開き以下の設定を行う。

SSLEngine on SSLProtocol -all +TLSv1.2 SSLCertificateFile C:/Apache24/conf/ssl/[サーバー証明書] SSLCertificateKeyFile C:/Apache24/conf/ssl/[サーバー秘密鍵(パスワード無)] SSLCACertificateFile C:/Apache24/conf/ssl/[CA証明書] <Location /[WEBサイトのフォルダ]/ > ProxyPass ajp://localhost:8009/[WEBサイトのフォルダ]/ SSLVerifyClient require SSLRequire ( %{SSL_CLIENT_S_DN_OU} eq "[クライアント証明書のOU]" ) </Location>

投稿2021/12/02 10:52

rackuer65

総合スコア5

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問