インターネットなこと: 2016年4月アーカイブ

ひとつのホスト内で、ディレクトリ毎に別のクライアント証明書でアクセス制限をする話。

例えば、https://www.exsample.jp/users1/ は、HOGE1 というクライアント証明書を PC にインポートしている人だけ、https://www.exsample.jp/users2/ は HOGE2 というクライアント証明書を PC にインポートしている人だけがアクセス可能とする。

手順としては、プライベート CA 認証局はそのまま使用し、クライアント証明書の作成のみを追加で行う。

今回は、Common Name のみを変更(HOGE1→HOGE2)したクライアント証明書を追加で作成した。

今更だが手順は、

  1. クライアント証明書の作成(この時、以前作ったのとは別の Common Name にする)
  2. クライアント証明書にプライベート CA 認証局の署名を入れる
  3. 署名を入れたクライアント証明書と秘密鍵を元に PKCS#12 フォーマットのファイルを作成(クライアントに配布するクライアント証明書)
  4. クライアント証明書から-----BEGIN CERTIFICATE-----~-----END CERTIFICATE-----を抜き出し別途保存(例:HOGE2.pem)

という感じ。

証明書を作成したら、ssl.conf の編集。認証を行うディレクトリそれぞれのディレクティブを記述。

<Directory "/var/www/html/users1">
    SSLRequireSSL
    SSLVerifyClient require
    SSLVerifyDepth  1
    SSLRequire %{SSL_CLIENT_CERT} eq file("/etc/pki/CA/client/certs/HOGE1.pem")
</Directory>

<Directory "/var/www/html/users2">
    SSLRequireSSL
    SSLVerifyClient require
    SSLVerifyDepth  1
    SSLRequire %{SSL_CLIENT_CERT} eq file("/etc/pki/CA/client/certs/HOGE2.pem")
</Directory>

こんな感じ。

クライアント(PC)から送られてくる証明書の内容と、-----BEGIN CERTIFICATE-----~-----END CERTIFICATE-----の部分を抜き出して保存している pem ファイルの内容を完全一致でチェックし、合っていなければアクセスを許さない。
つまり、各ディレクトリ毎に合ったクライアント証明書でアクセスしなければエラーとなる。
Organization Name と Common Name の両方が証明書と一致しているか等、チェック方法は他にもあるが、相当サーバのマシンスペックに問題がある場合でなければ、証明書の内容全体で確認する上記の方法が確実でいいんじゃないかと思う。

問題は「両方のディレクトリにアクセスしたい」人。
例えば、自 PC に HOGE1 と HOGE2 の二つのクライアント証明書をインポートしておき、 https://www.exsample.jp/users1/ にアクセスする時は HOGE1 の証明書を使い、users2 にアクセスする時は HOGE2 を使い・・・という具合にユーザの意志で証明書を切り替えることができないようだ。

う~ん。

なので、最初に HOGE2 で users2 にアクセスした人は、users1 にアクセスした時も HOGE2 の証明書が使われてしまいエラーになってしまう。

これ、何か良い方法あるのかね?
CA 局も作り直せば、どの証明書を使うか改めて聞いてくるとかあるんかな?
やっぱ、両方にアクセスできるクライアント証明書を別途発行するしかないのかね?

ちなみに、Chrome と Firefox で確認しました。
Apache におけるクライアント認証の話。

/etc/httpd/conf.d/ssl.conf 内に下記記述を追加することで(多分ディフォルトでコメントになっているはずなので、コメントマークを外してやる)、クライアント認証が可能になる。

SSLVerifyClient require
SSLVerifyDepth  10

・・・が、これだと、サイト全体にクライアント認証がかかってしまう。

証明書を持っていないユーザがアクセスすると、(Google Chrome の場合)「このサイトは安全に接続できません www.exsample.jp から無効な応答が送信されました。 ERR_SSL_PROTOCOL ERROR」というエラー画面が出て、どのコンテンツにもアクセスできない。

ある特定のディレクトリだけを会員サイトのような扱いで「クライアント証明が必要」とするには、この設定を再度コメントに戻す。

#SSLVerifyClient require
#SSLVerifyDepth  10

これで、誰でも(自己認証局の場合「この接続ではプライバシーが保護されません」という脅し文句が表示されるけど(^^; ) https サイトを見ることができるようになる。

そして、ディレクトリー単位で制限をかけたい場合は、<Directory> ディレクティブに設定を行う。

たとえば、https://www.exsample.jp/crt_test1/ のみクライアント認証を行いたい場合は、ssl.conf 内に

<Directory "/var/www/html/crt_test1">

    SSLRequireSSL
    SSLVerifyClient require
    SSLVerifyDepth  10

</Directory>

のようなディレクティブを追加する。

これで、

https://www.exsample.jp/crt_test1/

にはアクセスできるが、

https://www.exsample.jp/crt_test1/

では、上に書いたように「無効な応答が送信されました」のエラーとなる。
他のエントリーにも書いたが、今週から愛俺弁当の弁当箱が変わった。

一見、古臭いアルミの弁当箱に見えるだろうが、実はこれ、スウェーデンの trangia(トランギア)というキャンプ用品メーカーの TR-210 という「取手付きアルミ製飯ごう(メスティン)」である。

ああ、俺の大好きな俺にはやっぱり北欧の製品がよく似合う。
俺って、色が白くて顔の彫りも深いから北欧の人みたい。真っ白い陶磁のような肌が素敵!

え?俺は色黒なモンゴリアンって?どうしても、愛する人のことは美しく見えてしまうもんなんだよ。それが恋。俺は俺に恋してる。くすくすくす・・・

というわけで。

4/18(月)の愛俺弁当。

20160418_oreben.jpg

いっぱいおかずを作らないといけない、その手間を省きたくて「弁当箱をひとつに」したのに、ごちゃごちゃ作る癖が抜けず、なんかご飯の上に山盛りに。
レタスとカニカマとかいわれ大根のサラダ。ウインナー、チキンハンバーグ(半分)、ハム、卵焼き。卵焼きは嫁さん提供。愛妻弁当率 11%。

4/19(火)の愛俺弁当。

20160419_oreben.jpg

赤いウインナー、魚肉ソーセージ(ハム)、ハム。レタスの上に載っているのは、炒めた豚バラ肉を焼き肉のタレのようなソースで和えたもの。まあ、焼き肉だと思ってもらって間違いない。
ビールのツマミに「豚キムチ」を作ろうかと思ってキムチと豚バラ買ってきたんだけど、先にキムチだけ食べ尽くしてしまったため余っていた豚バラを嫁さんが炒めてくれたもの。
ただ、豚バラ自体は「俺が自腹で買ったもの」なので、愛妻弁当率は量のわりに 7%くらいや(笑)

4/21(木)の愛俺弁当。

20160421_oreben.jpg

まるでブラジルの旗のように目玉焼きが鎮座する。オリンピックを祝って作ってみました。ええ、もちろん嘘です(笑)
レタスとかいわれ大根の野菜の上にチョリソー。それとチーズちくわ。
チーズちくわは嫁さんからの提供。ま、ちくわ 1/2本程度なので、愛妻弁当率は 3%・・・と言いたいところだが、今回はご飯が炊き込みご飯で、嫁さんからの提供なので、愛妻弁当率 47%くらいか。

4/22(金)の愛俺弁当。

20160422_oreben.jpg

いやあ、なかなかシンプルな弁当の域には達せないねえ。
ご飯の上に、所狭しと並ぶおかず。唐揚げは、前の晩にビールのツマミにと思って買ってきたんだけど食べなかったやつ。チキンハンバーグ 1/2個、エビシュウマイ、そして卵焼きは嫁さん提供。愛妻弁当率 11%。

しかし、結局最後まで「ひとつの弁当箱」なおかずの配置の域には達せなかったな(^^;
どうしても、俺は俺のことが好きで好きで好きすぎるんで、色々な種類のおかずを載っけてしまいたくなるんだよね。

もっとシンプルに!・・・これが目標(笑)

このアーカイブについて

このページには、2016年4月以降に書かれたブログ記事のうちインターネットなことカテゴリに属しているものが含まれています。

前のアーカイブはインターネットなこと: 2016年2月です。

次のアーカイブはインターネットなこと: 2016年6月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら