ServersMan@VPSでのHTTPS対応

やりたい事

このサイト、保護されていない通信と出てくるので、さすがに対応したい。つうかサーバー自身のメンテ大丈夫か、というのもあるがこれはまた別の話。

準備

特になし。

作業

Serversman @vpsの設定

Let’s Encrypt とかいうのを使うと無料で証明書が取得できるとのこと。90日ごとにスクリプトで更新するとかなんだとか。とりあえずserversman @vpsで設定を試みる。

しかし、CentOS7だと、https://kozenist.com/free-ssl-for-serversman-vps/とかを見ると、どうもserversmanで、yumがinitscriptの更新をexcludeしている設定があり、このスクリプトがインストールできないとか。

しかしながら、http://blog.livedoor.jp/blackwingcat/archives/1977599.htmlあたりを見ると、initscriptの問題がすでに解消されているとか。これが本当なら、標準の方法で出来そう。まずはバックアップを取ってyum.confのexcludeをコメントアウト、yum updateをしてみる。Completeしたので、MyDTIから停止->起動。無事アクセスできた。ついでにサーバーのメンテもできた風。

無事アクセスできたので、素直にLet’s Encrypt の設定をすすめる。

Let’s Encryptの設定

まず基本的なところから

https://letsencrypt.org/getting-started/を見てみると、

To enable HTTPS on your website, you need to get a certificate (a type of file) from a Certificate Authority (CA). Let’s Encrypt is a CA. In order to get a certificate for your website’s domain from Let’s Encrypt, you have to demonstrate control over the domain. With Let’s Encrypt, you do this using software that uses the ACME protocol which typically runs on your web host.

Certbotを使えとあるのでそれはなんだというと、そちらを見てみる。

Certbot is a free, open source software tool for automatically using Let’s Encrypt certificates on manually-administrated websites to enable HTTPS.

との事。専用なのな。

https://certbot.eff.org/にアクセスして、自分の環境をメニューから選択すると(Apache on CentOS7)、次のページに飛ばされる。

  1. SSH into the server
  2. Enable EPEL repo
  3. Enable the optional channel
  4. Install Certbot
  5. Choose how you’d like to run Certbot
  6. Set up automatic renewal
  7. Confirm that Certbot worked

と、やること自体は簡単そう。

5でcertbotを使ってみると、

Unable to find a virtual host listening on port 80 which is currently needed for Certbot to prove to the CA that you control your domain. Please add a virtual host for port 80.

と怒られる。よくあることらしい。バーチャルホストを作れ、とのことか。

/etc/httpd/conf.dの下に適当にvhost.confとか作っておく(READMEを参照)

<VirtualHost *:80>
 DocumentRoot /var/www/html
 ServerName www.keitark.com
</VirtualHost>

あとはここで気を取り直して、sudo certbot –apacheを実行すると、こんどはエラーなく Congratulations!まで実行。conf.dのところに、ssl用のvhosts-le-ssl.confとか作ってくれる、便利。

これでOKとおもってアクセスすると、まだ自己証明のまま。うーん。

Apache設定

単独IPでの複数VirtualHostの罠にはまるを見ると、なるほどいろんなところでVirtualhostの設定がされている。同じように、httpd -S で見ると、

VirtualHost configuration:
*:443                  is a NameVirtualHost
         default server www.keitark.com (/etc/httpd/conf.d/ssl.conf:56)
         port 443 namevhost www.keitark.com (/etc/httpd/conf.d/ssl.conf:56)
         port 443 namevhost www.keitark.com (/etc/httpd/conf.d/vhosts-le-ssl.conf:2)
*:80                   www.keitark.com (/etc/httpd/conf.d/vhosts.conf:1)

真っ先にssl.confのdefaultを見に行くようになっていた。それはそっちを参照するなぁ。ssl.confの ## SSL Virtual Host Context以下をばっさり消したら、ちゃんと参照するようになったが、本当にこれでよいのだろうか。あと自分のサイトの設定を事細かに記すのはどうなのか。

とりあえず証明書はちゃんとしたものを使うようになった。よかった。自動化は後でよいか(後でちゃんとやった)。

証明書の確認

https://www.ssllabs.com/ssltest/ で見てみたが、いちおうちゃんとできているっぽいDNS CAAだけNO、あとで調べる(たぶん調べない)。

WordPressの設定

画像入りのページなどにアクセスすると、まだchromeから保護されていない通信、と怒られる。これは、http時代の画像とかか。

Really Simple SSLとかいうプラグインいれて、ボタン一発で全部変更してくれた。すごい。

最後に

serversman @vpsのcentos7で唯一困っていた、initscriptsが更新できない問題がいつの間にか解決していたのが一番大きかった。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です