https://〜で取得されるウェブページはSSL接続といって暗号化されたセキュアな通信が保障されています。
- 認証局から安全なサイトであるという信頼を得ている
- 暗号化通信を行うのでハッキングの被害に遭いにくい
ということが保障されて通信されます。
1.の認証局で認証された証明書を得るためには最低でも3000円/年からの証明書代金を支払う必要があるのだけど、
2.の暗号化通信だけを目的とする場合、自分で証明書を発行してしまうことも可能なようです。
そして、この自前の証明書を「オレオレ証明書」と呼ぶらしいのです。
ブラウザでオレオレ証明書のページを読み出した場合「この証明書は信用できません注意して下さい!」という旨のメッセージが出るけど、「暗号化された通信」自体は可能になります。
僕は部屋のエアコンを遠隔操作するためにSSL接続をするようにしました。
方法は
という順番で行います。
オレオレ証明書の発行
参考にさせていただいたサイト
Debian 7(Wheezy)でSSL証明書を作成し、Apacheへ設定する - Symfoware
まずopensslがインストールされているか確認
openssl
実行すると
OpenSSL>
となればインストールされているので、
OpenSSL>exit
でひとまず終了。
インストールされていなければ
apt-get install openssl
でインストールする。
/etc/apache2/ssl ディレクトリに移動(sslディレクトリが無ければ作る)して
秘密鍵を生成
sudo openssl genrsa -des3 -out server.key 1024
を実行
任意のパスの設定と確認の2回入力。
このままではApacheが起動する度パスがずっと問われるそうなので
sudo openssl rsa -in server.key -out server.key
で削除します。
sudo openssl req -new -days 3650 -key server.key -out server.csr
自分で使う分にはテキトーでいい。
国コード「JP」
地域(県)「Okinawa」
都市(市)「Okazakishi」
組織名「RaspberryServer」
部門名「MyServer」
ドメインアドレス「www.sample.com」
メールアドレス「mail@gmail.com」
要求書と秘密鍵を元に証明書を発行
sudo openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650
これで10年間有効な証明書が発行されます。
sever.csrは証明書要求書
server.keyは秘密鍵
server.crtは証明書
改ざんされないために権限を変更
chmod 400 server.*
Apacheにオレオレ証明書の登録
参考にさせていただいたサイト
ぽこつん研究所 » 自宅サーバー構築メモ(Debian squeeze)#18 ApacheをSSL対応にする(HTTPS)
テンプレがあるのでほぼそのまま使えます。
/etc/apache2/sites-availableへ移動
cd /etc/apache2/sites-available
デフォルトのdefaulet-ssl.confをvhost-ssl.confとしてコピーして、
コピーしたvhost-sslを編集
nano vhost-ssl.conf
デフォルトでssl-cert-snakeoil.pemとssl-cert-snakeoil.keyが設定されているのでコメントアウトして先ほど証明書を作ったファイルserver.crtとserver.keyを設定して保存。
# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/apache2/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.
# SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
# SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
これで先ほど発行した証明書が使えるようになりました。
ApacheのSSL通信設定
先ほど設定したサイトを有効化して、
sudo a2ensite vhost-ssl
Apacheを再起動させます。
sudo systemctl restart apache2
https://アドレスへ接続してみます。
再起動させてSSL通信が出来ない場合、SSLモジュールがインストールされていないもしくはモジュールが有効化されていない可能性があります。
sudo apt-get install libapache2-mod-ssl
SSLモジュールを有効化する。
sudo a2enmod ssl