オレオレ証明書を使って https を有効化

前回のエントリで既に SSL 前提の投稿にしてしまいましたが、それ以前に SSL を有効にしないといけないですね。

以前は金を払って証明書を発行してもらうのが普通でしたが、最近では無料で証明書を発行してくれる StartSSL というサービスもあるようです。いずれ試してみたいと思いますが、今回は個人で使うだけですし、経路を暗号化するだけが目的なので自己署名証明書(オレオレ証明書)を作成します。

ServersMan@VPS 上で作業しました。 OS は CentOS 6.5 32bit です。

秘密鍵の作成

まず秘密鍵を作ります。

# cd /etc/pki/tls/certs/
# make localhost.key

ここでパスワードを聞かれるので入力します。

続いてパスワード無しの秘密鍵を作ります。

# openssl rsa -in localhost.key -out localhost.key

上で入力したパスワードを入力します。 生成される localhost.key が秘密鍵です。

証明書署名要求の作成

次に証明書署名要求 (CSR) を作成します。

# make localhost.csr
umask 77 ; \
/usr/bin/openssl req -utf8 -new -key localhost.key -out localhost.csr
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) [XX]:JP
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:domain.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

証明書の項目を聞かれます。オレオレ証明書なので Country Name と Common Name だけ入力し、それ以外はデフォルト値(Enterのみ)で問題ありません。

証明書の作成

CSR を元に証明書を作成します。

# openssl x509 -in localhost.csr -out localhost.pem -req -signkey localhost.key -days 365

days に有効日数を入れます。上記例では 1 年間有効になります。

作成された localhost.pem が証明書になります。

ここまでで秘密鍵 (.key) と証明書 (.pem) の作成が完了です。

apache に秘密鍵と証明書を登録する

/etc/httpd/conf.d/ssl.conf の以下の設定をコメントアウトし、作成した秘密鍵と証明書を指定します。

SSLCertificateFile /etc/pki/tls/certs/localhost.pem
SSLCertificateKeyFile /etc/pki/tls/certs/localhost.key

apache を再起動します。

# service httpd restart

https://ホスト名/ でアクセスできれば OK です。
オレオレ証明書なのでブラウザにセキュリティの警告が表示されますが、経路は暗号化されており使用に問題はありません。

ServersMan@VPS の Airdisplay (ajaxterm) に認証をかける

早速契約しちゃいました。今のレンタルサーバが 4 月までなのでそれまでに環境を整えていこうと思います。

ServersMan@VPS には Airdisplay という、ブラウザから VPS にログインする機能(実際はajaxtermそのもの)がありますが、ちょっといじってみたところ、URLさえ知っていれば誰でもログインプロンプトまで表示できてしまうという仕様だと分かりました。

うーん。この仕様で大丈夫なんだろうか・・。

さらに、ServersMan@VPS の Entry プランでは pty の上限が 8 までなので、ブラウザで8つ表示させるだけで、本当の SSH 接続すらできなくなってしまうようです。怖い怖い・・。

基本 SSH でしか接続しないので ajaxterm 自体を無効化しようかとも思いましたが、設定をミスって外部からの SSH 接続ができなくなった時のための手段として残しておくことにしました。

こういう時のために以前使った VPS では管理コンソールからゲスト OS の tty に接続できる仕組みがあったんですが、ServersMan@VPS には無いみたい・・。
# 設定ミスで sshd が起動しない状態になったらどうするんだろ?

ajaxterm からの接続は localhost からの SSH 接続になるので PAM などでログイン制限をかけやすいので、適切に設定すれば大丈夫かなと。

ということで、ある程度安心して ajaxterm を使えるように以下の変更を行うことにしました。

  • https 必須で http からのアクセスは拒絶 (パスワードやタイプした文字が暗号化されるように)
  • Basic 認証を追加 (SSL 必須なのでBasic認証でも平文が流れることはない)
  • デフォルトの URLを変更 (少しでもアタックされにくいように)

これらの変更を行うため、 /etc/httpd/conf.d/proxy_ajaxterm.conf を以下のように変更しました。赤字が変更部分です。

<IfModule mod_proxy.c>

<Proxy *>
      Order deny,allow
      Deny from all
      Allow from all
</Proxy>
ProxyPass /AIRDISPLAY/ http://localhost:8022/
ProxyPassReverse /AIRDISPLAY/ http://localhost:8022/

<Location /AIRDISPLAY/>
      Order allow,deny
      Allow from all

      AuthType Basic
      AuthName "ajaxterm_user"
      AuthUserFile /var/www/ajaxterm-htpasswd
      require valid-user

      # Reject non-SSL requests
      SSLRequireSSL
</Location>

</IfModule>

AIRDISPLAY の部分は URL になるので適当に変更してください。

続いて、パスワードファイルを作成します。

# htpasswd -c /var/www/ajaxterm-htpasswd USERNAME

USERNAME も適当に。上記コマンドを実行するとパスワードを聞かれるので入力してください。

作業が終わったら apache を再起動します。

# service httpd restart

これで作業完了。

ちゃんと動作するか確認します。

https://ホスト名/AIRDISPLAY/ でアクセス認証ダイアログが表示され、USERNAME と入力したパスワードで認証をパスすることを確認できれば OK です。

さらに http://ホスト名/AIRDISPLAY で接続できないことも確認しておきます。

これで少しはアタックされにくくなったはず。

VPSへの引っ越しを検討中

前回 VPS が吹っ飛び、急遽レンタルサーバに移行して、もうすぐ1年。
レンタルサーバは 1 年契約だったので、もうすぐ更新なんですが、また VPS にしようかどうか悩み中・・・。

VPSに移行したくなった最大の理由は、自前で Dropbox みたいなサービスを立ち上げられる ownCloud を立ち上げたくなったことです。DropBox も Google もあまり信用していないので、できれば個人情報は個人のサーバに置いておきたくて・・・。

一年前は VPS は管理の手間が案外かかるのでもうレンタルサーバでいいや。って思ってましたが、レンタルサーバだと ownCloud を共有 SSL 経由で使うのは難しいみたいです。個人的なファイルを平文の http で転送するなんて気持ち悪いので SSL は譲れないし。

独自SSLならレンタルサーバでも ownCloud は動くと思いますが、たとえオレオレ証明書でも独自SSLを使うと月々の追加料金が発生するのが当たり前みたいなので、それはちょっとハードル高いです。

ということで VPS 熱が再燃。今は CORESERVER.JP というレンタルサーバを借りているのですが、不満とやりたいことをまとめると以下のような感じです。

  • ownCloud を SSL 経由で使いたい
  • メールサーバでサーバ側で振り分けしたい  (CORESERVER.JP はフィルタが 10 個まで)
  • メールサーバから fetchmail で外部メールを取得したい
  • このブログ(wordpress)の運用
  • gitサーバにしたい

一部はVPSじゃなくても別のレンタルサーバに引っ越すだけで実現できることもありますが、どうせなら ownCloud 使いたいから VPS かな。

このブログは大したページビューもないですし、それほど負荷が高いものではないと思うので、CPUはそこそこに、でもメモリはそれなりに必要かなあと思います。

ということで、1000円以下の安い VPS サービスをざっと調べてみました。

VPSサービス プラン名 年契約時の月額[円] メモリ[GB] HDD[GB] 仮想化方式
Osukini サーバ Air 05 420 0.5 40 Xen
Osukini サーバ LT 472 0.5 50 Xen
ABLENET VPS V0 480 0.5 50 KVM
ServersMan@VPS Entry 490 1 50 OpenVZ?
FC2 VPS バリュー 580 1 40 Virtuozzo
WEBKEEPERS バリュー 580 1 40 Virtuozzo
ServerQueen SVL-00 650 1 80 Virtuozzo?
Osukini サーバ Air 10 735 1 40 Xen
ServerQueen SVL-01 750 2 80 Virtuozzo?
Osukini サーバ ST2 819 1.1 100 Xen
お名前.com VPS(KVM) 1GBプラン 833 1 100 KVM
カゴヤ VPS タイプA 840 1 200 OpenVZ?
SPPD VPS ゴーゴー2GBコース 866 2 55 KVM
さくらのVPS 1G 899 1 100 KVM?
ConoHa 1GB 976 1 100 KVM
ABLENET VPS V1 980 1.5 50 KVM
ServersMan@VPS Standard 980 2 100 OpenVZ?
GMOクラウドのVPS マイクロ 980 2 100 KVM

メモリ 512MB はちょっときついかなと思うので、1GB 以上で割安感があるものは赤くしてみました。

メモリ 1GB の中で一番安いのが ServersMan@VPS Entry です。500円以下で VPS を借りれるのは驚異的です。

メモリに着目すると ServerQueen SVL-01 ならメモリ 2GB の中では最安です。HDD 80GB という容量も割安です。

ownCloud でストレージとして使うことを考えるとカゴヤ VPS タイプ A がいいのですが、さすがに 200GB はいらないかなぁ・・。

色々悩んだんですが、ServersMan@VPS にしようと思います。安いので失敗した時のダメージも小さいですし。試してダメそうなら ServerQueen に乗り換えます。

 

それにしても安くなりましたねぇ。2006年に一番最初に VPS を借りた unixshell.com ではメモリ 128MB で $9 位だったような・・。

懐かしくて調べてみたら archive.org に unixshell の当時のプライスリストがありました。メモリ 64MB で$7.99!! これでも当時最安だったんですよね・・・。

apache じゃメモリ食うし重すぎたので lighttpd 使ってました。懐かしいなぁ。

kobo aura HD 買いました

お久しぶりの投稿です。

前々から気になってた kobo の aura HD を買っちゃいました。

kobo aura HD 買っちゃった
kobo aura HD 買っちゃった

日本では未発売の kobo aura HD です。どうしても欲しかったので個人輸入しちゃいました。

本体は$170だけど、送料などで結局2万円くらい。高い出費でした。

そこまでして欲しかったのは6.8インチで 1080×1440 という解像度の高さです。glo は 6 インチで 758×1024 ですので、 glo に比べて約 1.24 倍の解像度アップです。

どれくらい解像度が違うのかは下方で検証してみます。

glo と並べて置いてみました。

左 aura HD, 右 glo
左 aura HD, 右 glo

パネルのサイズが、aura HD は 6.8 inch、glo は 6 inch という事で、aura HD の方が一回り大きいです。

ウラ面 左:aura HD、右:glo

ウラ面 左:aura HD、右:glo

ウラ面はaura HD は持ちやすいようにちょっとした山が左右に2つあります。ちょっとした差ですがコレがあるだけでちょっとグリップ感が増したような気がします。

さて、解像度の違いを検証してみます。

gloのレビューの時と同様に、銀河鉄道の夜から「銀河帯」という単語を表示させて比較してみます。

touch, glo, aura HDの3機種で、どの機種も3文字の高さが約9.5mmになるようにフォントのサイズを調節しました。

その結果がこちら。

 解像度の違い
解像度の違い

明らかに aura HD が精細な表示になっています。touch→glo の精細化度合いと同じくらい、glo→aura HDも精細化されています。見た目の印象としては、だいぶ紙に近づいた感じです。

ここまで来るとリュウミン明朝が細くみえてしまうので、英語フォントのようにウェイトが選べると嬉しいですね。

 

画面の更新時間はgloと大体同じくらいです。touch→gloでは画面更新の時間が短くなり、かなり快適になったのですが、aura HDはあまり変わってないですね。とはいえ、gloでも十分快適な更新時間だったので、個人的にはあまり問題に感じないです。

 

ひと通りいじってみましたが、 海外モデルという事で日本語書籍系やストアへの接続に問題があるかなと思っていたのですが、全く問題なく使用することができました。

ファームウェアは海外バージョンの物が入るらしく、すでに 2.10.0 です。(日本版 glo は 2.6.0)

バージョン 2.10.0 では、webページを保存して後で読むためのサービス「pocket」との連携もできるらしいので今度使ってみようと思います。

全体の感想として、ちょっと高かったですが、買って良かったと思います。高解像度はマンガや自炊書籍など、画像の書籍を見るのに適しているのではないかと思います。

koboにシリアル端子を増設

以前 kobo touch にUSBシリアルを繋げるKobo 用のシリアルコネクタ作成という記事を書きましたが、kobo glo では後ろに E-ink パネルがあって治具が貫通せず、この方法が使えなかったためコネクタを追加することにしました。

普段使いもしている端末なので、ケースにバリバリ穴を開けて線を引き出すというのではなく、外観を損なわないような方法を考えました。

コネクタの位置ですが、microUSB 端子の横に隙間がありそうだったのでそこに追加しました。

130706-glo-uart
端子の位置と配線図

 

端子はICソケットの丸ピンタイプ(秋月電子へのリンク)の足を切ったものを使用し、ホットボンドで固定しています。

ちょっと汚いですが拡大するとこんなかんじです。

130706-glo-uart2

プラグの方は丸ピンのIC連結ソケット(秋月へのリンク)を使いました。

130706-uart-pin

接続するとこんなかんじです。

130706-glo-connection

筐体がそこそこ厚みがあるのでがあるのでピンの長さが足りるか心配でしたが、ギリギリ届いているようで、差し込んだ時にクリック感(?)があり、しっかりホールドされます。

逆向きに挿せてしまうので、向きを覚えて置かないといけないのが難点です。

5ピン分の幅を使って、2番めのピンを切り落として逆には挿さらないようにしたほうが良かったかもしれません。

 

外観はこんな感じです。

130706-glo-hole

穴を開けただけなので、注意してみない限りほとんど目立ちません。個人的に大満足の出来です。

 

ケーブルの先はこんな感じになっています。

130706-uart-usb

適当に余っていたケースに入れたのでかなりスカスカです。

シリアル変換には前回同様、秋月のFT232RL USBシリアル変換モジュールを使ってます。今見たらキットも出てるんですね。ピンヘッダを自分でハンダ付けするだけで150円引きはお得です。

やはりケースに入れるとぞんざいに扱えるのでいいですね。むき出しだと常にショートしないか気にしないといけないので、精神的に煩わしいです。

 

ついでに Touch の方もやってみました。

130706-touch-connection

 

これで裏蓋を開けなくても手軽にデバッグできるようになりました。touch と glo を行き来するのもケーブルの差し替えで済むのラクチンです。