サーバーで Apache をsslで動作するように構成しようとしていますが、サイトにアクセスするたびに、ブラウザーに次のメッセージが表示されます。
SSL接続エラー。サーバーへの安全な接続を確立できません。これはサーバーの問題であるか、所有していないクライアント認証証明書を必要としている可能性があります。エラー107(net :: ERR_SSL_PROTOCOL_ERROR):SSLプロトコルエラー。
上記のエラーメッセージは、Google Chrome固有のもののようです。ただし、メッセージが異なっていても、サイトのSSLはどのブラウザーでも機能しません。
状況の背景:Ubuntu 10.04 desktop edition
を使用しています。
zend server
をインストールしてApache
をインストールしました(Apacheを自動的にインストールしました)。次に、openssl
をインストールしました。非httpsページはサイトで正常に機能します。
複数の証明書サイトからトライアル証明書を取得しようとしましたが、何も機能していません(同じエラー)。
以前、SSLが正常に機能する別のサーバーでサイトをホストしていました。また、そのサーバーのキーと証明書ファイルを使用しようとしましたが、同じエラーが発生しました。
ただし、ドメイン名とIPは同じままです。私のSSLCertificateFile
とSSLCertificateKeyFile
は正しいディレクトリとファイルを指している。
SSLVerifyClientも有効にしていません。
誰か提案があれば、それは最も高く評価されるでしょう。
@ User39604と同じ問題があり、さまざまなアドバイスに従わなければなりませんでした。彼がたどった正確なパスを覚えていないので、私のパスをリストします。
<?php echo phpinfo();?>
を使用してSSLがあるかどうかを確認します
必要であれば
A。Apache Sudo a2enmod ssl
でsslを有効にします
B。openssl Sudo apt-get install openssl
をインストール
C。ポート443が開いているかどうかを確認するSudo netstat -lp
D。必要に応じて、/etc/Apache2/ports.conf
を変更します。これは動作します
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/Apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
NameVirtualHost *:443
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
キーと証明書を取得する
A。ペアに対して認証機関(Comodo、GoDaddy、Verisign)に支払う
B。独自の生成*-以下を参照(テスト目的のみ)
設定を変更して(ubuntu12 /etc/Apache2/httpd.conf
-デフォルトは空のファイル)、適切な<VirtualHost>
(MYSITE.COM
とキーと証明書のパス/名前を置き換えて、証明書とキーを指定します) ):
<VirtualHost _default_:443>
ServerName MYSITE.COM:443
SSLEngine on
SSLCertificateKeyFile /etc/Apache2/ssl/MYSITE.COM.key
SSLCertificateFile /etc/Apache2/ssl/MYSITE.COM.cert
ServerAdmin MYWEBGUY@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog ${Apache_LOG_DIR}/errorSSL.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${Apache_LOG_DIR}/accessSSL.log combined
</VirtualHost>
他の多くの仮想ホスト設定は/etc/Apache2/sites-enabled/
および/etc/Apache2/sites-available/
で利用できますが、すべての問題を解決するために重要なのは/etc/Apache2/httpd.conf
でした。
詳細情報:
http://wiki.vpslink.com/Enable_SSL_on_Apache2
http://httpd.Apache.org/docs/2.0/ssl/ssl_faq.html#selfcert
*独自の証明書(自己署名)を生成すると、ユーザーのブラウザーが認識できない権限を持つ証明書が作成されます。したがって、ブラウザは血まみれの殺人を叫び、ブラウザが実際にページを開く前に、ユーザーは何十回も「リスクを理解する」必要があります。そのため、テスト目的でのみ機能します。とは言っても、これがHOW-TOです。
/etc/Apache2/
)ssl
のようなフォルダーを作成します(またはあなたのために働くものなら何でも、名前はシステム要件ではありません)/etc/Apache2/ssl
Sudo openssl req -new -x509 -nodes -out MYSITE.COM.crt -keyout MYSITE.COM.key
を実行しますMYSITE.COM.crt
タグでMYSITE.COM.key
および<VirtualHost>
を使用します名前の形式は厳密なシステム要件の下ではなく、ファイルと同じである必要があります:)-212-MYSITE.COM.crt
、june2014-Godaddy-MYSITE.COM.crt
などの名前が機能するはずです。
chromeで同じエラーが発生していました(Firefox、IEでは別のエラーです)。error.logでも[error] [client cli.ent.ip.add] Invalid method in request \x16\x03
指示フォームに従って このサイト 設定をFROMから変更しました:
<VirtualHost subdomain.domain.com:443>
ServerAdmin [email protected]
ServerName subdomain.domain.com
SSLEngine On
SSLCertificateFile conf/ssl/ssl.crt
SSLCertificateKeyFile conf/ssl/ssl.key
</VirtualHost>
に:
<VirtualHost _default_:443>
ServerAdmin [email protected]
ServerName subdomain.domain.com
SSLEngine On
SSLCertificateFile conf/ssl/ssl.crt
SSLCertificateKeyFile conf/ssl/ssl.key
</VirtualHost>
今では正常に動作しています:)
この状況に対して提案したい一般的な原因:
顧客がSkypeを実行している場合があります。Skypeは、気づかないうちにポート443を使用しています。彼らがTomcatまたはApacheを起動すると、起動しているように見えますが、ポート443でバインドできません。これは、ユーザーがブラウザで受信するメッセージそのものです。修正は、ポート443で実行されていたものを停止し、ポート443でバインドできるようにWebサーバーを再起動することです。
お客様はWebサーバーを起動した後、Skypeを再起動できます。Skypeはポート443が使用中であることを検出し、使用する別のポートを選択します。
#Make sure that you specify the port for both http and https ie.
NameVirtualHost:80
NameVirtualHost:443
#and
<VirtualHost *:80>
<VirtualHost *:443>
#mixing * and *:443 does not work it has to be *:80 and *:443
SSLを正しく有効にする手順。
Sudo a2enmod ssl
Sudo apt-get install openssl
/ etc/Apache2/sites-availableにあるSSL構成ファイル(default-ssl.conf)でSSL証明書のパスを構成します。/etc/Apache2/ssl /に証明書を保存しました
SSLEngine On
SSLCertificateFile /etc/Apache2/ssl/certificate.crt
SSLCertificateChainFile /etc/Apache2/ssl/ca_bundle.crt
SSLCertificateKeyFile /etc/Apache2/ssl/private.key
SSL構成ファイルを有効にする
Sudo a2ensite default-ssl.conf
この問題が発生しましたが、解決策は少しばかげていました。
私は自分のウェブサイトのプロキシとして機能するCloudflareを使用しています。 SSH経由でログインできるようにするために、/etc/hosts
ファイルなので、サーバーのIPアドレスを覚えておく必要はありませんでした。
xxx.xx.xx.xxx example.com
そのため、ブラウザで https://www.example.com にアクセスしたとき、Cloudflareプロキシを使用し、 https://にアクセスしたとき、 example.com 私はサーバーに直接行きました。 Cloudflareのセットアップでは中間証明書を追加する必要がないため、 https://example.com にアクセスしたときにブラウザーでこのセキュリティ例外が表示されていましたが、 https://www.example.com は機能していました。
解決策:ラップトップの/etc/hosts
ファイル。
これがあなたの問題でない場合、多くのオンラインSSLチェッカーツールの1つ を使用して 問題の診断を試みることをお勧めします。
また、pingを使用して、報告されているIPアドレスを確認し、予想されるIPアドレスと照合することをお勧めします。
ping https://www.example.com/
もう1つの非常に役立つSSLリソースは、 Mozilla SSL Configuration Generator です。 SSL構成を生成できます。
これが、Ubuntuでそれを修正した理由です。
a2enmod ssl
/usr/local/ssl
に移動し、誰でも読み取り可能にしました:chmod -R +r /usr/local/ssl
<VirtualHost *:80>
を<VirtualHost *:*>
に変更しました。SSLEngine On
を追加しました。証明書にパスフレーズを設定した場合、Apacheは再起動時にパスフレーズを要求する必要があります。
Apacheの構成を変更し始めたとき、自分が何をしていたのかわかりませんでした。あなたが遭遇したのと同じ問題、特にChromeこのエラーが発生するまで、.
私がやったことは、SSL検証の設定に使用されるすべてのサイト固有のディレクティブをコメントアウトし、Chromeを許可して、ディレクティブを再有効化する前にディレクティブの前のドキュメントを確認し、Apacheを再起動したことを確認しました。これらを慎重に検討することにより、問題の原因となっているものを特定できるはずです。
私の場合、私はこれから行きました:
SSLVerifyClient optional
SSLVerifyDepth 1
SSLOptions +StdEnvVars +StrictRequire
SSLRequireSSL On
これに
<Location /sessions>
SSLRequireSSL
SSLVerifyClient require
</Location>
ご覧のように、かなりの数の変更がありました。
この問題が発生するのは、<VirtualHost>
は、httpd.confとhttpd-ssl.confの両方で定義されています。
httpd.confでは、次のように定義されています
<VirtualHost localhost>
httpd-ssl.confでは、次のように定義されています
<VirtualHost _default_:443>
次の変更によりこの問題が解決され、httpd.confに:80が追加されました。
<VirtualHost localhost:80>
他の回答と同様に、このエラーは、SSLを使用するように構成されたサイトがない場合に発生する可能性があります。
Debian WheezyからDebian Jessieにアップグレードしたときにエラーが発生しました。 Apacheの新しいバージョンでは、.conf
で終わるサイト構成ファイルが必要です。私の構成ファイルはそうしなかったため、無視されていて、SSL接続を提供するように構成された他のものはありませんでした。
/etc/Apache2/sites-available/default-ssl
のシンボリックリンクを/etc/Apache2/sites-enabled
に配置することにより、デフォルトのApache2 ssl構成をセットアップする手順を最初に実行したときにこのエラーが発生しました。その後、別の構成ファイルのポート443で別のNameVirtualHostを追加しようとすると、このエラーが発生し始めました。
/etc/Apache2/sites-enabled/default-ssl
シンボリックリンクを削除し、別の構成ファイル(httpd.conf、おそらく適切な形式ではないが機能している)にこれらの行を追加することで修正しました。
NameVirtualHost *:443
<VirtualHost *:443>
SSLEngine on
SSLCertificateChainFile /etc/Apache2/ssl/chain_file.crt
SSLCertificateFile /etc/Apache2/ssl/site_certificate.crt
SSLCertificateKeyFile /etc/Apache2/ssl/site_key.key
ServerName www.mywebsite.com
ServerAlias www.mywebsite.com
DocumentRoot /var/www/mywebsite_root/
</VirtualHost>
構成の誤りも原因でこの問題が発生しました。 Tomcatを使用していて、server.xmlでコネクタを次のように指定していました。
<Connector port="17443" SSLEnabled="true"
protocol="org.Apache.coyote.http11.Http11NioProtocol"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keyAlias="wrong" keystorePass="secret"
keystoreFile="/ssl/right.jks" />
このように修正したとき:
<Connector port="17443" SSLEnabled="true"
protocol="org.Apache.coyote.http11.Http11NioProtocol"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keyAlias="right" keystorePass="secret"
keystoreFile="/ssl/right.jks" />
期待どおりに機能しました。つまり、正しいキーストアがあるだけでなく、その下に正しいエイリアスが指定されていることを確認します。貴重なヒント ser396404 をありがとう。