Debian8用のApacheでSSL証明書を作成する方法
序章
このチュートリアルでは、SSL証明書で保護されたApacheサーバーのセットアップと構成について説明します。 チュートリアルが終了すると、HTTPS経由でサーバーにアクセスできるようになります。
SSLは、大きな整数をその大きな素数に分解するという数学的難易度に基づいています。 これを使用すると、秘密鍵と公開鍵のペアを使用して情報を暗号化できます。 認証局は、このようなセキュリティで保護された接続の信頼性を検証するSSL証明書を発行できます。同様に、サードパーティのサポートなしで自己署名証明書を作成できます。
このチュートリアルでは、自己署名証明書を生成し、必要な構成を行い、結果をテストします。 自己署名証明書はテストには最適ですが、ユーザーにブラウザーエラーが発生するため、本番環境にはお勧めしません。
代わりに有料の証明書を取得したい場合は、このチュートリアルを参照してください。
前提条件
このチュートリアルに従うには、次のものが必要です。
- 1つの新しいDebian8ドロップレット
- このチュートリアルのステップ2と3に従ってセットアップできるsudo非rootユーザー。
- OpenSSLがインストールおよび更新されました(デフォルトでインストールする必要があります)
- sudo apt-get update
- sudo apt-get upgrade openssl
テスト目的で、OpenSSLがインストールされた2台目のコンピューターが必要になる場合があります。
- 別のLinuxドロップレット
- または、Unixベースのローカルシステム(Mac、Ubuntu、Debianなど)
ステップ1—Apacheをインストールします
このステップでは、組み込みのパッケージインストーラーを使用します。 apt-get
. パッケージ管理を大幅に簡素化し、クリーンインストールを容易にします。
前提条件で指定されたリンクで、更新する必要があります apt-get
とインストールしました sudo
パッケージは、他のLinuxディストリビューションとは異なり、Debian8には付属していません sudo
インストールされています。
ApacheがHTTPSサーバーになります。 インストールするには、次のコマンドを実行します。
- sudo apt-get install apache2
ステップ2—SSLモジュールを有効にする
このセクションでは、サーバーでSSLを有効にします。
まず、ApacheSSLモジュールを有効にします。
- sudo a2enmod ssl
デフォルトのApacheWebサイトには、SSLを有効にするための便利なテンプレートが付属しているため、ここでデフォルトのWebサイトをアクティブ化します。
- sudo a2ensite default-ssl
Apacheを再起動して、これらの変更を有効にします。
- sudo service apache2 reload
ステップ3—自己署名SSL証明書を作成する
まず、秘密鍵と証明書を保存できる新しいディレクトリを作成しましょう。
- sudo mkdir /etc/apache2/ssl
次に、新しい証明書をリクエストして署名します。
まず、新しい証明書とそれを保護するための秘密鍵を生成します。
- The
days
フラグは、証明書が有効であり続ける期間を指定します。 この例では、証明書は1年間有効です - The
keyout
フラグは、生成されたキーへのパスを指定します - The
out
フラグは、生成された証明書へのパスを指定します
- sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
このコマンドを呼び出すと、一連のプロンプトが表示されます。
- 共通名:サーバーのIPアドレスまたはホスト名を指定します。 証明書はWebサイトのドメイン(またはIPアドレス)と一致する必要があるため、このフィールドは重要です
- 他のすべてのフィールドには、独自の裁量で入力してください。
回答例を以下の赤に示します。
InteractiveYou are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
——-
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:NYC
Organization Name (eg, company) [Internet Widgits Pty Ltd]:DigitalOcean
Organizational Unit Name (eg, section) []:SSL Certificate Test
Common Name (e.g. server FQDN or YOUR name) []:example.com
Email Address []:[email protected]
秘密鍵と証明書を保護するためのファイル権限を設定します。
- sudo chmod 600 /etc/apache2/ssl/*
3桁のアクセス許可コードの詳細については、Linuxアクセス許可のチュートリアルを参照してください。
これで、証明書とそれを保護する秘密鍵をApacheで使用できるようになりました。
ステップ4—SSLを使用するようにApacheを設定する
このセクションでは、SSLキーと証明書を使用するようにデフォルトのApache仮想ホストを構成します。 この変更を行うと、サーバーはデフォルトサイトのHTTPリクエストではなくHTTPSの提供を開始します。
を使用してサーバー構成ファイルを開きます nano
またはお気に入りのテキストエディタ。
- sudo nano /etc/apache2/sites-enabled/default-ssl.conf
で始まるセクションを見つけます <VirtualHost _default_:443>
次の変更を行います。
- サーバー名の行を直接下に追加します
ServerAdmin
メールライン。 これは、ドメイン名またはIPアドレスにすることができます。
ServerAdmin webmaster@localhost
ServerName example.com:443
- 次の2行を見つけて、前に生成した証明書とキーの場所に一致するようにパスを更新します。 証明書を購入したか、他の場所で証明書を生成した場合は、ここのパスが証明書とキーの実際の場所と一致していることを確認してください。
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
これらの変更が行われたら、仮想ホスト構成ファイルが以下と一致することを確認してください。
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
ServerName example.com:443
DocumentRoot /var/www/html
. . .
SSLEngine on
. . .
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
ファイルを保存して終了します。
Apacheを再起動して変更を適用します。
- sudo service apache2 reload
一般的なApache仮想ホストの構成の詳細については、この記事を参照してください。
ステップ5—SSLを使用してApacheをテストする
このセクションでは、コマンドラインからSSL接続をテストします。
このテストは、(1)ローカルのUnixベースのシステム、(2)別のドロップレット、または(3)同じドロップレットのいずれかから実行できます。 外部システムから実行する場合は、パブリックインターネットを介してサイトにアクセスできることを確認します。
HTTPS443ポートを介して接続を開きます。
- openssl s_client -connect your_server_ip:443
出力の中央(キーの後)までスクロールすると、次のように表示されます。
Output—-
SSL handshake has read 3999 bytes and written 444 bytes
—-
. . .
SSL-Session:
. . .
もちろん、数字は可変ですが、これは成功です。 おめでとう!
プレス CTRL+C
出る。
URLにHTTPSを使用して、Webブラウザでサイトにアクセスすることもできます(https://example.com
). ブラウザは、証明書が自己署名されていることを警告します。 証明書を表示して、詳細が手順3で入力したものと一致することを確認できるはずです。
結論
これでチュートリアルは終了です。SSL証明書で安全に構成されたApacheサーバーが機能します。 OpenSSLの操作の詳細については、OpenSSLEssentialsの記事を参照してください。