• 日本語
    • English (英語)
Avintonジャパン株式会社Avintonジャパン株式会社Avintonジャパン株式会社Avintonジャパン株式会社
  • サービス
    • Avinton Data Platform
    • エッジAIカメラ
    • プライベートクラウド
    • AIサービス開発
    • AI画像解析 – 無償PoC
  • 最新情報
    • ニュースリリース&イベント情報
    • 技術ブログ&インタビュー
  • アカデミー
    • Avintonアカデミー
    • Academy on Campus
  • 採用情報
    • Avintonで働く魅力
    • 新卒採用
    • プロジェクトコーディネーター職紹介
    • 求人
    • よくある質問
  • 企業情報
    • 会社概要
    • 代表からご挨拶
    • SDGsへの貢献
  • お問い合わせ

Certbotを使ってSSL証明書を発行し、HTTP通信を暗号化しよう

  • Python3.8 と OpenCV のインストール (Ubuntu20.04LTS)
  • ルーティング
  • postgreSQLへのshp fileのimport
  • NAT
  • PostGIS exercise
  • 三目並べ – 2.〇×を交互にゲーム盤に入るようにしよう
  • Docker 概要とセットアップ
  • 三目並べ – 3.勝敗がつくようにしよう
  • Docker Engineのubuntu上へのinstall
  • EC2からS3へ自動でぽいぽいアップロードするスクリプトの作成
  • 三目並べ – 4.「スタート」「リセット」ボタンをつけよう
  • 三目並べ – 5.先攻後攻を決めて、コンピュータ対戦にしよう(前編)
  • Apache Zeppelin 基本機能
  • Ruby on Rails を MySQLでセットアップ
  • 機械学習入門者向け Support Vector Machine (SVM) に触れてみる
  • AWSアカウントの作成と必ずやるべきセキュリティ対策
  • Scala 基礎
  • VLAN
  • Apache Spark 基礎
  • 機械学習を用いた画像分類
  • Ruby on Railsによる簡単なウェブアプリケーション
  • 正規表現とパイプ
  • 機械学習エンジニアに必要なスキル
  • Docker, Kubernetesの学び方について
  • Ubuntuの基本設定
  • PostgreSQL Setup
  • REDIS
  • Amazon EC2 インスタンスの初期設定をしよう
  • 軽量版Kubernetesディストリビューション – k0s クラスターの構築
  • Pythonの設定
  • GNS3のセットアップ
  • viエディタ
  • AWSのEC2インスタンスでWordPressブログを公開してみよう
  • Pythonでデータベースを操作する
  • Python2.7とOpenCVのインストール
  • ファイル操作コマンド
  • OpenCVのテストプログラム
  • グループとユーザー
  • Pythonで画像を分類するプログラムを作成する
  • AWS CLIをインストールしてコマンド操作しよう
  • Virtualisation and Container (仮想化とコンテナ) – Ansible, Docker and Kubernetes
  • Windows Server 2012 R2 Hyper-V
  • 困った時に使うコマンド
  • SparkMLによるKaggle Titanic生存者予測
  • PacketTracerのセットアップ
  • 一般グループのユーザーとグループ
  • AWS Route 53を使って独自ドメインのWebページを表示させてみよう
  • Kubernetesクラスター上へのOpenVINOモデルサーバーを使用したサンプルアプリケーションのデプロイ
  • プライバシーポリシー
  • VMware ESXi サーバー構築
  • 三目並べ – 6.先攻後攻を決めて、コンピュータ対戦にしよう(後編)
  • フロントエンド開発のための環境構築
  • フロントエンドのデモンストレーション
  • APIのデモンストレーション
  • CISCO 1800ルータセットアップ
  • ファイル検索コマンド
  • ESXi – Switchの追加とVLAN
  • 質問
  • 仮想化環境のディスク容量を拡張する
  • ユーザー権限とアクセス権
  • 三目並べ – 0.導入
  • テキスト処理
  • ESXi – VyOS
  • データベースへのデータロード
  • 機械学習入門者向け Naive Bayes(単純ベイズ)アルゴリズムに触れてみる
  • CCNA
  • ESXi – 小規模ネットワーク 構築
  • ファイル管理
  • 機械学習入門者向け ChainerRLでブロック崩しの学習
  • AWS CLIを使ってEC2のファイルをS3へアップロードしよう
  • Apache NiFiの環境設定
  • CSV import & export – Node.js, mySQL – 1
  • 機械学習入門者向け ランダムフォレストによる Kaggle Titanic生存者予測
  • NodeJSでWebアプリケーション開発 – Socket.IO編
  • CSV import & export – Node.js, mySQL – 2
  • Apache NiFi データパイプライン基礎
  • PCからルータ、スイッチへのSSH接続設定
  • 【Python入門】Python Numpy チュートリアル
  • SQL 便利な関数
  • PostgreSQLによるデータ分析
  • Apache NiFi Exercise
  • 機械学習入門者向け 分類と回帰の違いをプログラムを書いて学ぼう
  • NodeJSでWebアプリケーション開発 – React編
  • Pythonによるマルチスレッドプログラミング実践
  • Apache SparkとApache Zeppelinの概要と環境構築
  • Certbotを使ってSSL証明書を発行し、HTTP通信を暗号化しよう
  • DockerとApacheを使ってWebサーバーを構築しよう
  • NodeJSでWebアプリケーション開発 – React編
  • Redux基礎 – 主要な概念と用語
  • AmazonEC2とVPCでネットワークとサーバーを構築しよう
  • AWS入門者向け 初心者が最初に理解すべきEC2とVPCの基本的な用語解説
  • Linuxとは
  • Pandasによる構造化データ分析
  • ダイナミックルーティング
  • PostgreSQL – Python – Apache – Bootstrap
  • 三目並べ – 1.ゲーム盤を作ろう
Home Avintonアカデミー Certbotを使ってSSL証明書を発行し、HTTP通信を暗号化しよう

SSL通信による暗号化のイメージ-地球と通信網を背景に錠前が描かれている画像

IT業界ではセキュリティに対する意識が年々高まっています。

ショッピングサイトをはじめとした多くのWebサービスは誕生日やクレジットカード情報のやりとりが発生しますし、個人ブログではグーグルアドセンスやAmazonアソシエイトなどの広告ツールが当たり前のように使われている状況です。

上記のような広告配信ツールは、ユーザーの興味に応じた商品やサービスの広告を表示するため、Cookieや検索履歴、閲覧履歴など、サイトへのアクセスに関する情報を取得します。

通信が暗号化されていないと盗聴やなりすまし、データ改ざんのリスクがあり、ユーザーは安心してWebサービスを利用することができなくなってしまいます。

そのような背景から、サービスを提供する側は、ユーザーが安全にWebサイトへアクセスできるよう配慮する必要があります。

そこで今回は、Certbotを使ってSSL証明書を発行し、HTTP通信を暗号化します。

独自ドメインとDNSの設定が必要となりますので、↓こちらの記事で事前に設定を済ませましょう。

AWS Route 53を使って独自ドメインのWebページを表示させてみよう

SSL証明書とは

HTTP通信を暗号化するには次のファイルが必要となります。

  • ・サーバーの公開鍵(CSR)と秘密鍵(Key)
  • ・認証局(CA)が電子署名したSSL証明書(CRT)と中間CA証明書

SSL証明書はサーバについての情報と、サーバの公開鍵、証明書を発行した認証局の情報が署名されているファイルです。

サーバの公開鍵はクライアントとの通信を「暗号化」する際に使用し、署名は「なりすまし」を防ぐために使います。

署名は、証明書を発行するCAと呼ばれる第三者機関が、CSRの情報を元に行います。

中間CA証明書は、SSL証明書を発行する認証局またはその配下にある別の認証局によって署名されたファイルです。必須ではありませんが、セキュリティレベルの向上を理由に、中間CAを1つい上用いる階層構造とる認証が現在は主流となっています。

SSL証明書発行と設定の流れ

SSL証明書の発行には、次のような手順が踏まれます。

  • 1.自分のサーバーでCSRとKEYを作成
  • 2.CSRをCAへ送信して証明書の発行を申請
  • 3.CAから電子署名されたCRTと中間CA証明書を受け取る
  • 4.受け取った証明書類をWebサーバーへ設置する

SSL証明書発行と設置の流れ

この間にドメイン所有者の実在性の確認などが行われ、ランクの高い証明書の場合は発行までに10日間ほどかかる場合もあります。

これらの作業を手で行うのは非常に大変ですが、ランクの低い証明書であれば、Certbotを使って自動化が可能です。

Certbotとは

Certbotのwebページのトップ画像

Certbotは無料かつ自動でSSL証明書を発行できるツールです。

CSRとKEYファイルの作成からWebサーバーの設定まで自動で行ってくれます。

さらにCronと組み合わせることで、証明書の更新作業までも完全に自動化することが可能です。

証明書の署名と発行はLet’s Encryptと呼ばれる認証局によって行われます。

AWSにも AWS Certificate Manager と呼ばれる証明書管理サービスが存在しますが、 ELB または Cloud Front の使用が前提となっています。

ELB などは個人用途で利用するには料金的に少しハードルが高いため、このアカデミーコンテンツではCertbotを選択しました。

CertbotのインストールとSSL証明書の発行

それではCertbotを使って証明書を発行しましょう。

EC2インスタンスへSSHし、Dockerコンテナにログイン後、yumコマンドでインストールします。

1
yum -y install certbot

インストール後、次のコマンドで証明書を発行します。

1
certbot --apache certonly

Apacheの設定が自動で検出され下記のようにドメインがリストアップされるので、対象のものを選択します。

CertbotでSSL証明書を発行する様子

発行された証明書は /etc/letsencrypt/live/ ディレクトリの配下に置かれます。

Certbotで作成されたSSL証明書類の置き場所

VirtualHostの設定

発行したSSL証明書を設定します。

conf.d配下にconfファイルを新規作成し、

1
vi /etc/httpd/conf.d/vhost-ssl.conf

次の内容を追加してください。

1
2
3
4
5
6
7
<br />DocumentRoot "/var/www/html/"
ServerName YOUR_DOMAIN_NAME
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/YOUR_DOMAIN_NAME/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/YOUR_DOMAIN_NAME/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/YOUR_DOMAIN_NAME/chain.pem
  • ・SSLEngine on … SSL機能のON
  • ・SSLCertificateFile CERTFICATION_FILE … SSL証明書を指定
  • ・SSLCertificateKeyFile PRIVATE_KEY_FILE … 秘密鍵を指定
  • ・SSLCertificateChainFile CHAIN_FILE … 中間CA証明書を指定

ブラウザで対象のURLヘアクセスすると、HTTPS化されたことが確認できます。

正常にSSL暗号化されているか確認1

Webサイトに当てられているSSL証明書の確認方法

Chrome developerツールによる確認方法

Webサイトに当てられている証明書の情報をより詳しく調べたい時が、私たちにはあります。

そのような時、Google Chromeであれば次のように情報を確認することができます。

  • 1.Mac: Command + Option + I, Windows: F12 or Ctrl + Shift + I
  • 2.Securityタブを開く
  • 3.View certificateをクリック

Webサイトに当てられているSSL証明書の詳細をChromeのディベロッパーツールで確認している画像

Webサイトに当てられているSSL証明書の詳細をChromeのディベロッパーツールで確認している画像2

コマンドラインからの確認方法

もちろんコマンドラインから確認することもできます。

コマンドラインから確認するにはOpensslコマンドを使います。

下記はAvintonのホームページを対象にopensslコマンドを実行しています。

1
openssl s_client -connect www.avinton.com:443 -showcerts

Webサイトに当てられているSSL証明書の詳細をコマンドラインで確認している画像

httpからhttpsへのリダイレクト設定

SSL暗号化通信ができるようになりました。しかし今の設定では、暗号化されていないhttpのURLもネット上に存在していることになります。

httpとhttps両方のURLが存在していると、Wユーザーはどちらが正規のURLなのか混乱してしまいますし、アクセス解析が困難になります。また、Webサイトへのアクセスが2分化するため、SEOにも悪影響が出るでしょう。

http://~の設定を削除しても良いですが、その場合はhttpのURLをお気に入りに登録してくれたユーザーを置き去りにすることになります。

そこで、httpのURLからhttpsのURLへリダイレクトする設定を追加します。

ポート80番で設定したVirtualHostに下記を追記します。

1
2
RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]

RewriteEngine On … リダイレクト機能のON
RewirteRule A B [Option] … AからBへリダイレクトさせるための記述

Apacheのリダイレクトの設定

ここで設定しているRewriteRuleは301リダイレクトと呼ばれ、リダイレクト元のURLが存在しないことを示します。

この設定により、 http://~ へアクセスすると、 https://~ へリダイレクトされます。

まとめ

Certbotを用いたSSL証明書の発行とVirtualHostの設定、そしてリダイレクトの設定についてまとめました。

Webサービスを公開する時は、ユーザーが安全にWebサービスを利用できるよう通信を暗号化しましょう。

あなたも、Avintonでこのような最先端技術を習得し活用してみませんか?

社員の成長を導きながら、AIやビッグデータなどの最先端技術をプロジェクトに活用していくことが私たちのビジョンです。Avintonの充実した技術研修でスキルアップを図り、あなたのキャリア目標を一緒に達成しませんか?

採用情報

採用情報

採用情報

Avinton SDGs

SDGsへの貢献

Search

タグ

AI AI Big Data Big Data ccna Digital Transformation DX IoT IoT LPIC Python Ruby SDGs Webエンジニア イベント インタビュー インフラエンジニア エンジニア オンラインセミナー キャリアチェンジ コンテナ技術 サーバーエンジニア システム開発 データサイエンス データベース データ分析 データ解析 ネットワークエンジニア ビックデータ 人工知能 仮想化 勉強会 営業 就職活動 技術インターン 採用 新卒 新卒採用 新規事業 機械学習 派遣 深層学習 社員インタビュー 経営者交流会 転職
© 2022 Avinton | All Rights Reserved | プライバシーポリシー
  • サービス
    • Avinton Data Platform
    • エッジAIカメラ
    • プライベートクラウド
    • AIサービス開発
    • AI画像解析 – 無償PoC
  • 最新情報
    • ニュースリリース&イベント情報
    • 技術ブログ&インタビュー
  • アカデミー
    • Avintonアカデミー
    • Academy on Campus
  • 採用情報
    • Avintonで働く魅力
    • 新卒採用
    • プロジェクトコーディネーター職紹介
    • 求人
    • よくある質問
  • 企業情報
    • 会社概要
    • 代表からご挨拶
    • SDGsへの貢献
  • お問い合わせ
  • 日本語
    • English (英語)
Avintonジャパン株式会社