StartCom の SSL 証明書を使う時の備忘

登録後のログインには、クライアント証明書が必要。
Apache サーバーに SSL 証明書をインストールした後、CAの証明書等を同じく設定してやらないと Firefox でエラーが出る。
ドメイン管理者でないと証明書を発行できない。サブドメインの管理者でもダメ。

オレオレ証明書

概要:SSL通信をするためだけに証明書を作る場合、オレオレ証明書で十分だと思うので、作った。
作成にあたっては、ここを参考にした。
Apache/SSL自己証明書の作成とmod sslの設定 - maruko2 Note.

注意:VirtualHostを使っている場合、SNI対応のブラウザでないと正しくアクセスできない。

  1. opensslをインストールする
  2. 証明書を作成する
    1. 秘密鍵を作成する。
      openssl genrsa -aes256 2048 > server.key
      秘密鍵は、パスフレーズで保護する。
      server.key が秘密鍵。
    2. 秘密鍵を使って、署名要求ファイルを作成する。
      openssl req -new -key server.key > server.csr
      秘密鍵のパスフレーズを求められるので、入力する。
      証明書へ埋め込みたい情報の入力が求められるので、入力する。
      とりわけ、Common Name は使いたい web site のホスト・ドメイン名と一致させておくこと。
      server.csrが署名要求ファイル。
    3. 署名要求ファイルからデジタル証明書を作成する。
      第三者機関を使う場合、この工程を当該機関にさせるらしい。
      オレオレ証明書の場合、署名要求ファイルの作成に使った秘密鍵で証明書を作成する。
      openssl x509 -in server.csr -days 365 -req -signkey server.key > server.crt
      秘密鍵のパスフレーズを求められるので、入力する。
      server.crt がデジタル証明書。
  3. apache で SSL を有効化する。
    1. VirtualHost を使う場合は、設定する。
      /etc/apache2/ports.conf へ NameVirtualHost *:443 を追記。
      sites-enabled で使っているディレクティブの、対象 VirtualHost の設定をコピペし、*:80 の部分を *:443 に書き換え。
      下記を、DocumentRoot とかと同じく、ディレクティブの外に追記。

      SSLEngine on
      SSLCertificateFile /path/server.crt
      SSLCertificateKeyFile /path/server.key
      
    2. SSL を有効化。
      a2enmod ssl
      でモジュールを読み込ませ、apache2 の再起動で完了。
  4. 設置場所にもよるけど、上記で作った全ファイルは chmod 400 * とかしといた方がいいと思う。
    400 なのに apache サーバーが読み込みできているのは、謎。

で、せっかくなんで、StartSSL™ Certificates & Public Key Infrastructure でデジタル証明書を作った。
ここは、フリーで証明書発行できるくせに、Firefox に登録されているという稀有なルート証明機関。
ここでの発行にも手間がかかるが、いい加減眠いので、メモはこのへんで終了。
このサイトへ、https でアクセスしてもらえば、見えるはず。

注意:

  1. SNI 未対応のブラウザでは見られない。IEとか。(Vista 以降の OS 上で IE8 以降を使えば見られるはずが、何故か我が家の IE9 では不可だった。不思議だ。)
    IEは、TLS 1.1、TLS1.2を有効にすればOK。
  2. WordPress は、テーマやプラグインに SSL 未対応のものが多くあり、SSL で表示するはずのページ上に SSL を使わない URL 表記のソースが出力されてしまうことから、エラーが出る。
    add_filter とかで http を https に書き換えたり、相対パスに変換したりすれば良いのだが、面倒くさいので本サイトではやってない。

ul/ol のネスト

知らんかった… HTML の ul とか ol は子要素に li しか持てないらしい。
なのでネストさせる時はliの中でネストさせる。

ということで、コードは、

  • a
  • b
  • c
    • c-1
    • c-2
  • d

と書いて、見た目は下みたいな。

  • a
  • b
  • c
    • c-1
    • c-2
  • d

Linux の設定とか

昔は研究室のメインマシンとして使っていた Linux も、遠ざかってはや 6年… すっかり忘れてしまった。
でも鯖を立てるにあたって色々不便なので調べたりしたことをメモにする。
Ubuntu Server の固有の話も混ざっていると思うので、注意すること。

zsh の設定ファイルは、~/.zshenv になる。この中で ZDOTDIR を指定しても、ログインシェルでは適用されないので、source で読み込んでおくおと。

export ZDOTDIR=hogehoge
source $ZDOTDIR/.zshenv

最近は、LANG だけ設定しておけば他のロケール設定も勝手に変えてくれる。
あと便利なロケールとして、C.UTF-8 というのが登場したらしい。基本英語になるけど、UTF-8 の文字コードも認識してくれる。

今、自分のサーバに入っているロケールは、locale -a で見ることができる。
入れられるロケールは、/usr/share/i18n/SUPPORTED に記載されている。
特に、昔の設定ファイルを引っ張りだすと、ロケールの呼び名が変わっていることがあるので、たまにチェックする。

vim を入れただけでは、vi で起動しないので、alias することを忘れないようにする。

自宅にサーバを立てる 第3弾

Local Area Network
Local Area Network

一応、DMZ を設けてみた。
右図みたいな感じ。
詳しい設定は秘密だよ。

  • DB として、mysql をインストール。
    • mysql_secure_installation で初期設定。
    • test database はいらない
    • root の remote login は off にしても、ssh コンソールからは普通に使える
  • localhost のユーザー用DBを作る。
    • 権限付与。不要な権限を削除。そして適用。
      grant all privileges on databasename.* to username@localhost identified by "password";
      revoke all privileges on test.* from username@localhost;
      flush privileges;
    • で、該当ユーザーになって、
      mysql -u username(アカウント名と同じなら省略可) -p
      create database databasename;

      とすれば DB 自体は作成完了。
  • ヨソから DB の出力を持ってきた場合は、
    mysql databasename -p < sqlfile

外から sql 叩くのに、ssh の口を空けないためには、phpmyadmin とかを入れると良い。
apt-get installphpmyadmin
dbconfig-common yes

その後、/etc/phpmyadmin/apache.conf で /phpmyadmin を alias している行を任意のディレクトリへ変更すること。
また、最近のアップデートを当てたところ、/usr/share/phpmyadmin のディレクティブに Allow from 行を記載しないとアクセスできなくなってしまった。なんでやねん。

おまけ。
WordPress を移設した場合にも使える SQL 文集。 → WordPressで使える知ってると便利な13のSQL文 | Web活メモ帳
WordPress のリビジョン削除 → WordPress でリビジョンと自動保存を簡単に停止する方法 | ウェブル

自鯖のwebサーバ化

我が家のLAN
我が家のLAN

我が家では、web 公開にあたり、DMZ を設けたので、もはや左の構成では動作していないが、まぁ参考まで。

下記は、自鯖の公開にあたり修正中のメモ。

php 動かす。

a2enmod php5

ドメインで飛んできた時に、ユーザーディレクトリを DocumentRoot にする

具体的には、http://www.hadacchi.com/ で、/home/user/public_html を DocumentRoot として動作させる
VirtualHost または VirtualDocumentRoot あたりで Alias するらしい
ただし、DNS で引けないとダメ。

DNS サーバを立てる。

bind9 の設定

…前職では、職場のローカル DNS の管理してたのになぁ; さっぱり覚えとらん
master ファイルの名前の付け方は、自由にできるらしい。
最近は named.conf から import するのが主流っぽい。

bash は糞面倒くさいので、zsh 入れる。

ローカルの .zsh/.zshrc が動かないので改行コードを置換する。
vi しかエディタいれてなくて、tr は苦手なので vi で置換する。
vi::何かを改行に置換 - そらまめ備忘録 で C-v C-m で ^M を入力できることを知る。

named-checkconf が通っても、普通に起動しないことがあるので注意。例えばファイル名の指定ミスとか。

zone ファイルは、1 ファイル内に複数 zone を記載してもいいはずなのに、うまく動かなかったので、ちゃんと zone 毎に分ける。

例えば、192.168.1.1 に DNS もやってくれる R があったとして、192.168.1.2 = ns.hadacchi.com なる DNS を立てる時、
named.conf.local では次のように記載し、

zone "hadacchi.com" {
    type master
    file "hadacchi.db"
}
zone "1.168.192.in-addr.arpa" {
    type master
    file "1.168.192.db"
}

各 zone ファイルでは、

$TTL 86400
$ORIGIN hadacchi.com.  ; @ means $ORIGIN
@       IN      SOA     ns.hadacchi.com.       test.hadacchi.com.    (
        2012032701 ; serial
        86400      ; refresh
        1200       ; retry
        2419200    ; expire
        1200 )     ; minimum
        IN      NS      ns          ; NS is name server which defined as A record
        IN      A       192.168.1.2 ; short for above label
ns      IN      A       192.168.1.2 ; A record
www     IN      CNAME   ns          ; CNAME is alias

とか

$TTL 86400
$ORIGIN 1.168.192.in-addr.arpa.
@       IN      SOA     ns.hadacchi.com.       test.hadacchi.com     (
        2012032701 ; serial
        86400      ; refresh
        1200       ; retry
        2419200    ; expire
        1200 )     ; minimum
2       IN      PTR     ns.hadacchi.com.

とかいう感じ。

キャッシュは、named.conf.options で

options {
        directory "/var/cache/named";

        forwarders {
                192.168.1.1;
        };

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };
};

とか。

PC に LAN 内の DNS を参照させる。

まず、自分で立てた DNS 自身が外のエントリよりも自分の持つエントリを優先するように設定。
DHCP を動かしている場合、DNS 設定も一緒に配信されてしまうので、クライアント側で弾く。
Ubuntu の場合、/etc/dhcp/etc/dhcp3 の下に
dhclient.conf というファイルがあるので、その中のrequest 行でDNSに関する記述をコメントアウトする。

request subnet-mask, broadcast-address, time-offset, routers,
#       domain-name, domain-name-servers, domain-search, host-name,
        netbios-name-servers, netbios-scope, interface-mtu,
        rfc3442-classless-static-routes, ntp-servers,
        dhcp6.domain-search, dhcp6.fqdn,
        dhcp6.name-servers, dhcp6.sntp-servers;

で、/etc/resolv.conf を書き換える

domain hadacchi.com
search hadacchi.com
nameserver 192.168.x.x
nameserver 192.168.x.1 # 元々の記述

それから、networking を restart

/etc/init.d/networking restart

これで、名前を引けるようになる。

自分の PC が参照する DNS をサーバにすれば、その PC からアクセスした時だけ hadacchi.com をローカルサーバに飛ばすことができるので、テスト用に良い。

VirtualHost の設定。

VirtualDocumentRoot と違って、静的に書くことになる。
しかし、他人に鯖を貸すことはあったとしても、web I/F で自動受付とかはやらないと思うので、これでいこう。
/etc/apache2/sites-available にある default を コピーして、hadacchi とでもしておく。
hadacchi を編集して、ドメイン名とドキュメントルートを追記する。

# Other diretive

<VirtualHost *:80>
    ServerAdmin mail@domain.com
    DocumentRoot /home/user/path
    ServerName subdomain.domain.com
</VirtualHost>

これで、subdomain.domain.com でアクセスされた時には、/home/user/path をドキュメントルートとして表示し、他のアクセスでは /var/www など元のドキュメントルートを表示されるよう設定できる。
この時、追加した内容を元の記述より上に記載すると、IP アドレスでアクセスされた時に subdomain 用のドキュメントルートが表示されるので注意。

www を外向けに空ける。

FTPS を外に向けて空ける

切れたセッションに再接続するために、screen を入れようと検索していたら、tmux を知る。

Terminal Multiplexer(tmux)の紹介|サイバーエージェント 公式エンジニアブログ
とか、
時代はGNU screenからtmuxへ - Dマイナー志向
が詳しい。上のリンクの設定では、 h の設定が重複しているので注意。

会社でも使えそうな、Windows 上での仮想デスクトップソフトを発見した。

Windowsに仮想デスクトップを設定、拡張機能も便利「VirtuaWin 4.3」
で紹介されている、VirtuaWin - Virtual Desktops for Windows が便利。
最初は、窓の杜 - 【REVIEW】WindowsのデスクトップをAndroid風に操作できるようにする「Blacksmith」で紹介されているソフトを試してみた。
このソフト、ランチャもついているのは良いのだが…
hotkey の変更ができないことと、一部のアプリケーションが全仮想デスクトップ上に残ることが不便なため、使うのを止めた。
今のところ、上の VirtuaWin は、Windows 7 SP1 では、問題なく動作しているので、しばらくこれを使うつもり。

妻のおばあちゃんがくれた、かえりちりめんがすげー美味い。貪り食っていたら、妻からキレられた。でもうまいし。

Ubuntu Server のインストール

ドハマりしたので、メモ。

  • USB メモリに焼いた Ubuntu server 11.10 からインストーラを起動したが、USB キーボード&マウスを認識しない
    → PS/2 キーボードは認識した。
  • Ubuntu server インストール後、Ubuntuが起動せず、busybox が起動する。
    エラーメッセージを見るに、HDD を認識していないような…?
    mount: Mounting /dev/disk/by-uuid/{なんかUUIDっぽい文字列} on /root failed: Device or resource busy
    RAID コントローラを積んでいない M/B (E45m1-I DELUXE) を使っているにも関わらず、
    One or more drives containing Serial ATA RAID configurations have been found. Do you wish to activate these RAID devices?
    などと表示されることと関連があるような予感がする。
    → HDD を前に使っていた時の RAID の array 構成情報が残っていることが原因かも? web の情報によれば、array 構成情報が残っていることにより、OS インストーラが正しく動作しないことがあるようだ。
    解決方法は、その RAID を構成したコントローラ上で、array を削除するなど。
  • sources.list が変
    Ubuntu Sources List Generator で作成。
    Ubuntu Branches の全て、Ubuntu Updates の Security と Updates、Canonical、Extras を選択。
  • 何故か、BIOS のスプラッシュ画面以外が出力されない。具体的には、grub4 での kernel 選択の画面から出力されない…
  • WLAN で、何故か AP とアソシエートできない。wpa-ssid の値をダブルクォートで括ってないからだろうか…?今度ためす。

自作PC 2号

E45M1-I DELUXE in ISK-100

先の記事で書いていた通り、

が届いた。

ケースは、作りがいいのか悪いのか…
HDD を取り付けするブラケットの部分が 4 本のネジで固定されていて、M/Bの背面の作りや HDD の形状に合わせて、向きを変えることができる。で、このネジを金属製のシャーシに取り付け、締めたところ、空回りした… ハイ、ネジ穴死んだー! 自作は 2 台目なものの、パーツの取扱なんて山ほどやっている私だが、こんなの初めてだーよ。
ケースが狭いのは前評判から分かっていたので、特に深く言及はしない。コードの取り回しはそれなりに苦労した。

マザボは、色々あった。
SATA ケーブルで、いつも取り外しが固いと思っていたコードを使ってみたところ、コネクタが抜けた。SATA コネクタが抜けた時のあの絶望感は凄い。戻そうと思って頑張ってみたけど、結局電極が曲がって折れてしまい、戻らなかった。まぁ、2台しか内蔵 HDD をインストールできないケースに、5 つもついている SATA コネクタは不要なので、問題ないことにする。
BIOS が GUI 仕様で、マウスが利く。マウスを使える BIOS は初めてだったので、驚いてしまった。
USB キーボード/マウス + Ubuntu Server インストールディスク on USB メモリ の組み合わせでインストールしようとしたら、上手くインストールできなかった。BIOS まではキーもマウスも動くのに、Ubuntu に入ると効かなかった。原因は調査中。どこかから PS/2 キーボードとマウスを調達するしかないか。

E45M1-I DELUXE in ISK-100
E45M1-I DELUXE in ISK-100

ISK-100
ISK-100

で、とりあえず HW だけインストールしたので写真を撮った。
インストールディスクから USB デバイスを認識しないのだけど、どうしようかしら…

自作PCの計画を立てる

会社から自サイトへアクセスすることがよくあるため、自サイトで SSL を使いたい。
しかし SSL 対応レンタルサーバは料金が高いので、自作 PC を組んでサーバ化することを検討している。

今はだいぶ自作も簡単になったが、やっぱりこだわるとなかなかうまく計画がまとまらない。
今回は、自作PCを組むにあたっての調査メモをつけるついでに、hadacchi がどんな風に PC を買うか紹介しようと思う。
という主旨の記事なのでこのシリーズは連載型になると思う。

PC 自作 -hadacchi.com 自鯖化-

全体の流れ

  1. 企画
    何事もそうだが、手段を目的にするとうまくいかない。
    まず、PC を自作するという手段は、どんな目的のためなのか、要件を決める。
  2. 構成検討
    次に、目的に合わせて PC の構成を決める。
    具体的には、「○○の CPU を ○ 規格の M/B に乗せて、HDD は ○ 台、○規格で接続して…」という感じ。
    慣れていれば良いが、不安がある人は、通常のPCに必要なパーツのリストを作成して、
    不足品を追加したり不要な品を削除したりすると良い。
    ただし、1 パーツで複数の目的を達成できるものや、逆にあるパーツの代用を探すと
    パーツが複数になってしまう場合があるため、あまり決め決めにすると柔軟性がなくなる。
    普段から PC をいじっている人や、BTO PC の注文をよくする人であれば、
    わざわざリスト化せず次のパーツ選びとセットでできると思う。
  3. パーツ選び
    構成が決まったら、具体的な各パーツに置き換えて行く。
    これが一番時間がかかる。
    こだわり始めるとキリがないが、あまり適当に決めると絶対に後悔する。
    国内に売ってなければ、海外からの個人輸入も辞さない。
  4. 注意
    PC 本体だけでは大したことはできないので、インターネット接続や他の PC との
    接続も含めて構成は考えなければならないことを忘れずに。
    ハブもスイッチもルータもケーブルもなしに PC だけが増えれば、古い PC か新しい PC かどちらかしか
    実用できない。

企画

目的

自分の web site を、自宅に設置するサーバへ移設し、SSLを使えるようにする。
今後、簡易な NAS のようにファイルストレージもしたくなる可能性が高い。

使い方

  • 常時、インターネットへ接続する
  • インターネット側からアクセス可能とする
  • 自宅で直接操作することは少ない
  • 子供がいじる可能性がある

要件

  • 常時起動していても苦情がでないよう、省電力は勿論のこと、存在感を主張しない小型 PC とする
  • 処理性能は低くて良い
  • グローバル IP が 1 つしかないため、プライベート IP + NAPT とする
  • モニタは不要。インストール時は、今ある 2 台のモニタの一方を使う
  • 子供が触れない場所に設置すると、ホコリがトラブルの元なので、できるだけ回転する部品を減らす
  • サーバとしての運用が簡単な PC-linux -- 特に運用経験が多い debian や ubuntu server あたりを使う
  • 自宅の無線系の不安定さ、設置が電子レンジ傍になりそうなことから、有線接続とする

構成

私の場合、こんな風にイメージしながら考える。

ケース、M/B は mini-ITX。OS は ubuntu サーバ。電源は高効率な AC アダプタが理想。ストレージは、1 台搭載のケースなら、TB HDD。2 台搭載のケースなら、SSD (システム) と HDD (データ)。グラボオンボード。CPU は Atom か fusion あたりかな。光学ドライブはなしで、USB からインストール。

手堅くやるなら、ちゃんと表にする。

必須
ケース 小さいの、妻受けするの
電源 高効率の
M/B グラボとサウンドオンボードの
CPU 省エネの
メモリ 適当でいいが、Mini-ITX ケースの場合、ロープロメモリでないと入らないことがあるらしい
HDD 省エネの
ケーブル類 溢れるほどある
目的次第
光学ドライブ いらん
グラボ いらん
拡張I/F いらん

パーツ選び

苦戦している。
外観的に EZ-CASE01MI80W-BK(通常据え置きタイプ) が欲しいのだが、この 80W 電源が評判が悪いようだ。検索すると、ここ→[coneco.net]コネコネットとか、口コミで出てくる
で諦めて、ふらっと見ていた色々なケースの製造元ページで、これと全く同じ外観のケースを発見した。
これ → BQ656 って、台湾の製品で、標準で 80W の電源搭載というのも一緒なのだが、オプションで 120W DC-DCコンバータ+ACアダプタという素晴らしい組み合わせがあるようだ。
ただし、同じケースでも 80W 電源と 120W コンバータは取り付けが違うらしく(IW-BQ660S/120W)、IP-V120DD だけ取り寄せても使えないらしい…ホントかなぁ…

こういうのは、先に枠から決めてしまわないと、構成が fix できないのだが、外観で気に入ってしまうと他の選択肢になかなか乗り換えられず、輸入サイトを巡ってしまう。
まぁ、BQ660を選んだとして進めてもいいのだが…と悩み中。

追記1
ベアボーンが安い。
気になっているのは、このへん。

Atom 525、2.5" HDD×2(オプションパーツ必要)、40W ACアダプタ

Fusion APUも安い。

このケースは、干渉が厳しくパーツによっては入らないギチギチサイズらしいが、どうやらこのM/Bは入るもよう。
ただ、2.5" HDD は、厚みが 9.5mm 以下の規格のものしか入らないらしい。
この M/B の 1 つ前の E35m1-I Deluxe をインストールしている動画があった。

追記2
ASUS の EPU は linux で動かないらしく、ファンコンが気になっていたが、こういうユーティリティがあるらしい。
cpufreq-selectorのメモ

追記3
Fusion APU で組んだ場合のシミュレート。

ケース ISK-100 7,700円
CPU, M/B E45m1-I Deluxe 14,000円
HDD WD2500BEVT×2 0円 (RAID組もうとして失敗したやつ)
メモリ KVR1333D3N9/4G 2,200円

以外と安いな…

追記4
買った。また組んだら記事にする。

追記5

子供が触れない場所に設置すると、ホコリがトラブルの元なので、できるだけ回転する部品を減らす

ケース:小さいの、妻受けするの

買ったもの→ISK-100

…… ほら、最初のコンセプトがブレると、こうなる。
みんな注意だ。

VAIO C の HDD を換装

VAIO C (VGN C61HB) の HDD を、左の HDD に換装した。
この HDD は AFT 採用なので、ノート PC の換装や XP を導入しようとするとハマることがあるので注意。

用意するもの

  • リカバリディスク
  • VAIO C
  • 新しい HDD
  • 新しい HDD を VAIO C に接続可能なアダプタ(hadacchiは、GW3.5AA-SUE を USB 接続で使った)
  • プラスドライバー

手順

  1. (省略可)リカバリディスクで戻したい状態に戻す
  2. EaseUS Partition Master などを導入して、HDD を丸ごとコピーする。
    パーティションを変えたければ変える。
    やり方は、「EASEUS Partition Master」で今のパソコン環境のままHDDを換装する方法! - 裏技shop DD など参考に。
  3. コピーが終わったら、HDD を差し替える。何かドライバがどーのとか怒られて再起動させられるけど、気にしない。
  4. 本来なら、上の手順で終わるところだ。
    しかし、hadacchi は間違えて WesternDigital の AFT 採用の HDD を買ってしまったので、Windows Update が適用できなくなってしまった。
    その場合、[Vista] エラコード 8024A000 でWindowaUpdateができません。__ - Microsoft Answers とか、[Win7] Windows Update が起動しません - Microsoft Answers などを参考に頑張る。
    結論から言うと、先に MimicXPS 1.04 で物理セクタの補正を 4096 へと変更したが改善せず、後者のバッチファイルを管理者権限で実行することで改善された。