Apelog

Open DNS

先週末、家に引いているインターネット回線のプロバイダーのDNSが不調で頻繁に名前解決に失敗する状態になった。

代替策を調べていたところ、無料で使える高速なDNSサーバー「OpenDNS」がDNSキャッシュ汚染の脆弱性にも対応しているということで使用してみる事に。と、言ってもルーターのプライマリDNSを「208.67.222.222」、セカンダリDNSを「208.67.220.220」にするだけで完了。ネットワーク直繋ぎの場合はそのマシンのDNS設定を変更します。

DNSキャッシュ汚染の脆弱性テストはWeb-based DNS Randomness Testで確認できます。

同時に調べた事としてMac LeopardでのDNSキャッシュの削除は以下コマンド。

$ dscacheutil -flushcache

「こういうものがあった」ということを覚えておけばイザという時に役にたつかもしれません。

参考サイト

ApacheでSSL(mod_ssl)を使用する場合の一連の流れ。

署名入り証明書の取得(購入)から設定までの一連の流れのまとめです。

自己署名証明書での解説ページが多いので、初めて証明書を購入してSSLの導入をする場合を想定して書いています。

サーバー環境はCentOS 5.1。環境が変わっても一連の流れと作業はほぼ同じです。

SSLで暗号化された通信の簡単な説明

  1. サイトにアクセスするとサーバーから証明書と鍵(A)を受信
  2. 証明書が安全な場合、鍵(A)を利用して通信データを暗号化
  3. 暗号化したデータをサーバーに送信
  4. サーバーは鍵(A)に対応した鍵(B)でデータを復元

上記の「証明書が安全な場合」の安全かどうかはどうやって判別すればいいのか?

証明書の安全を保証する為に認証局と呼ばれる第3者によって証明書に署名を付けてもらいます。その署名が無いものは安全性が確認出来ない為、オレオレ証明書などと呼ばれています。

署名付き証明書を手に入れるには

署名付き証明書を取得する為に証明書署名リクエスト(CSR: Certificate Signing Request)と呼ばれるものが必要になります。CSRには証明書の保有者の情報(名前・有効期限・FQDNなど)が含まれており、それを認証局に送り保有者情報の確認がおこなわれた後に署名付き証明書が手に入ります。

CSRの作成

CSRはOpenSSLのコマンドによる作成が一般的です(一部Webインターフェイスを提供しているところもあります)。

ここではコマンドラインによる作成を以下に挙げます。

# cd /etc/pki/tls/certs/
# openssl req -new -nodes -keyout myserver.key -out server.csr

上記コマンドを実行するとCSR作成の為に必要な情報の入力待ち状態になるので、情報を入力します。特別な理由が無ければWhoisの情報と同じものを入れた方がいいです。違う場合、署名してもらえない場合や人力確認で時間が掛かる事が多いです。()内はコメントです。

Generating a 1024 bit RSA private key
.++++++
......++++++
writing new private key to 'myserver.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:JP(国)
State or Province Name (full name) [Berkshire]:Tokyo(都道府県)
Locality Name (eg, city) [Newbury]:Shinjuku(市区町村)
Organization Name (eg, company) [My Company Ltd]:apecell(組織名)
Organizational Unit Name (eg, section) []:IT(部署名・グループ名)
Common Name (eg, your name or your server's hostname) []:apecell.com(サーバーホスト名)
Email Address []:info@apecell.com(管理メールアドレス) ※1

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:(パスワード) ※1 ※2
An optional company name []:(組織名略称) ※1

※1 – 認証局によって空白指定がされているので、申請する認証局のサイトなどで要確認。
※2 – 入力するとApache起動時にパスワードが必要。SSLを失効させたりする場合などにも使用。

上記のコマンドを実行するとCSR(server.csr)と秘密鍵(myserver.key)の2種類のファイルが作成されます。

署名付き証明書の取得

認証局のサイトで申込を行い証明書を発行してもらいます。

基本的に1ホスト名1証明書ですが用途によりサブドメイン全てをカバーしたワイルドカード証明書など、各社のサービスと値段は様々です。

特に携帯と負荷分散環境でのSSLについて詳しくは以下のサイトが参考になります。
携帯対応、負荷分散環境で最適な、SSL証明書選び:Goodpic

発行までの手順も各社に違いがあり、郵送で書面記入が必要なものからWhoisに登録されているメールアドレスに確認メールが送信されるだけというものまであり、発行まで即日〜2週間程度になります。

Apacheの設定

証明書を取得したら /etc/pki/tls/certs/server.crt に保存しておきます。

# yum -y install mod_ssl
# vi /etc/httpd/conf.d/ssl.conf

Edit >>
SSLCertificateFile /etc/pki/tls/certs/server.crt (証明書指定)
SSLCertificateKeyFile /etc/pki/tls/certs/server.key (秘密鍵指定)
<< Edit

# /etc/rc.d/init.d/httpd restart

以上が一般的に言われる「SSLを買って設定する」になります。

「発見力」養成講座

最近読んだ本で良かったものを紹介。初めてアソシエイトリンクを張ってみたのでAmazonの方のレビューも参考にしてみてください。

ビジネスマンのための「発見力」養成講座

セブンイレブンのロゴは最後の文字だけ小文字になっているって知ってました?
参考画像

いつも目に入っていているのに気付かない、それを発見する力「発見力」について具体例を交えて分かりやすく書いています。ビジネスマン以外に、こどももおとなもおねーさんにも読んでもらいたい。

この本の素晴らしい所は非常に分かりやすい具体例。新幹線の乗車券と特急券を重ねて改札に通すとどちらが上になって出てくるか?といった話から入り、何故それに気付いたのか、そしてそれに気付くにはどうすればよいかが過不足なく書かれています。

同じものを見ても気付く人と気付かない人がいる、という話では社長と社員を例に挙げて説明していてこれも分かりやすい。

発見力自体は誰にでも即実戦可能な事で、この本を読んだ後にはきっと「意識する事を意識している」様になってます。

継続は力だという事を頭に叩き込みながら開発に関するもの以外にも、読んだ本や音楽(CD)なども交えてやっていくということで。

携帯のUIであった話

とある携帯サイトの入力フォームは以下のようになっていた。

【入力1】→【入力2】→【入力3】→【確認】→【完了】

特におかしい様には思わないがアクセス解析を見ると確認から完了へのコンバージョン率が低い。

確認画面まで行っておいて完了しないのはおかしい、という事で再度見直してみると「もしかして確認ページなのに完了ページだと思っているのではないか?」という話が挙がり、試しに確認ページの上部にも完了ページへのボタンを設置したところコンバージョン率が上がったという話。

確かに確認ページまでの遷移が長く確認ページの上部には「この内容で良ければ完了してください」と書いてあるものの目立っていないので逆に紛らわしくなっていた。

PCサイトでもたまに見かけるが携帯サイトの方が表示領域が少ない分、利用者への通知には気をつけた方がいい。

このケースは最終的にページ上部にまだ完了していない旨を目立つように表記した。

Web開発では複数ユーザーでディレクトリを共有管理したいケースが良くある、そういった場合の設定方法。

/var/www/htmlfoo, bar, apacheの3ユーザーで管理するとする、設定環境はCentOS5。

設定方法

管理用グループ(webadmin)を作成

# /usr/sbin/groupadd webadmin

管理用グループ(webadmin)に3ユーザー追加。追加時に他のグループにも所属させる場合は同時に指定する事。特にwheelユーザーからしかrootになれない状態で間違ってwheelから外してしまうと悲惨な事に。

# /usr/sbin/usermod -G webadmin foo
# /usr/sbin/usermod -G webadmin bar
# /usr/sbin/usermod -G webadmin,apache apache

対象ディレクトリをwebadminが操作できるようにグループを指定し書き込み権限を与える。

# chgrp webadmin /var/www/html
# chmod g+w /var/www/html

このままだとファイルを生成した際に所有権がそれぞれのユーザーになってしまうので、グループ権限でファイルを作成するようにする。

# chmod g+s /var/www/html

以上でグループで管理出来る環境になる。

複数設定する場合はfindでディレクトリだけ検索した結果に対して変更すると楽。

find . -type d -print | xargs chmod g+w