概要:SSL通信をするためだけに証明書を作る場合、オレオレ証明書で十分だと思うので、作った。
作成にあたっては、ここを参考にした。
Apache/SSL自己証明書の作成とmod sslの設定 - maruko2 Note.
注意:VirtualHostを使っている場合、SNI対応のブラウザでないと正しくアクセスできない。
- opensslをインストールする
- 証明書を作成する
- 秘密鍵を作成する。
openssl genrsa -aes256 2048 > server.key
秘密鍵は、パスフレーズで保護する。
server.key が秘密鍵。 - 秘密鍵を使って、署名要求ファイルを作成する。
openssl req -new -key server.key > server.csr
秘密鍵のパスフレーズを求められるので、入力する。
証明書へ埋め込みたい情報の入力が求められるので、入力する。
とりわけ、Common Name は使いたい web site のホスト・ドメイン名と一致させておくこと。
server.csrが署名要求ファイル。 - 署名要求ファイルからデジタル証明書を作成する。
第三者機関を使う場合、この工程を当該機関にさせるらしい。
オレオレ証明書の場合、署名要求ファイルの作成に使った秘密鍵で証明書を作成する。
openssl x509 -in server.csr -days 365 -req -signkey server.key > server.crt
秘密鍵のパスフレーズを求められるので、入力する。
server.crt がデジタル証明書。
- 秘密鍵を作成する。
- apache で SSL を有効化する。
- VirtualHost を使う場合は、設定する。
/etc/apache2/ports.conf
へ NameVirtualHost *:443 を追記。
sites-enabled で使っているディレクティブの、対象 VirtualHost の設定をコピペし、*:80 の部分を *:443 に書き換え。
下記を、DocumentRoot とかと同じく、ディレクティブの外に追記。SSLEngine on SSLCertificateFile /path/server.crt SSLCertificateKeyFile /path/server.key
- SSL を有効化。
a2enmod ssl
でモジュールを読み込ませ、apache2 の再起動で完了。
- VirtualHost を使う場合は、設定する。
- 設置場所にもよるけど、上記で作った全ファイルは chmod 400 * とかしといた方がいいと思う。
400 なのに apache サーバーが読み込みできているのは、謎。
で、せっかくなんで、StartSSL™ Certificates & Public Key Infrastructure でデジタル証明書を作った。
ここは、フリーで証明書発行できるくせに、Firefox に登録されているという稀有なルート証明機関。
ここでの発行にも手間がかかるが、いい加減眠いので、メモはこのへんで終了。
このサイトへ、https でアクセスしてもらえば、見えるはず。
注意:
- SNI 未対応のブラウザでは見られない。IEとか。(Vista 以降の OS 上で IE8 以降を使えば見られるはずが、
何故か我が家の IE9 では不可だった。不思議だ。)
IEは、TLS 1.1、TLS1.2を有効にすればOK。 - WordPress は、テーマやプラグインに SSL 未対応のものが多くあり、SSL で表示するはずのページ上に SSL を使わない URL 表記のソースが出力されてしまうことから、エラーが出る。
add_filter とかで http を https に書き換えたり、相対パスに変換したりすれば良いのだが、面倒くさいので本サイトではやってない。