◆ご挨拶
サイバーウェーブでエンジニアとして勤めております太田と申します。
主にアプリケーションの構築、サーバ設定、お客様からのお問い合わせ対応を担当しています。
◆今回のテーマ
前回のブログでは、RailsアプリケーションでのN+1問題について解説いたしました。
今回は分野を変え、WebサーバでHTTPS通信をする際に必要なSSL証明書の取得方法とインストールについて解説したいと思います。
HTTPS通信とは、SSLによって暗号化された通信プロトコルのことです。
詳細は後述しますが、セキュリティを担保するために通信は暗号化しておく必要があります。HTTPS通信は暗号化されているため、安全性の高い通信になっているのです。
◆HTTPS通信の仕組み
ブラウザがWebサイトにHTTPSでアクセスする際の流れは、下記の図のようになっています。
HTTPS通信ができるWebサーバを作ろうとした時、この図にある「証明書」と「秘密鍵」の取得とインストールが必要です。
この手順について解説していきます。
◆SSL証明書とは何か?
SSL証明書を一言で説明すると、「通信がどのようなアルゴリズムで暗号化されているかを証明するもの」です。
スマホや公衆Wifiの電波は不特定多数の人が使えるため、他人の通信を盗聴して悪用することもできてしまいます。
通信が暗号化されていることで、例えばクレジットカード、口座番号のようなデータが盗聴されたとしても、解読できないので悪用することができないのです。
◆SSL証明書の取得方法
SSL証明書は、基本的に第三者の「認証局」に発行してもらうものになります。
例えばサイバーウェーブのコーポレートサイトであれば、SECTIGO社の認証局から発行された証明書を使っています。
上記の画像はchromeブラウザですが、サイトにアクセスした際に左上の鍵マークから証明書情報を確認できます。
どのようなサイトでもHTTPS通信であればこの証明書情報を見ることができるので、有名な企業がどういった認証局を使っているか調べるのも面白いと思います。
具体的な申請方法はそれぞれ認証局やその代理店によって異なるため、ここでは解説しません。
ちなみに、金融機関のような攻撃の対象になりやすいサイトのSSL証明書は、身元を偽って証明書を取得されると重大な犯罪につながる可能性が高く、認証レベルの高い証明書を使っていることが多いです。
「認証レベル」とは取得申請から発行するまでのハードルのことで、厳しい審査があることで、証明書が偽サイトなどで悪用されるのを防いでいます。
◆SSL証明書のインストール
サイバーウェーブでは、SSL証明書インストール対象のWebサーバが特に統一されておらず、プロジェクトによって様々な組み合わせがあります。
今、私が管理している証明書だけでも下記の組み合わせがあります。
1. SSL証明書を代理店から取得 + nginx にインストール
2. SSL証明書を代理店から取得 + Apache httpd にインストール
3. SSL証明書をAWSで取得 + AWS ALBに インストール
4. お客様が取得した証明書を受領 + AWS ALBに インストール
上記で解説しているサイバーウェーブのコーポレートサイトでは、2のパターンでインストールしています。
上記の画像はApacheの設定ファイルの一部ですが、赤枠で囲った箇所がそれぞれ
「SSL証明書」、「秘密鍵」、「中間証明書」のファイルパスを記載している箇所です。
これがnginxの場合は証明書と中間証明書を結合し、ALBの場合はサーバ設定の変更必要なく、申請からインストールまでAWSコンソール上で完結します。
いろいろなパターンがありますが、Apache、nginx、IISのようなよく使われるWebサーバは、インストール方法を代理店がマニュアルページを用意していることが多いです。
◆まとめ
私はWebサーバについて学び始めた頃はSSL証明書が何なのかよく理解できず、つまずくことが多かったです。
どういった証明書を使うか、どのようにインストールするかは組織のポリシー、使うWebサーバによって異なるため、決まったやり方が無いのが難易度を引き上げる要因になっていると感じます。
通信の仕組みからWebサーバの設定まで幅広い知識を持つことで、最適な証明書の選択ができるかと思います。
サイバーウェーブでは一緒に働く仲間を募集しています
サイバーウェーブでは一緒に働く仲間を募集しています。当社は創業20年を機に「第2の創業期」として、事業を拡大する方針へと舵を切りました。
会社が急拡大しており、若いメンバーやインターン生がどんどん入社しています。個人の成長は、勢いのある環境のなかでこそ加速されるものです。成長事業に参画できるチャンスです!
サイバーウェーブはコード1行1行に対してこだわりを持って、プロ意識をもったエンジニアを育てている、技術力に自信のあるシステム開発会社です。社内には、創業23年のノウハウの詰まった研修コンテンツや、安定したシステム開発をするための手順が整っています。
実力のあるシステム開発会社だからこそ、経験を積みながら、実践的なシステム開発の技術も学ぶことができます。自信をもって主義主張ができる『飯が食える』エンジニアを目指していただきます。
エンジニアとしてしっかりと飯を食べていけるまでには、道のりは決して短くありません。長期で頑張り、エンジニアになるという強い思いがあれば、実戦的な開発経験と、周りの仲間とコミュニケーションしながら、しっかりと成長することができます。
当社のノウハウを余すことなく活かし、技術力を大きく伸ばしていただきます。ぜひ、エントリーをお待ちしております!