apache2 Web サーバーで SSL を設定しようとしていますが、まったく機能しないようです。
チュートリアルに従って openssl を使用して証明書ファイルを作成し、/etc/apache2/sites-available/default-ssl.conf
適切に構成しました。
https で Web サイトを開こうとするたびに、セキュリティ上の問題によりブラウザが接続を拒否します。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
さて、この投稿が最近かなり頻繁に閲覧されていることに気付きました。どうやら多くの人が私と同じ問題に直面しているようです。もしそうなら、これが役に立つかもしれません。
私はウェブサーバー用の 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) certbotをインストールする
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
または、このサービスをcronジョブとして自動化する
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
私の証明書は「www.mydomain.com」用であり、「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
最近、自己署名証明書の有効期限が切れたときにこの問題に遭遇しました。Google で検索し、ある 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