#navi2(RaspberryPi,toc,prev,next) ---- #contents ---- * Webサーバー(Apache2)のインストール [#kf76844b] **インストール [#z6094a07] # apt-get install apache2 **設定 [#b34ddb09] ***言語優先順位設定 [#cad512f3] mods-enabled/negotiation.conf # <変更> # 日本語を優先に変更 # LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv tr zh-CN zh-TW LanguagePriority ja en ca cs da de el eo es et fr he hr it ko ltz nl nn no pl pt pt-BR ru sv tr zh-CN zh-TW ***サーバーの不要な情報を返さない。 [#rf2c9e7a] conf-enabled/security.conf # <変更> # HTTP response ヘッダーに最小限の情報のみ返す。 #ServerTokens Minimal #ServerTokens OS #ServerTokens Full ServerTokens Prod # <変更> # シグネチャー情報を出力しない ServerSignature Off #ServerSignature On ***ディレクトリの中身を表示しないようにする [#rc13add7] apache2.conf <Directory /var/www/> # <変更> # ディレクトリの中身を表示しないようにする # Options Indexes FollowSymLinks Options FollowSymLinks AllowOverride None Require all granted </Directory> ***不要な機能を停止する。 [#jf5936e6] # a2disconf serve-cgi-bin ***HTTPS [#faadda7a] +apache の ssl モジュールとサイトを有効にする。 # a2enmod ssl # a2ensite default-ssl +下記ファイルを修正する sites-enables/default-ssl.conf # <変更> # 生成した証明書ファイル、キーファイルを指定する。 # 以下は、Let's Encrypt にて生成した場合の例 # ※<ドメイン名>は適宜変更のこと。 # # SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem # SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key SSLCertificateFile /etc/letsencrypt/live/<ドメイン名>/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/<ドメイン名>/privkey.pem ***HTTPS のみを使用する。(http:// アクセスを https:// にリダイレクトする。) [#ad8f868c] /etc/apache2/sites-enabled/000-default.conf # 追加 # http:// アクセスを https:// にリダイレクトする <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off # # [備考] # AWS の ELB を使用している場合は、下記設定で良い。 # RewriteCond %{HTTP:X-Forwarded-Proto} =http RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent] </IfModule> # HTST にて HTTPS を利用するように指示する Header set Strict-Transport-Security "max-age=86400" 次のコマンドでリライトとヘッダー設定を有効にする。 # a2enmod rewrite # a2enmod headers **SSL関係設定 [#r35e47d3] /etc/apache2/ssl.conf #* SSLCipherSuite HIGH:!aNULL SSLCipherSuite !3DES:!aNULL:EDH+HIGH:ECDH+HIGH:-AES128:-3DES:-DSS:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA SSLHonorCipherOrder on SSLProtocol all -SSLv2 -SSLv3 -TLSv1 ***備考 [#rcae01bb] -Cipher は、 次のコマンドで有効になる組み合わせの確認ができます。 openssl ciphers -v '<SSLCiperSuite の値>' 例) openssl ciphers -v '!3DES:!aNULL:EDH+HIGH:ECDH+HIGH:-AES128:-3DES:-DSS:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA' -Openssl の Cipher の値と IANA の対応は下記URLが参考になります。 https://testssl.sh/openssl-iana.mapping.html -次のURLで SSL のテストが可能です。 https://www.ssllabs.com/ssltest/analyze.html **設定の反映 [#m93f6250] Apache2 を再起動する。 service apache2 restart ---- **HTTPS の証明書の作成方法 [#oc88b6e3] ***自己証明証を用いた HTTPS 対応 [#ydf6b5e2] T.B.D. ***Let's Encrypt を用いた HTTPS 対応 [#c9306221] ドメインを取得している場合、Let's Encrypt を用いて、 ブラウザ等にて警告等がでない HTTPS 通信が可能です。 +インストール # apt-get install certbot +ルーターなどの設定を変更し、外部から HTTP, HTTPS にアクセスできる状態にする +Apache を一旦停止する。 # service apache2 stop +証明書生成 # certbox certonly いくつか問い合わせがあるので適宜回答する。 以下、選択例 > 1. ACME CAの認証方法 2: Spin up a temporary webserver (standalone) を選択 > 2. e-mail e-mail アドレスを入力 > 3. 利用規約同意 A : Agree を選択 > 4. ドメイン名入力 ドメイン名を入力 +以下に、サーバー証明書とキーファイルが生成されます。 certificate file : /etc/letsencrypt/live/<ドメイン名>/fullchain.pem; certificate key file : /etc/letsencrypt/live/<ドメイン名>/privkey.pem; ---- #navi2(RaspberryPi,toc,prev,next)