インストールする

インストールする

私はapache2 WebサーバーにSSLを設定しようとしていますが、まったく機能しないようです。

チュートリアルに従って、opensslを使用して証明書ファイルを作成し、/etc/apache2/sites-available/default-ssl.conf正しく設定しました。

httpsを使用してWebサイトを開こうとするたびに、ブラウザはセキュリティ上の問題により接続を拒否します。私のサイトが正しく設定されていないと思います。

私のサーバーでは、/var/log/apache2/error.log私のサーバー証明書にサーバー名と一致するIDが含まれていないという警告が表示されます。

[Mon Apr 10 11:03:24.041813 2017] [mpm_prefork:notice] [pid 1222] AH00169: caught SIGTERM, shutting down
[Mon Apr 10 11:03:30.566578 2017] [ssl:warn] [pid 661] AH01909: 127.0.0.1:443:0 server certificate does NOT include an ID which matches the server name
[Mon Apr 10 11:03:31.579088 2017] [ssl:warn] [pid 1194] AH01909: 127.0.0.1:443:0 server certificate does NOT include an ID which matches the server name
[Mon Apr 10 11:03:31.592958 2017] [mpm_prefork:notice] [pid 1194] AH00163: Apache/2.4.25 (Raspbian) OpenSSL/1.0.2k configured -- resuming normal operations
[Mon Apr 10 11:03:31.593136 2017] [core:notice] [pid 1194] AH00094: Command line: '/usr/sbin/apache2'

この問題を解決する方法についてのアイデアはありますか?注目してくれてありがとう!

答え1

まあ、最近この投稿がたくさん照会されたのを見たら私と同じ問題を経験している方が多いようです。もしそうなら、これが役に立つかもしれません。

私は簡単なステップバイステップのチュートリアルに従ってWebサーバー用のSSL証明書を作成しました。多くのチュートリアルと同様に、私が従ったチュートリアルでもOpenSSLを使用して自己署名証明書が生成されました。はい自己署名、ここで問題が発生します。証明書が自己署名されているため、ブラウザはサーバーを信頼できません。まあ、私はできません...

証明書は信頼できる外部認証局(CA)に署名する必要があります。だから私は偶然発見した。暗号化しようすべてを行い、設定が簡単で、何よりも完全に無料です。

インストールする

1)OpenSSLを使用して作成された古いSSL証明書ファイルを削除します。

2)Debianからcertbotクライアントをインポートするには、バックポートをオンにします。これにより、未完成ソフトウェアに穴が開ける可能性があることに留意する必要があります!実行している作業がわかっている場合にのみパッケージをインストールしてください。

echo 'deb http://ftp.debian.org/debian jessie-backports main' | sudo tee /etc/apt/sources.list.d/backports.list

3) Linuxシステムアップデート

sudo apt-get update

4) 証明書ロボットの設置

sudo apt-get install python-certbot-apache -t jessie-backports

5)Apache ServerNameとServerAliasの設定

sudo nano /etc/apache2/sites-available/000-default.conf

6) Apache構成ファイルの編集

<VirtualHost *:80>
    . . .
    ServerName example.com
    ServerAlias www.example.com
    . . .
</VirtualHost>

7)文法が正しいことを確認してください

sudo apache2ctl configtest

8) 設定ファイルが正常に見える場合は、Apache サーバを再起動します。

sudo systemctl restart apache2

9) certbot を使用して証明書を設定し、画面の指示に従います。

sudo certbot --apache

修正する

すべてのLet's Encrypt証明書は3ヶ月間有効です。更新するには手動で実行できます

sudo certbot renew

または、このサービスをクローン操作で自動化します。

sudo crontab -e

そして毎週月曜日の午前2時30分に更新を呼び出すには、次の行を入力してください。

. . .
30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log

ここでより詳細なチュートリアルに従うことができます。https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-debian-8

答え2

私の場合、各関連ドメインのApache SSL設定ファイルを置き換えることでこの問題を解決しました。

ServerName mydomain.com
ServerAlias www.mydomain.com

通過:

ServerName www.mydomain.com
ServerAlias mydomain.com

私の証明書は「mydomain.com」ではなく「www.mydomain.com」のものだからです。

完全なApacheドキュメント:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerAdmin [email protected]
        ServerName www.mydomain.com
        ServerAlias mydomain.com
    DocumentRoot /home/mydomain.com/public_html
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|ico|png)$ \ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ \no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

    <Directory />
        Options +FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /home/mydomain.com/public_html>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride All
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>


ErrorLog ${APACHE_LOG_DIR}/error.log

LogLevel warn
SSLCertificateFile /etc/letsencrypt/live/www.mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.mydomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

答え3

他のSSLエラーが表示されず、httpd.confファイルで「LogLevel debug」を設定しようとした場合、このエラーメッセージはhttpd.confファイルに「Listen 443」がないことを示すこともあります。

答え4

最近自己署名証明書が期限切れになったときにこの問題が発生しました。私はインターネット検索を介してWebサイトから新しい証明書を生成するコマンドをコピーしました。

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/apache2/ssl/apache.crt

私のApache設定ファイル:/etc/apache2/sites-available/default-ssl.conf。証明書ファイルとキーファイルは、次のファイル名を参照します。

    SSLCertificateFile  /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key

したがって、私の場合、このエラーはSSL証明書を生成するときに証明書キーファイルの正しい場所を提供するだけで修正するのが簡単です。

したがって、これは私が正しく使用して入力する必要があるコマンドです。

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

関連情報