hacks/ほげり道
2011年08月13日
手短にオレオレ証明書を作れたら、楽になれる
開発作業をしていると、色々理由はあれど、年に数回、オレオレ証明書(自己署名証明書)が必要になる。 その度に、過去の作業記録を掘り起こしてopensslコマンドを実行。それの繰り返し。 今後の作業を考慮し、スクリプトを作成してgistにスクリプトを登録した。
検証環境
- Ubuntu 10.04.3 Server LTS
- OpenSSL 0.9.8k 25 Mar 2009
- dash 0.5.5.1-3ubuntu2
要件定義
過去の作業を振り返り、何が必要なのかをまとめると下記の通り。
- コモンネーム指定は必須
- 連絡先メールアドレスを設定出来ると良い
- 主要webサーバの設定例が表示されると良い
- 登録者情報は不要。必要だった事がない。
スクリプトデザイン
実装するに辺り、下記のようにまとまる。
- コマンド引数は1つか2つで良い
- 必須: コモンネーム
- 任意: メールアドレス
$ script common_name [email]
- ファイル名にコモンネームを入れる
- $(コモンネーム)_key.pem
- $(コモンネーム)_csr.pem
- $(コモンネーム)_crt.pem
- 各pemファイルは、カレントディレクトリに生成・保存
- apacheとnginxの設定例を出力
- apache:
SSLCertificateFile /path/to/$(コモンネーム)_crt.pem SSLCertificateKeyFile /path/to/$(コモンネーム)_key.pem
- nginx:
ssl_certificate /path/to/$(コモンネーム)_crt.pem; ssl_certificate_key /path/to/$(コモンネーム)_key.pem;
- apache:
コモンネームを指定して実行
実際にスクリプトを実行してオレオレ証明書を生成してみると、下記の通りになる。
- コモンネーム: ssl.example.com
実行結果:
$ ./gen-selfsigned-cert.sh ssl.example.com
...(省略)...
# 1. Generated a Private Key and CSR
=> ssl.example.com_key.pem
=> ssl.example.com_csr.pem
# 2. Generated a Self-Signed Certificate
=> ssl.example.com_crt.pem
# 3. Installing the Private Key and Certificate
# 4. Configuring SSL Enabled Virtual Hosts
-----
apache:
SSLCertificateFile /path/to/ssl.example.com_crt.pem
SSLCertificateKeyFile /path/to/ssl.example.com_key.pem
nginx:
ssl_certificate /path/to/ssl.example.com_crt.pem;
ssl_certificate_key /path/to/ssl.example.com_key.pem;
-----
生成されたファイル:
$ ls -1 *.pem ssl.example.com_crt.pem ssl.example.com_csr.pem ssl.example.com_key.pem
後の作業は、
- pemをどこか適切な場所へ配置
- webサーバのconfigを変更
- webサーバにconfigを読み込ませる
- ブラウザから "https://ssl.example.com/" へHTTP接続して確認
あと書き
面倒臭い作業の1つを減らせてスッキリした。
ソースコード
gistにはブログ等にコードを埋め込む仕組みが用意されていて便利だ。
オライリージャパン
売り上げランキング: 337580
2009年10月20日
「CPU使用率を高めたい」
隣に座っている人に質問された。
何をやっているのか見てみると、whileループでechoさせていた。
▼例
while :; do echo asdfasdf; done
foregroundで実行しているではないか。
backgroundで複数実行する事を伝えてみたけど、伝わらなかった。
キーボードを拝借。
$ cat >>EOS < perf.sh #!/bin/sh while :; do echo asdfasdf; done EOS $ chmod +x pref.sh $ ./pref.sh &
いくつか実行したら95%くらいCPUを使うようになっていた。
forkしすぎに注意。
何事も程々に。
2009年05月28日
Gitを使い始めた
「Wakame」でGitを使い始めたのがきっかけ。
今までに実行したgitコマンド。
- git clone
- git add
- git diff
- git commit
- git status
- git log
- git checkout
- git branch
- git pull
- git push
タイミング良くWEB+DB PressにGit特集が載ってたので読んでみた。
分散管理の「ぶ」をちょっとだけ分かった気がする程度。
兎にも角にも、使い慣れるしかないと感じた。
本格的な戦いはこれからだ。
技術評論社
売り上げランキング: 1014
2009年05月21日
LDR 購読者数を XPath Graph で可視化するより
「刺身さん」に教えて頂いた「XPath Graph」。
刺身さんのアドバイス通りに設定してみた。
▼半袖blog 読者数(LDR)
今はまだ取得期間が少ない。
今後、増減すると面白い状態になるはず。
刺身さん、ありがとう!
2009年04月08日
怠惰の為の努力
例えば特定接続先ではユーザー名が違う
- 普段の作業環境では「hansode」
- 管理ポリシー等で別ユーザー名を指定される。「nagasode」
- 接続先専用秘密鍵がある
コマンドラインでオプション指定
$ ssh example.jp -l nagasode -i ~/.ssh/id_example.jp
毎回、オプション指定が面倒くさい。
さて、どうする。
ssh_configでオプション指定
$ whoami
hansode
$ cd $HOME/.ssh
$ vi config
----
Host example.jp
IdentityFile ~/.ssh/id_example.jp
User nagasode
----
一度ssh_configを設定しておけば、
次回以降作はホスト名指定だけで済む。
$ ssh example.jp
alias? ssh_confg?
コマンドラインオプション指定の手間を省くにはaliasを使う手もあるけど、
ログインシェルの設定ファイルに書く必要がある。
ssh_configを使うと、ログインシェルに非依存。
また、$HOME/.ssh/は700なのでオプションを覗かれる心配がなくなる。
さらに、psコマンドでもsshのオプションが見える心配はない。
sshの設定は、ssh_configがオススメ。
オライリー・ジャパン
売り上げランキング: 251479
2009年02月25日
ルートパーティションの容量増加しなくて良い
WindowsでWebアプリ開発環境に便利なcoLinux。
開発していくと、ディスク容量不足になりがちだ。
ディスク容量不足になる人が多々いる事は、検索してみると分かる。
その対応策は、どれもこれも「ルートパーティションの容量増加」。
ディスク容量不足になった自分も、その作業をしそうになった。
しかし、容量不足の要因を冷静に考えてみた。
- 容量が増えやすいポイントはどこなのか?
- パッケージによる圧迫はどれくらいなのか?
- 必要なポイントだけ増やせばいいのではないか?
自問自答。
必要とされているのは開発作業用ディレクトリ
日々成長し、膨れ上がって行くは開発用に使っているディレクトリ。
だったら、そこだけ増やせばいいじゃない。
- rootパーティションの容量不足対策
- 作業用パーティションを作成し、作業データを移動すればrootパーティションの使用率を減らせる
- rootパーティションはシステム領域に特化させる
作業記録
ディスクサイズ算出。
2Gもあれば十分だろう。
$ echo $((2 * 1024 * 1024 * 1024)) 2147483648
ディスクイメージ作成
C:\> cd "C:\Program Files" C:\> fsutil file createnew work_fs.img 2147483648
configにwork_fs.imgを追加
kernel=vmlinux cobd0="C:\Program Files\coLinux\root_fs_new.img" cobd1="C:\Program Files\coLinux\swap.img" cobd2="C:\Program Files\coLinux\work_fs.img" root=/dev/cobd0 ro initrd=initrd.gz mem=256 eth0=tuntap cofs0=C:\
coLinux起動後、マウントポイント作成
$ sudo -s # mkswap /dev/cobd1 # mkfs.ext3 /dev/cobd2 # mkdir /mnt/work_fs
/etc/fstab設定
# vi /etc/fstab # cat /etc/fstab proc /proc proc defaults 0 0 /dev/cobd0 / ext3 noatime,errors=remount-ro 0 1 /dev/cobd1 none swap sw 0 0 /dev/cobd2 /mnt/work_fs ext3 noatime,errors=remount-ro 0 1 cofs0 /mnt/windows cofs defaults 0 0
新しい領域を含めて再マウント
# mount -a
作業領域作成と引っ越し
# mkdir /mnt/work_fs/$(project) # mv /opt/$(project) /mnt/work_fs/.
symlinkを張って論理的に同じディレクトリ構造に直す
# ln -s /mnt/work_fs/$(project) /opt/$(project)
まとめ
- ルートパーティションはそんなに増えて行かないはず
- 作業ディレクトリやログが成長していく
- 必要な部分だけ増やせばいい
2008年11月11日
CodeReposにはとにかく色々な物が登録されている
その色々な物の中にはホームディレクトリにおける各種ドットファイルがある。
個人的には.emacsを管理する程度で、他のドットファイルはほぼ初期状態のまま。
最近ではcoLinuxやXenなどに一時的な開発環境を構築する時が多々ある。
その度にメイン作業環境の.emacsをコピーする。これの繰り返し。
CodeReposで.emacsを管理し始めたエントリを幾つかあった事を思い出した
「とりあえず」と言うレベルでコミット。
まだまだ整理の余地がある。
まともにEmacs-Lispを書いた事がないな。
勉強したい事が沢山ある。
オライリー・ジャパン
売り上げランキング: 70559
2008年10月08日
2008年09月28日
犯人はMicrosoft Office IME 2007
Office 2007をインストールすると、
何故かキーボード配列が日本語配列に戻ってしまった。
レジストリを確認してKBD106.DLLとなっている項目を探したら見つかった。
- regeditを起動
- 「\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\e0200411\Layout File」の値をKBD106.DLL から KBD101.DLへ変更
- システム再起動
発生する条件が良くわからないな。



