apache2のウェブサーバーでSSLを設定しようとしているのですが、全くうまくいかないようです。
チュートリアルに従ってopensslで証明ファイルを作成し、/etc/apache2/sites-available/default-ssl.conf
を適切に構成しました。
私のウェブサイトをhttpsで開こうとするたびに、ブラウザはセキュリティの問題のために接続を拒否します。私のウェブサイトが正しく設定されていないと表示されます。
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'
これを解決する方法について何かアイデアがありますか?ありがとうございました。
さて、最近この投稿がよく見られているようなので、多くの人が私と同じ問題に直面しているようです。もしそうなら、これはあなたの助けになるかもしれません。
私は自分のWebサーバーのSSL認証を作成するための簡単なステップバイステップのチュートリアルに従いました。多くのチュートリアルがそうであるように、私が従ったチュートリアルの結果は、OpenSSLを使用した自己署名証明書でした。そう、自己署名、それが問題だったのです。ブラウザは、自分で署名した証明書のために、サーバーを信頼することができませんでした。まあ、私はどっちもやらないけど...。
証明書は外部の信頼できる認証局(CA)によって署名されなければなりません。そこで、私は Let's Encrypt を偶然見つけましたが、これはあなたに代わってすべての作業を行い、さらにセットアップも簡単です。
OpenSSLで作成した古いssl証明書ファイルを削除する。
Debianでcertbotクライアントを取得するためにbackportsを開く。これは未完成のソフトウェアに穴をあけることになります!パッケージのインストールは、自分が何をしようとしているのかが分かっているときだけにしてください。
echo 'deb http://ftp.debian.org/debian jessie-backports main' | sudo tee /etc/apt/sources.list.d/backports.list
sudo apt-get update
sudo apt-get install python-certbot-apache -t jessie-backports
sudo nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
. . .
ServerName example.com
ServerAlias www.example.com
. . .
</VirtualHost>
sudo apache2ctl configtest
sudo systemctl restart apache2
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
これらはエラーではなく、警告です。デフォルトの ssl ホストが定義されていて、証明書のコモンネームがクライアントが接続するために使用するホスト名と一致する限り、定義されたサーバ名と一致しない証明書で mod_ssl を実行することは十分に可能です。
あなたの場合、後者は当てはまらないようです。Jacobが言うように、CSRを作成する際に、コモンネーム(またはエイリアス)として正しいホスト名を指定する必要があります*。
現在、証明書にどのような名前(複数可)が記載されているかを確認するには。
openssl s_client -showcerts -connect ${HOSTNAME}:443
マシンに複数の証明書がインストールされ、同じIPアドレスで提供されている場合、。
openssl s_client -showcerts -connect ${HOSTIP}:443 -servername ${HOSTNAME}
(ここで、${...}の値はプレースホルダーであり、関連する値に置き換える必要があります)。
最近、自己署名証明書の有効期限が切れたときにこの問題に遭遇しました。 1つの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
私の場合、これを解決して、関連する各ドメインの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>