2 flat logo on transparent 256
2018-01-06

Amazon Linux 、Nginx、CertbotでLet’s Encryptを利用し、無料でSSL対応する

Ssl

今回無料のSSL対応化サービス Let’s Encryptを利用して AWSで運用しているサービスをSSL化したので、その対応方法を記載します。

Let’s Encryptとは何か?

全てのWebサーバーを暗号化することを目的としたプロジェクトです。アカマイ・テクノロジーズやシスコ社などがスポンサーになっており、独自ドメインを取得していれば無料で利用できるSSLサーバー証明書を発行しています。ちなみに有料のSSLサーバー証明書はセコム社、ベリサイン社などが発行されているものがあります

事前準備

Let’s Encryptを使う前に下記を準備する必要です。

  1. AWSのインスタンスで443ポートを開ける

  2. Python2.7がインストール済み

  3. Nginxがインストール済み

  4. 独自ドメイン取得済み

※Let’s EncryptはPythonで動作しているため、Pythonのインストールが必須です

Certbotをインストールする

certbotをインストールするディレクトリは特に指定がないので、 今回はホームディレクトリにcertbotをインストールする

$ cd ~
$ git clone https://github.com/certbot/certbot
$ cd certbot
./certbot-auto

Certbotで証明書を発行

$ sudo ./certbot-auto certonly \
  --agree-tos \
  --webroot \
  -w /usr/share/nginx/html
  -d test-xample.com
  -m example@example.com

certonly:証明書の発行のみを実行する。

–agree-tos:ライセンス条項に同意する。

–webroot:発行された証明書の一時保存にWebサーバの指定ディレクトリを使うWebrootモードを指定する。

-w Webrootモード時に利用する証明書の一時保存ディレクトリを指定する。

-d 発行する証明書のFQDNを指定する。-dオプションを複数指定すれば、一枚の証明書で複数のFQDNを証明できる。

-m 証明書の期限切れなどを通知するメールアドレスを設定する。

※AWS実行時の--debug付与は不要になっている。

Nginxの設定を修整する

下記で証明書の設定とhttpアクセスをhttpsへリダイレクトさせる。

  server {
    listen 80 default;
    server_name test
    return 301 https://$host$request_uri;
  }
#上記でhttpアクセスをhttpsへリダイレクト
  server {
    listen  443 ssl;
    server_name test;
    ssl_certificate /etc/letsencrypt/live/ドメイン/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ドメイン/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

nginxをリスタート

sudo service nginx restart

以上になります。

httpsでアクセスしているのに、アドレスバー上に保護された通信と表示されない場合は、画像などの静的コンテンツがhttps化されていない可能性があります。

また、https化した後は、GoogleアナリティクスとGoogle Search Consoleの設定を変更する必要があります。

詳細はサイトをhttps化した後にはGoogleアナリティクスとGoogle Search Consoleの設定変更が必要の記事をご覧ください

簡単にSSL化が可能!無料で使えるCDN Cloudflare(クラウドフレア)の登録方法を解説

Nginxで一部海外IPからのアクセスを遮断する

無料ヒートマップ作成ツールUser Heat(ユーザーハート)の登録・利用方法

AWSのEC2(Linux)へEBSを追加しマウントする

Let's Encryptを更新しようとしたら発生するエラーと対応方法を解説します。

前の記事
次の記事