はじめに
以前、本BlogのSSL対応を進めているという話を書きました。この一部が完了したので記録しておこうと思います。
通信内容の暗号化がされました
以前の投稿でウェブサイトのSSL対応をすると、二つのことができる様になると言う話をしました。通信内容の暗号化とサイトの認証です。これはどういうことかと言うと、ウェブサイトを見る人のPCもしくはスマフォなどと、表示しているウェブサイトの間の通信が暗号化されると言う話と、今表示しているそのウェブサイトが誰かが悪意を持って人を騙すために作った偽物サイトでは無く、正真正銘のそのサイトだと言うことを第三者が証明したその証明書を確認できる、と言う話です。
今回は、この通信内容の暗号化の部分を実装しました。
実は以前から不思議に思っていたのですが、SSL対応させていないはずのこのサイトですが、httpsでアクセスしてもアクセスできてしまうのです。なんでなのかなぁと思いつつも深追いはせずに放置していました。
で、何の気なしにどんな証明書が入っているのか見てみたところ、なんだかデフォルトの設定の様なものが入っているのがわかったので、これはもしかしたらLet’s Encryptとか使わないで自分でゴリゴリやってしまえばできるのではないかと考えたのがことの始まりです。
やったこと
やったことは至って簡単で、OSに元々インストールされているOpenSSLを使って鍵ペアを作成し、それをウェブサーバーの適切な場所に保管すると言うそれだけの話です。
参考にしたのはこちらのサイトです。
色々とごちゃごちゃと書いてあるのですが、重要なのはOSのコンソールでこのコマンドを実行し、鍵ペアを作る
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/server.key -out /etc/ssl/certs/server.crt
ここで作成したキーペアを適切なフォルダに配置する。私の環境は、Nginx on Bitnamiなので、/opt/bitnami/nginx/confフォルダにserver.crtとserver.keyと言うファイルがあるので、これを置き換える。
置き換えたら、Nginxをrestartすれば晴れてSSL対応の完了です。
やれていないこと
さて、ここまできたので各種ブラウザからの警告が消えるのかと思ったら、やはりまだ消えていませんでした。
何でか?なんてのは当たり前すぎるのですが、これは通称オレオレ証明書を入れているからです。
つまり、このサイトが正真正銘のサイトであることを自分自身で証明していると言っているので、そりゃ疑わしいですよね。「俺いいやつだよ。」って言うやつほど怪しいって話です。このハードルを超えるには、信頼できる第三者に「こいついいやつだよ」って言ってもらわなければならないのですが、それをただでやろうと思うと例のLet’s Encryptを使わなければならないのですが、そのためにはDNS周りに手を入れなければならず、ちょっと嫌だなぁと言う感じです。
ただまぁ、元々の目的は半分しか達成されていないので、どこかのタイミングで実装しようと思います。
まとめ
- オレオレ証明書(Self certification)を使って、思考の整理箱のSSL対応を実現しました
- オレオレ証明書なので、各種ブラウザでまだまだ警告が出るので、この辺はそのうち対応します