インターネットにはオープンしない linux サーバーの ssl 設定
インターネットにはオープンしない linux サーバーの ssl 設定
設定する手順を
日本語で初学者にもわかりやすいように
具体的なコード、コマンドライン、注意事項を加えて
ステップバイで解説してください
既存の Virtualhost の設定変更が必要な場合はこの手順も別途解説してください
前提:
linux mint
ip アドレス 192.168.0.50 255.255.255.0
apache2 documentROOT /var/www/html/
mysql
php
laravel
wordpress
Linux Mint 上の Apache2 サーバーに SSL を設定する手順
前提条件
- IP アドレス: 192.168.0.50
- Apache2 ドキュメントルート: /var/www/html
- Apache2, MySQL, PHP, Laravel, WordPress がインストール済み
手順
1. Apache2 のインストールと確認
まず、Apache2 がインストールされているか確認します。インストールされていない場合は以下のコマンドでインストールします。
sudo apt update
sudo apt install apache2
2. SSL モジュールの有効化
Apache2 の SSL モジュールを有効にします。
sudo a2enmod ssl
sudo systemctl restart apache2
3. SSL 証明書の作成
自己署名証明書を作成します。以下のコマンドを実行します。
sudo mkdir /etc/apache2/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
コマンド実行中にいくつかの質問が表示されますが、適宜入力してください。
4. SSL 設定ファイルの作成
default-ssl.conf
ファイルを作成します。
sudo nano /etc/apache2/sites-available/default-ssl.conf
以下の内容を追加します。
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
</IfModule>
5. SSL サイトの有効化
作成した SSL サイトを有効にします。
sudo a2ensite default-ssl
sudo systemctl reload apache2
6. Apache2 のポート設定確認
Apache2 がポート 443 をリッスンしているか確認します。
sudo nano /etc/apache2/ports.conf
以下の行が含まれていることを確認してください。
Listen 80
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
7. Apache2 の再起動
Apache2 を再起動して設定を反映させます。
sudo systemctl restart apache2
8. ファイアウォールの設定
ファイアウォールが有効な場合、HTTPS トラフィックを許可します。
sudo ufw allow 'Apache Full'
9. 動作確認
ブラウザを開き、以下の URL にアクセスします。
https://192.168.0.50
自己署名証明書を使用しているため、ブラウザに警告が表示されることがありますが、これは正常です。警告を無視して続行してください。
また、ターミナルから cURL コマンドを使用して HTTPS 接続を確認します。
curl -k https://192.168.0.50
まとめ
これで、Linux Mint 上の Apache2 サーバーに SSL を設定する手順は完了です。Laravel や WordPress の設定は、通常の HTTP と同様に動作しますが、HTTPS に対応するために URL の設定を変更する必要がある場合があります。
3 種類のライセンスで類似のコードが見つかりました
iyo.conf
ファイルを SSL 対応の VirtualHost に変更するためには、以下のように設定を追加します。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName iyo.local
DocumentRoot /var/www/html/iyo
<Directory /var/www/html/iyo>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/iyo_error.log
CustomLog ${APACHE_LOG_DIR}/iyo_access.log combined
LogLevel debug
# Redirect HTTP to HTTPS
RewriteEngine on
RewriteCond %{SERVER_NAME} =iyo.local
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName iyo.local
DocumentRoot /var/www/html/iyo
<Directory /var/www/html/iyo>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/iyo_error.log
CustomLog ${APACHE_LOG_DIR}/iyo_access.log combined
LogLevel debug
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
# Adjust the paths to your SSL certificate and key files as needed
</VirtualHost>
この設定では、HTTP リクエストを HTTPS にリダイレクトし、ポート 443 で SSL を有効にしています。SSL 証明書とキーのパスは適宜変更してください。
iyo.conf
の VirtualHost を有効にするためには、以下のコマンドを実行します。
sudo a2ensite iyo.conf
sudo systemctl reload apache2
これにより、iyo.conf
が有効になり、Apache が設定を再読み込みします。