web-dev-qa-db-ja.com

Apache SSL:サーバー証明書にサーバー名と一致するIDが含まれていません

Apache2ウェブサーバーにSSLを設定しようとしていますが、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'

これを解決する方法について何かアイデアはありますか?よろしくお願いします!

25
pixelmusic

さて、私はこの投稿が最近非常に頻繁に閲覧されていることに気づき、多くの人々が私と同じ問題に直面しているようです。もしそうなら、これはあなたを助けるかもしれません。

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

証明書は、外部の信頼できる認証局(CA)によって署名される必要があります。だから私はLet's Encryptに遭遇しました。これはあなたのためにすべての作業を行い、セットアップがさらに簡単であり、最高のものは絶対に無料です。

Installation

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 =

10
pixelmusic

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

2
BenjaminBrink

私の場合、関係する各ドメインの私の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>
1
user2267379

これらはエラーではなく、警告です。デフォルトのsslホストが定義されていて、証明書の共通名がクライアントが接続に使用するホスト名と一致している限り、定義されたサーバー名と一致しない証明書でmod_sslを実行することは十分に可能です。

後者はあなたの場合は真実ではないようです。 Jacobが言うように、正しい名前を共通名(またはエイリアス)として指定する必要がありますCSRを作成するとき

現在証明書に記載されている名前を確認するには:

openssl s_client -showcerts -connect ${HOSTNAME}:443

マシンに複数の証明書がインストールされており、同じIPアドレスで提供されている場合は、次のようになります。

openssl s_client -showcerts -connect ${HOSTIP}:443 -servername ${HOSTNAME}

($ {...}値は、関連する値で置き換える必要があるプレースホルダーです)。

1
symcbean

私は最近、自己署名証明書の有効期限が切れたときにこの問題に遭遇しました。 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
0

私はCENTOS 8でSSLを使用できるソリューションを見つけました

  1. オープンnano /etc/httpd/conf.d/ssl.conf
  2. Sslをssl.confファイルに追加します
  3. 完了
SSLCertificateFile /etc/letsencrypt/live/radiolatina.ru/fullchain.pem 

SSLCertificateKeyFile /etc/letsencrypt/live/radiolatina.ru/privkey.pem 
0

特定のドメインのconfファイルだけでなく、ServerNameとServerAliasをdefault-sslファイルに追加する必要がありました。
これにより、厄介なエラーが解消されました。

0
Gaius Gracchus