#はじめに
iOSアプリのOTA配信でplistがSSL指定を余儀なくされたことが動機としてあり
どうせ理解するなら
- nginxでWebサーバをたててみたい
- SSL化のTips欲しい
上記を中心に進めてみました。
この手法でのインフラ・ネットワーク系のセキュリティについては検証しきれていません。あくまでOTAの検証環境の運用ベースでの構築で、不要時は落としておくサーバであることを前提に進めます。
#環境
##サーバ
###さくらインターネット:さくらのVPS
一番安い980円を使っています
##端末
Mac:OS X 10.9.2
- ターミナル
- Cyberduck(SFTPで転送)
- キーチェーンアクセス
- Safari
#作業フロー
##サーバセットアップ
こちらのサイトを参考に作業フローを決めました。
VPS 借りたら、せめてこれくらいはやっとけというセキュリティ設定
http://dogmap.jp/2011/05/12/vps-security/
###ログインをパスワードから公開鍵認証に変更
こちらの内容にそっての作業です。
http://qiita.com/chkk525@github/items/0a027173d56bb09dab0b
パスワードでのログインをきる前に、公開鍵認証とも有効にした状態で
sshdをrestartし、公開鍵認証を確認したら
PasswordAuthentication no
を行う方が安全かとは思います。そしてもう一度sshdのrestart
ssh [ユーザ名]@[接続先サーバ] -i [RSA秘密鍵]
例) ssh hoge@fuga.ne.jp:/home/hoge/ -i ~/.ssh/id_rsa
###自己署名証明書の作成
keyを作る
$ openssl genrsa 2048 > server.key
keyをもとに証明書を作る
$ openssl req -new -x509 -days 3650 -key server.key -out server.crt
これで秘密鍵(server.key)と証明書(server.crt)ができました
###Webサーバ構築:nginx
リポジトリを登録して
$ sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
インストール
$ sudo yum install nginx
バージョンを確認
$ nginx -v
起動
$ sudo service nginx start
ブラウザなどで表示できるかをみます。
###ドキュメントルート
centOS6でnginxを使った場合は下記のようになりました。
環境によって異なることもありそうなので、公式サイトを見てください。
/usr/share/nginx/html/
###自己署名証明書を配置
/etc/nginx/conf.d/の下にconfファイルがいくつかあり
example_ssl.conf を元に作成しました。これは一例です。
# HTTPS server
#
server {
listen 80;
listen 443 ssl;
server_name fuga.ne.jp;
ssl_certificate /etc/nginx/cert/server.crt;
ssl_certificate_key /etc/nginx/cert/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
証明書と秘密鍵をconfファイルに記載したパスに配置します。
confファイルの記述が正しいか確認
sudo /etc/init.d/nginx configtest
何事もなければ再起動します
sudo /etc/init.d/nginx restart
###SSL化の確認
作成したserver.crtを端末に取り込む前、取り込んだ後の状態で正常稼働しているかどうかの確認が可能です。
Macの場合はcrtファイルをダブルクリックでキーチェーンアクセスに取り込み、SafariからSSL化したサーバへアクセスし正常稼働しているかを見ます。
#参考URL
SAKURA VPS がカーネルパニックを起こした!
http://thinkit.x-sys.net/p1024.html
CentOS6で最新版のnginxをyumでインストールする
http://nomnel.net/blog/install-nginx-in-centos6-using-yum/
さくらVPS: 契約してからの作業メモ
http://qiita.com/chkk525@github/items/0a027173d56bb09dab0
OpenSSLで自己署名証明書を作成する
http://inaz2.hatenablog.com/entry/2013/11/27/212224
nginxでSSLを立てるまで
http://qiita.com/edo_m18/items/7e0e4b6d8e1e1d314184
nginxの最近のブログ記事
http://heartbeats.jp/hbblog/nginx/
#さいごに
apacheはともかくnginxはまるで触ったことのない状態で、Webサーバの立ち上げまでは数十分くらい。時間をとられたのが
- VPSを使っていることでのはまり:カーネルパニックと接続不良
- openSSLやSSLについての調査
iPhone構成ユーティリティを使ってのiOSデバイスとサーバ疎通は今回ちょっと長く書きすぎましたので別途用意します。