2015年5月26日火曜日

SSLの設定確認


今日口座の残高確認しようと思ってみずほ銀行のサイトにアクセスしたらあいかわらずトップページでhttpsが使えない状態だった。Googleで「みずほ銀行」を検索しても公式トップじゃなくて宝くじコーナーが検索トップにきてるし。どうなっているのやら。

それはさておき、自分のhttpsサイトの設定は大丈夫かと気になった。もちろんブラウザで接続して閲覧できることは確認してるけど、設定がちゃんとしているかどうかはわからない。
  
SSL の設定は Qualys SSL Labs の SSL Server Test  でチェックしてくれる。

チェックの結果見つかった減点項目は、SSLv3、RC4 が有効になってるのと、中間証明書がインストールされていないこと。

Apache の SSL 設定は Mozilla SSL Configuration Generator でおすすめを出してくれる。

ssl.conf を編集すればよいのかと思ったが、SSLCipherSuite などは <VirtualHost _default_:443> のブロックでなくて SNI で指定している <VirtualHost *:443> ブロックの中に書かないと有効にならなかった。このあたりの設定の有効範囲があまり理解できてない。

RC4 が有効になってないかどうか確認するには openssl を使って確認できる。

$ echo Q | openssl s_client -connect localhost:443 -servername www.example.org -cipher RC4

これで接続できれば RC4 が有効になっている(設定に失敗している)ってことだ。

という感じで設定して A 判定取得

2015年5月18日月曜日

CentOS で Apache の更新はどうしたら

CentOS6 に入ってる Apache のバージョンは 2.2.15。ちなみに2.2系の現時点の最新版は2.2.29 だ。

標準の yum のリポジトリが古いのにはもう慣れた。そうだな、最新もしくはそれに近いバージョンの rpm が入ってるリポジトリをインストールすればいいんだろ。ってなわけでググってみると http://centos.alt.ru/repository/centos/6/$basearch/ というのが見つかった。

ru...

いや、まあ、ドメインがロシアだからどうってわけではないけど(あるけど)、みんなこれ入れてるの? リポジトリの信頼性とか安全性とかみんなどう確認してんだろ。

しかも Firefox で http://centos.alt.ru/ にアクセスすると
この Web ページ (centos.alt.ru) は攻撃サイトであると報告されており、セキュリティ設定に従いブロックされました。
って出るし(google の診断らしい)。

ちょっと使えなさすぎじゃないですかね。

Apache の名前ベースバーチャルホストによる SSL (SNI)

かつて SSL は名前ベースのバーチャルホストでは運用できないとされていたが、今はそのための規格やサーバ、対応クライアントの普及もあって、まあ使える。

もちろん対応していないクライアントもまだまだ残っていて、商用では「使えない」とされるのかもしれないけれど、それは置いておこう。

その規格は SSL/TLS の拡張仕様で SNI (Server Name Indication) と呼ぶらしい。 Apache 2.2 系などで使えて、"NameVirtualHost *:443" とすると有効になる。

あとは "<VirtualHost *:443>" ~ "</VirtualHost>" の間にディレクティブを記述すればよい。通常の名前ベースのバーチャルホストと同様だ。

ただ、HTTP でリクエストされたホスト名がバーチャルホスト定義のどこにもマッチしないときは、先頭のバーチャルホスト定義がデフォルトとして使われる、かと思ったがどうも違うようだ。

ホストがマッチしない時は元から入っている "<VirtualHost _default_:443>" の定義が使われているようであるし、DocumentRoot はグローバルに記述したところが有効になっているようだ。

:80 の場合と設定が有効になるルールが異なっているような気がするのだが、どうなんだろう。

2015年5月13日水曜日

Windows の Emacs で tramp

Emacs には tramp というものが入っている。

これがどういうものかというと、リモートマシンのファイルをあたかもローカルにあるかのように取り扱えるという便利なものだ。

昔はサードパーティーの elisp パッケージだったのが、いつからか標準で Emacs に含まれるようになっている。

バックエンドとして ssh を使っていて、UNIXライクな環境だと特に何も考えずに使えるようになっているのだが、例によって Windows だと使えるようにために設定が必要である。

参考にしたのはこのページ http://d.hatena.ne.jp/t0m0_tomo/20101208/1291782058

まず、バックエンドに PuTTY を使うとして、PuTTY へのパスを通す必要がある。PATH に PuTTY のフォルダを指定している人はこの設定はたぶん飛ばせる。

たとえばユーザ xxx が自身の "ドキュメント" フォルダに PuTTY のフォルダを置いているとすると、実際のパスが "C:\Users\xxx\Documents\PuTTY" とかになっているので、~/.emacs.d/init.el に以下を設定する。
(setenv "PATH"
    (concat
     (getenv "PATH")
     ";" "C:\\Users\\xxx\\Documents\\PuTTY"))

あくまで例示なので、自分のとこではパスが違うとかそういうのは適当に自分の環境に合わせて読み替えてほしい。

これで Emacs から PuTTY を使う準備ができた。

次は tramp でPuTTY の plink.exe を使う設定。
(require 'tramp)
(setq tramp-default-method "plink")
(setq tramp-shell-prompt-pattern "^[ $]+")

これでいける。

あとは C-x C-f でファイルを開くときに "/hostname.example.com:~" とかいう感じで指定すると hostname.example.com のホームディレクトリが参照できる。

ちなみにこの hostname.example.com の部分は PuTTY でのセッション名でもいける。セッション名の方がリモートユーザ名とかあらかじめ設定できて便利だと思う。ただ、日本語のセッション名を入れたら tramp の方が認識しなかった。ホスト名っぽいセッション名にしておいた方が無難な模様。



2015年5月8日金曜日

CentOS6 の Git をアップデートした話

また、CentOS と yum の話をする。

CentOS6 の標準 git は 1.7 だった。これはあまりにも古い。が、最初から入ってるのが古い事そのものは問題ない。更新できれば。

IUS のリポジトリには git2u ってのがあってこれが 2.3.6 になっている。 これを入れればよいのだけれど、例によって初期状態で入っている 1.7 とコンフリクトして入らない。

yum のコマンドで置き換えたりできないのかなーと思って Google で検索してみたところ、出てくるページ出てくるページがどれも「CentOS標準の git が古いんで新しいの入れました。ソースから。どやぁ。」

あほか。なんのためのパッケージシステムなんだよ。ソースからビルドするんならおとなしくBSDでも使ってろ(注:筆者はNetBSDユーザです)。

で、ビルドするのにライブラリが足りないからってこっちは yum でインストールしてんの。もう見てらんない。

結局古いの削除して新しいのインストールしたよ。
# yum erase git
# yum install git2u

CentOSを使ってみた

ちょっと用事があって、さくらVPSを使ってみた。これについてはいずれ書くかもしれないけど、今回はさくらVPSの標準OSであるCentOS6を使ってみた話。

UNIX系OSとしてはこれまでNetBSDメインで使っている。以前はFreeBSDが主だったし今でもFreeBSDは使う機会もあるのだが、何が言いたいかというとBSD系だってことだ。

BSD系に愛着はあるんだけれども、世間的にはLinux系の方がメジャーなのだろうし、さくらVPSの標準OSがLinux系のCentOSだってんならそれを使おうじゃないか。標準ならインストール済みだしドライバとかでハマることもないんだろう。

世間のみんなが使ってるんだし最新のアプリがコマンド一発ポンでサクッと使えるようになってるはず。pkgsrcやportsのリポジトリを眺めながら早く最新に対応してくれないかなーって思ったり、そもそも提供されてなくて野良ビルドに苦労したりなんてことも当然ないよね?

で、ログインしたわけだ。

CentOS6ではアプリケーションはyumとかいうコマンドで管理するらしい。

うん、yum見たことある。昔サーバにLinuxインストールした時に使ったやつだ。その時のサーバはアンインストールしちゃったけどな。

で、apache とかインストールしたあと、yum list mysql php とかやったわけよ。

$ sudo yum list php mysql
読み込んだプラグイン:fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.kddilabs.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
利用可能なパッケージ
mysql.x86_64                       5.1.73-3.el6_5                        base
php.x86_64                         5.3.3-40.el6_6                        updates
$

…古くね?

で、調べてみると、yumの追加のリポジトリを 別のところから持ってこないといけないらしい。

なんだよ追加のリポジトリって。公式で一元管理されてないのか最低だな。なんだよiusって。

で、しかたないからiusリポジトリっていうのを入れたのよ。

ius に入っている mysql が mysql56u って名前なのはまだいい(56uのuってなんだよというのはこの際おいとく)。mysql56u入れようとしたら最初から入ってるmysql-libsと干渉して入んないじゃねえか(参考: http://d.hatena.ne.jp/R-H/20120505/1336187294)。

  1. MySQL の本家ページ(http://dev.mysql.com/downloads/repo/yum/)から yum のリポジトリCetOS6用をダウンロードする。これを書いてる時点の最新は mysql-community-release-el6-5.noarch.rpm だった。
  2. ダウンロードしたリポジトリをインストールする。
    yum install mysql-community-release-el6-5.noarch.rpm
  3. 古い mysql との互換ライブラリが mysql-community-libs という名前であるのでインストールすると古い mysql-libs が mysql-community-libs に置き換えられる。
  4. あとは mysql-community-server をインストールすると干渉することなく mysql 5.6 がインストールされる。
標準OSだからCentOS6で作業したけど、CentOS7とかだったら状況はマシだったんだろうか。

こんなだったらFreeBSDとかのほうがマシだったかな?