俺俺SSL(Debina + nginx)

識別情報を検証できません、とのダイアログが出てくるよくある身内のWEBサイトありますよね、それやってみました。

safariだとこの画面になります。
この画面が出てくる理由ですが、認証局にお金を出して手に入れるべき(健全である証拠の)証明証を自前で用意しているためです。
このサイトの証明証はまったく根拠ないしやばい連中に成り済ましされていたり偽装されているかもしれませんよ、と警告してくれています。

環境

  • Linux debian 2.6.32-5-amd64
  • nginx version: nginx/1.2.7
    • configure arguments: --user=www-data --group=www-data --with-http_ssl_module --with-http_realip_module
nginxの組み込み済モジュールの確認方法

実行ファイルにVオプションを食わせれば確認することができます。

$ nginx -V
nginx version: nginx/1.2.7
built by gcc 4.4.5 (Debian 4.4.5-8) 
TLS SNI support enabled
configure arguments: --user=www-data --group=www-data --with-http_ssl_module --with-http_realip_module

鍵を作る

$ cd /usr/local/nginx/conf
$ openssl genrsa -des3 -out server.key 1024
$ openssl req -new -key server.key -out server.csr
$ cp server.key server.key.org
$ openssl rsa -in server.key.org -out server.key
$ openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

設定ファイルを修正する

serverディレクティブ書く。
nginx.conf

    server {
        listen       443;
        ssl          on; 
        server_name  localhost;
   
        ssl_certificate /usr/local/nginx/conf/server.crt;
        ssl_certificate_key /usr/local/nginx/conf/server.key;
(抜粋)

証明証と鍵の場所は、絶対パスがよいのではとのアドバイス頂きました。

設定を読み込む

sudo ./nginx -s reload

何も出力されなければOK

エラーっぽい文字が出たら

nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:84

このエラーはSSLのモジュールが組み込まれていないとの出力なので、(自分はそうだった)

$ ./nginx -V

で確認して、--with-http_ssl_module が組み込まれていることを確認する。
なければ、

$ ./configure --with-http_ssl_module 
$ make
$ sudo make install

でビルドし直す。

ブラウザで確認する

httpではなく、httpsであることで俺俺SSLを使うことができます。(自戒)

https://localhost

参考記事

http://jit.sanaechan.net/blog/archives/78 ←コマンド毎に説明があって丁寧
http://d.hatena.ne.jp/rivertop/20100102/1262406331 ← わかりやすい
http://dogmap.jp/2011/05/10/nginx-ssl/ ←スタイリッシュ