linux
未分類

インターネットにはオープンしない 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 が設定を再読み込みします。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です