序章
TLS 、つまりトランスポート層セキュリティ、およびその前身である SSL 、セキュアソケットレイヤーは、通常のトラフィックを保護された暗号化ラッパーに配置するために作成されたセキュアプロトコルです。
これらのプロトコルにより、トラフィックが途中で傍受されて読み取られる可能性なしに、リモートパーティ間でトラフィックを安全に送信できます。 また、認証局によって信頼され、本物であるとサーバーを確立することにより、インターネット全体でドメインとサーバーのIDを検証するのに役立ちます。
このガイドでは、Ubuntu 14.04サーバーでApache用の自己署名SSL証明書を作成する方法について説明します。これにより、サーバーへのトラフィックを暗号化できます。 これは、サーバーのIDをサードパーティで検証するメリットはありませんが、単に情報を安全に転送したいという要件を満たしています。
注:自己署名証明書の代わりにLet’sEncryptの使用を検討することをお勧めします。 Let’s Encryptは、ほとんどのWebブラウザで信頼されている無料のSSL/TLS証明書を発行する新しい認証局です。 チュートリアルをチェックして開始してください: Ubuntu14.04でLet’sEncryptを使用してApacheを保護する方法
前提条件
始める前に、いくつかの構成がすでに処理されている必要があります。
このガイドでは、sudo権限を持つroot以外のユーザーとして操作します。 Ubuntu 14.04初期サーバーセットアップガイドの手順1〜4に従ってセットアップできます。
また、Apacheをインストールする必要があります。 まだ稼働していない場合は、次のように入力することですぐに修正できます。
sudo apt-get update
sudo apt-get install apache2
ステップ1—SSLモジュールをアクティブ化する
SSLサポートは実際にはUbuntu14.04Apacheパッケージに標準装備されています。 システムでSSLを利用できるようにする必要があります。
次のように入力して、モジュールを有効にします。
sudo a2enmod ssl
SSLを有効にした後、変更が認識されるようにするには、Webサーバーを再起動する必要があります。
sudo service apache2 restart
これにより、SSLを構成するように構成すれば、WebサーバーでSSLを処理できるようになります。
ステップ2—自己署名SSL証明書を作成する
まず、Apacheの構成階層内にサブディレクトリを作成して、作成する証明書ファイルを配置します。
sudo mkdir /etc/apache2/ssl
キーと証明書を配置する場所ができたので、次のように入力して、両方を1つのステップで作成できます。
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
これが何を意味するのかを正確に調べてみましょう。
- openssl :これは、証明書、キー、署名要求などを作成および管理するためにOpenSSLによって提供される基本的なコマンドラインツールです。
- req :これは、X.509証明書署名要求(CSR)管理のサブコマンドを指定します。 X.509は、SSLが鍵と証明書の管理のために準拠している公開鍵インフラストラクチャ標準です。 新しいX.509証明書を作成したいので、これが必要です。
- -x509 :このオプションは、証明書要求を生成する代わりに、自己署名証明書ファイルを作成することを指定します。
- -nodes :このオプションは、パスフレーズでキーファイルを保護したくないことをOpenSSLに通知します。 パスワードで保護されたキーファイルがあると、サービスが再起動するたびにパスワードを入力する必要があるため、Apacheが自動的に起動するのを妨げます。
- -365日:これは、作成する証明書が1年間有効であることを指定します。
- -newkey rsa:2048 :このオプションは、証明書要求と新しい秘密鍵を同時に作成します。 これは、事前に秘密鍵を作成しなかったために必要です。 The
rsa:2048
OpenSSLに2048ビット長のRSAキーを生成するように指示します。 - -keyout :このパラメーターは、作成される秘密鍵ファイルの出力ファイルに名前を付けます。
- -out :このオプションは、生成する証明書の出力ファイルに名前を付けます。
「ENTER」を押すと、いくつかの質問が表示されます。
要求される最も重要な項目は、「Common Name(eg サーバーFQDNまたはあなたの名前)」。 証明書に関連付けるドメイン名を入力するか、ドメイン名がない場合はサーバーのパブリックIPアドレスを入力する必要があります。
質問の部分は次のようになります。
国名(2文字のコード)[AU]:米国の州または州の名前(フルネーム)[一部の州]:ニューヨークの地域名(例:市)[]:ニューヨーク市の組織名(例:会社)[インターネットWidgits Pty Ltd]:あなたの会社の組織単位名(例:セクション)[]:キトン部門の一般名(例: サーバーFQDNまたはあなたの名前)[]: your_domain.comメールアドレス[]: your_email @ドメイン .com
キーと証明書が作成され、 /etc/apache2/ssl
ディレクトリ。
ステップ3—SSLを使用するようにApacheを設定する
証明書とキーが利用できるようになったので、仮想ホストファイルでこれらのファイルを使用するようにApacheを設定できます。 Apache仮想ホストの設定方法について詳しくは、こちらをご覧ください。
設定ファイルを基にする代わりに 000-default.conf
のファイル sites-available
サブディレクトリ、この構成は default-ssl.conf
デフォルトのSSL構成を含むファイル。
今すぐroot権限でファイルを開きます。
sudo nano /etc/apache2/sites-available/default-ssl.conf
コメントを削除すると、ファイルは次のようになります。
デフォルト :443>ServerAdminウェブマスター @localhost DocumentRoot / var / www / html ErrorLog $ {APACHE_LOG_DIR} /error.log CustomLog ${APACHE_LOG_DIR}/access.logSSLCertificateFile上のSSLEngineの組み合わせ/etc/ssl/certs/ssl-cert-snakeoil.pemSSLCertificateKeyFile/ etc / ssl / private /ssl-cert-snakeoil.key SSLOptions + StdEnvVars SSLOptions + StdEnvVars BrowserMatch「MSIE[2-6]」
nokeepalivessl-unclean-shutdown
downgrade-1.0 force-response-1.0 BrowserMatch“ MSIE [17-9]” ssl-unclean-shutdown
これは少し複雑に見えるかもしれませんが、幸いなことに、ここでのほとんどのオプションについて心配する必要はありません。
仮想ホストに構成する通常の設定(ServerAdmin、ServerName、ServerAlias、DocumentRootなど)を設定し、ApacheがSSL証明書とキーを検索する場所を変更します。
結局、こんな感じになります。 赤のエントリは、元のファイルから変更されました。
デフォルト :443>ServerAdmin管理者 @例 .com ServerName your_domain.com ServerAlias www.your_domain.com DocumentRoot / var / www / html ErrorLog $ {APACHE_LOG_DIR} /error.log CustomLog ${APACHE_LOG_DIR}/access.logはSSLCertificateFile /etc / apache2 / ssl/apacheでSSLEngineを結合しました。 crt SSLCertificateKeyFile /etc/apache2/ssl/apache.key SSLOptions + StdEnvVars SSLOptions + StdEnvVars BrowserMatch「MSIE[2-6]」
nokeepalivessl-unclean-shutdown
downgrade-1.0 force-response-1.0 BrowserMatch“ MSIE [17-9]” ssl-unclean-shutdown
終了したら、ファイルを保存して終了します。
ステップ4—SSL仮想ホストをアクティブ化する
SSL対応の仮想ホストを構成したので、それを有効にする必要があります。
これを行うには、次のように入力します。
sudo a2ensite default-ssl.conf
次に、Apacheを再起動して、新しい仮想ホストファイルをロードする必要があります。
sudo service apache2 restart
これにより、作成したSSL証明書を使用して暗号化されたコンテンツを提供する新しい仮想ホストが有効になります。
ステップ5—セットアップをテストする
すべての準備が整ったので、サーバーのドメイン名またはパブリックIPアドレスにアクセスして構成をテストできます。 https://
このようなプロトコル:
https:// server_domain_name_or_IP
サーバーが信頼する認証局の1つによって署名されていないため、ブラウザがサーバーのIDを確認できないという警告が表示されます。
これは、証明書に自己署名したためです。 信頼できる認証局とのやり取りがないため、証明書はユーザーに対してサーバーを検証しませんが、通信を暗号化することはできます。
これは予想されることなので、「Proceedanyway」ボタンまたはブラウザにある同様のオプションを押すことができます。
これで、コンテンツに移動します DocumentRoot
SSL仮想ホスト用に構成したもの。 今回はトラフィックが暗号化されます。 メニューバーの鍵のアイコンをクリックすると、これを確認できます。
中央の緑色のセクションで、接続が暗号化されていることがわかります。
結論
これで、WebサイトでSSLが有効になっているはずです。 これは、訪問者とサイト間の通信を保護するのに役立ちますが、ブラウザが証明書の有効性を確認できないことを各ユーザーに警告します。
公開サイトの立ち上げを計画していてSSLが必要な場合は、信頼できる認証局からSSL証明書を購入することをお勧めします。
Apache の構成方法について詳しく知りたい場合は、ここをクリックしてください。 Linuxサーバーを保護する方法の詳細については、このリンクを確認してください。