オレオレ証明書

[`evernote` not found]
Bookmark this on Hatena Bookmark
Share on Facebook
LINEで送る

概要: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 に書き換えたり、相対パスに変換したりすれば良いのだが、面倒くさいので本サイトではやってない。