フリーSSL設定の仕組み

はじめに

みなさんこんにちは。
新年からWEBアプリ開発はEnjoyしているでしょうか?

今回は、数々HPを制作してきて、SSL対応した方がよかったり良くなかったりいろいろありますが、SSL対応に必要なSSL証明書について、書いていきます

SSLとは?

SSLとは、簡単にいうとデータを盗み見られることを防止する仕組みです。

宅配便に例えると、数年前から増えている、住所を記載しない送り状のようなものです。
発送者は送り先の方の住所を知ることができませんよね?

このように、情報の一部又は全ての流出を防止する仕組みになります。

さらに身近に言うと、SSLに対応しているサイトはhttpsで始まるURLになっています。


Google Chromeの場合下記のような表示になります。

メリット

SSLのメリットはいくつかあります

  1. 暗号化
    通信データが第三者に盗み見られるのを防ぎます
  2. 信頼性
    サイトが本物であると証明する役割があります
  3. SEO優遇の可能性
    SSL対応サイトは検索エンジンの評価が高くなる可能性があります
  4. コストが無料(フリーSSL仕様の場合)
    フリーSSLは個人/商用関係なく、料金がかかりません

仕組み

  1. 証明書の発行
    HTTP検証とDNS検証を行い、Webサイトが依頼した人のものであるかを確認しています。
    HTTP検証では、WEBサーバーに何かしらの特定のファイルを置き、確認します。
    DNS検証では、ドメインのDNS設定に特定の情報を追加することで確認を行います。
    別途、証明書については書いていければと思います。
  2. 暗号化通信の設定
    証明書を発行/確認後、暗号化通信を設定します。
    WEBサーバーへ証明書がインストールされることで、httpsを使用した暗号化通信が行えるようになります。
  3. 証明書の更新
    証明書には期限があります。Let’s Encryptの場合90日のようです。更新は自動で行うことができるため、ユーザーは意識する必要はありません。

設定方法(レンタルサーバー)

レンタルサーバーでは、下記リンクをご参照ください。(2025-01-12時点)
HTTPS接続を強制するために、「HTTPSの強制」も実施することをお勧めします。


ロリポップ:https://user.lolipop.jp/?mode=login#ssl-free
Xサーバー:https://www.xserver.ne.jp/manual/man_server_ssl.php

サーバーへ設定

ここでは、WEBサーバーへディスパッチャがインストールされ、SSHアクセス権限がありドメインが正しく設定されている前提での設定方法の一つを紹介します。

下記コマンドを実行することで、自動更新まで設定することができます。
下記コマンドを実行し、[Certbot]というツールをインストールします。

sudo apt update
sudo apt install certbot
sudo apt install python3-certbot-nginx  # Nginxの場合
sudo certbot --nginx
sudo systemctl enable certbot.timer

HTTPSの強制

さらに、HTTPSを強制するよう設定することで、HTTPでアクセスしたとしてもHTTPSリクエストを行うよう指示します。
下記を、.htaccess ファイルへ追記することで強制されます。

<IfModule mod_headers.c>
    Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>

まとめ

今回は、フリーSSLの設定の仕組みについて、記載してみました。

レンタルサーバーでは、非常に簡単に設定が可能ですが、HTTPSを強制するためには、さらに設定が必要となります。

簡単に設定可能で、強力なセキュリティ機能ですので、ぜひ設定しましょう。

参考

参考リンク