[無料SSL入門]httpからhttpsに設定する方法

公開日:2018年08月14日 更新日:2018年09月04日 ホームページの発注・依頼・料金・相場について

オウンドメディアのアイキャッチ(原本)

皆さんはSSL導入というとどういったイメージが沸きますでしょうか。経験者であれば、レンタルしているサーバ内でCSRと呼ばれる申請書を作成し、その申請書をSSL/TLS業者へわたした後、業者からCRTと呼ばれる証明書と中間証明書が貼付けられたメールを受信する、という流れを経験したかもしれません。

今回は、業者を使わずにサーバ内だけで完結する、無料で使えるSSL/TLSの実装方法を説明いたします。

関連記事

SSL/TLSの事前準備と知識

SSL/TLSを使うことで、ホームページのURLに含まれるスキーマ(httpやhttpsなど)をセキュアに保つことが出来ます。閲覧者からの信頼も大幅にアップしますので、カート機能を持つショップ系のサイトや、お問い合わせが重要な位置を占めるサービスを運用している方は、今後は必須となりますので、この記事で具体的な実装方法を試してみてください。

まず前提となる知識ですが、以下のような専門用語が出てきます。すべて覚える必要はありませんが、いくつかは良く出てくる単語です。

  • ターミナル
    • お使いのコンピュータから目的のサーバへ接続し、コマンドを実行するためのアプリ
    • macOSならiTerm2、WindowsならRLoginなど
  • コマンド
    • Linuxコマンドと呼ばれる専用のコマンド
    • macOSのターミナルで入力するコマンドも同種類
  • SSL/TLS
    • 証明書。SSLという呼び方は古く、現在ではTLSが主流
    • 歴史的経緯からSSLという名前が残っている
    • 詳しくはこちらの記事を参照
  • CSR
    • 申請書
    • SSL導入したいサーバ内で作成しておく
  • CRT
    • 証明書
    • そのサーバがセキュアであることが保証されるための証明書
  • Let’s Encrypt
    • 今回使用する無償のSSL/TLS
    • 「Let’s Encrypt クライアント」から「Certbot クライアント」に名称変更された
  • httpd
    • ApacheやNginxなどの、Webアクセスを担当するデーモン
  • ドキュメントルート
    • SSL/TLSを適用したいサイトの一番トップに表示される場所
    • /var/www/htmlなど

予め、SSL/TLS対応したいサーバへの接続情報などは用意しておいてください。今回はサーバのOSがCentOS7、httpデーモンはNginxという前提で進めていきます。

具体的な手順としては、以下のような流れで作業を進めます。

  1. ターミナルでサーバに接続
  2. rootユーザにスイッチ
  3. certbotのインストール
  4. certbotで証明書作成
  5. httpd側の設定ファイルに証明書などのパスを記述して再起動

 

 

サーバへログイン

まずはサーバへログインします。ログインすると以下のような情報が画面に表示されます(「user」や時刻部分は環境によって変わってきますのでこの通りではないはずです)。

Last login: Mon Aug  6 11:55:42 2018 from 123.45.67.189
[user1@localhost ~]$

rootユーザになりましょう。rootになるためにはrootのパスワードが必要ですが、一般ユーザがすでにrootになれる権限があれば、sudoコマンドでもOKです。

Last login: Mon Aug  6 11:55:42 2018 from 123.45.67.189
[user1@localhost ~]$ sudo -s

以降、プロンプトが「$」から「#」変わります。

[root@localhost ~]#

certbotをインストールします。

[root@localhost ~]# yum install certbot

Let's Encrypt!

それでは早速証明書をインストールしてみましょう。その際、ドキュメントルートとドメイン名を指定する必要がありますので、予め調べておいてください。

certbotコマンドで証明書を発行します。

[root@localhost ~]# certbot certonly --webroot -w <ドキュメントルート> -d ドメイン名

次はメールアドレスを入力する必要があります。受信可能なメールを登録しましょう。

[root@localhost ~]# Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel):

次は、利用規約に同意するために、Aをタイプします。

:A

非営利団体EFFからのメールを受け取るかどうか聞かれるので返答します。特に問題がなければYでOKです。

:Y

これで証明書のインストールが完了しました。

 

httpデーモンの設定

certbotコマンドで、証明書や鍵ファイルがインストールされました。
それぞれ以下の場所にシンボリックリンクが貼られます。

  • サーバ証明書(公開鍵)
    • /etc/letsencrypt/live/<ドメイン名>/cert.pem
  • 中間証明書
    • /etc/letsencrypt/live/<ドメイン名>/chain.pem
  • サーバ証明書+中間証明書
    • /etc/letsencrypt/live/<ドメイン名>/fullchain.pem
    • nginxだとssl_certificateに指定
  • 秘密鍵
    • /etc/letsencrypt/live/<ドメイン名>/privkey.pem
    • nginxだとssl_certificate_keyに指定

早速Nginxの設定ファイルを以下のように編集してみましょう。

server {
        listen 443;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/<ドメイン名>/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/<ドメイン名>/privkey.pem;
        ssl_protocols  SSLv2 SSLv3 TLSv1;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers   on;
・
・
・

}

listen 80;の設定をまるごとコピーし、改めてlisten 443;の設定として記述するのがよいでしょう。

この状態でNginxを再読込し、ブラウザで確認してみましょう。

 

最後に

今回使用したLet’s Encryptですが、試用期間は半年です。半年後には更新作業を行わなければなりません。

事前に登録したメールに通知が行くはずですので対応が漏れることは無いとは思いますが、次回は自動更新のための処理なんかを説明してみたいと思います。

小川 星児

株式会社ビータイズ CTO


コンピュータ歴37年。8歳の頃ゲーム改造のためにプラミングを始めたのがきっかけ。動物はネコとフクロウとペンギンが好き。映画、音楽、楽器、イラスト、ツーリング、日帰り旅行、英語、ゲーム、カラオケ、ボウリング、釣り、太極拳、ウォーキングなどに精を出したり出さなかったりする100%日替わりな純一自由人。 細かい事どころか大事な事まで気にしないという社会的に手に余るおっちゃん。 常にダイエット中。野菜を食べないおっちゃんを叱ってくれるような奥さん(人間である必要があります)を大募集中。


PAGE TOP