開発者ドキュメント

Ubuntu14.04用のApacheでSSL証明書を作成する方法

序章

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

これが何を意味するのかを正確に調べてみましょう。

「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サーバー保護する方法の詳細については、このリンクを確認してください。

ジャスティン・エリングウッド
モバイルバージョンを終了