はじめに
VultrのVPSでサーバー費用を安くできてもほとんどのブラウザではhttpsが使えないと警告表示されて信頼度が著しく低下してしまうのでSSLを使いたいが、SSLは高い。そこで無料SSLであるZeroSSLを試してみた。Let's Encryptの方が有名ですが、手続きがちょっと面倒くさい印象で、私はZeroSSLの方がブラウザだけで手続きが終わるので楽だと思います。
激安VPSのVultrで紹介者からのリンク経由でアカウント登録すると$100のクレジットをもらえるので、CentOS7, 8, MySQL 5.7, 8などの組み合わせをいろいろ試しました。このキャンペーンはいつ終わるか分からないので、興味のある方は以下のリンクからアカウント登録してください。あなたはクレジットをもらえるし、私にも多少のクレジットが入るらしいので、Win-Winです。
このリンクで$100もらえます
私もリファラー経由でアカウントを作ったので$100もらえました。これで最初にあれやこれや試すのは無料でできます。
1. ZeroSSLでSSL証明書を取得
(1) 無料版SSL申込のサインアップ
(2) SSL証明書を申し込む
自分のドメインを指定するとwww無しと有りが自動的に出る。どうやら、hogehoge.com
とwww.hogehoge.com
のようにサーバー名としてはwww
しか指定できないらしいが、ほとんど場合はwww
でしょうから問題無いでしょう。任意の名前やドメイン全体に有効なSSL証明書は有償サービスになっています。
ドメイン情報を自動取得させて自分で入力しなくて済むように指定する。
ドメインの所有者かどうかを確認するが、Emailが一番楽なので選択した。ただし、admin@あなたのドメイン
のメールアドレスが有効である必要がある。
Verify Domain
ボタンを押すと確認メールが前の画面で指定したメールアドレスに届く。!
メールが来たらGo To Verification Page
リンクをクリックする。
メールに記載されているVerification Codeを入れる。
ドメイン所有の確認が終わったら、SSL証明書発行手続きに進む。
WebサーバーはNginxなのでServer Type
に指定してDownload
ボタンを押すとSSL証明書がダウンロードできる。
以下の画面になったら、SSL証明書をVPSのNginxで使えるように設定する。(2.に記載の手順)
2. SSL証明書をVultr VPSのNginxに入れる
$ scp -i ~/.ssh/vultr certificate.crt deploy@あなたのVPSのIPアドレス:/var/www/myapp/
$ scp -i ~/.ssh/vultr private.key deploy@あなたのVPSのIPアドレス:/var/www/myapp/
[deploy@vultr myapp]$ sudo mv certificate.crt /etc/ssl/
[deploy@vultr myapp]$ sudo mv private.key /etc/ssl/
[deploy@vultr myapp]$ cd /etc/ssl
[deploy@vultr ssl]$ chmod 644 certificate.crt
[deploy@vultr ssl]$ sudo chown root.root certificate.crt
[deploy@vultr ssl]$ ls -l
total 4
-rw-r--r--. 1 root root 2305 Sep 5 18:40 certificate.crt
Installing SSL Certificate on NGINXの手順に従ってNginxでSSLを有効化する。
# Settings for a TLS enabled server.
#
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name www.あなたのドメイン;
root /usr/share/nginx/html;
ssl_certificate "/etc/ssl/certificate.crt"; <=ここを修正
ssl_certificate_key "/etc/ssl/private.key"; <=ここを修正
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
ZeroSSLの画面でCheck Installation
ボタンを押すとSSLが有効になっているか確認して結果が出る。
以上で作業完了ですが、ブラウザからhttps://あなたのサーバー
でアクセスしてSSL接続されているか確認して終わりです。当然ながら、あなたのVultr VPSサーバーのIPアドレスがDNSであなたのドメインのアドレスとして名前解決できる必要があります。
3. 90日ごとにSSL証明書を更新する
無料のSSL証明書の有効期限は90日なので、90日ごとに毎回証明書を取得するか自動更新の仕組みを構築する。ZeroSSLのダッシュボードで有効期限が確認できるので、残り少なくなったら新しいSSL証明書を取得してNginxに入れる。以下の手順でキャンセルすると無料プランが使えるようになる。
Tips
SSL証明書を更新する時に無料プランが選択できなくなっていた場合はPending Validationステータスになっている証明書がないかどうか確認する。これがあるとQuota数に数えられてしまって無料プランの上限に達して更新できなくなってしまう場合がある。
4. 無料再更新の回数制限
Google検索で見つかる古いZeroSSLの記事では回数無制限に永久に無料で使えそうな記述のものが多いが、実際には同一ドメインの更新は3回までという制限がある。これ以降は有料プランにする必要がある。サポートの問い合わせたので間違い無いです。
Thank you for reaching out to ZeroSSL.
To clarify, on the Free Plan, you can create 3x independent 90-day certificates for different domains or create one 90-day certificate for one domain and renew it two times.
Please see how our quota is calculated:
👉 How Is the Quota Calculated?
I hope this clarifies.
Best regards,
******
ZeroSSL Customer Success
5. 終わりに
趣味でサーバーを持ちたいとか、ちょっとした個人事業程度のビジネスアイデアでサーバー構築するような時は初期費用を限りなく小さくしたいので、SSLを無料で使えるのはうれしい。ビジネスが成長して利益がでるようになってから有償サービスを使ったり、サーバー負荷が高くなったらAWSに移行すれば良いと思います。
参考記事
無料の SSL 証明書が得られる ZeroSSL を使ってみた
ZeroSSL(ゼロエスエスエル)についてまとめ
ZeroSSLの証明書を無制限にcert-managerで発行する
Installing-SSL-Certificate-on-NGINX
Cancelling an SSL Certificate