OpenSSLとmod_sslがApache2にインストールされているかどうかを判断するコマンドを知っている人はいますか?
PHPサーバーにインストールされている場合)、phpファイルを作成し、phpinfo.phpという名前でこの<?php echo phpinfo();?>
を追加し、ブラウザでファイルを開きます。これにより、システム環境に関する情報が表示されます。Apacheがロードしたモジュールに関する情報をすばやく見つけるには、結果のページで「Loaded Modules」を見つけます。
サーバーにPHPがインストールされている場合、実行時に " extension_loaded " funciontionを使用してチェックできます。次のようになります。
<?php
if (!extension_loaded('openssl')) {
// no openssl extension loaded.
}
?>
通常、Apache2サーバーをコンパイルする(またはパッケージ機能でインストールする)ときに、このコマンドをタップして使用可能なディレクティブを確認できます。
~# $(which httpd) -L | grep SSL # on RHEL/CentOS/Fedora
~# $(which Apache2) -L | grep SSL # on Ubuntu/Debian
SSL *ディレクティブが表示されない場合、Apache2にmod_sslがコンパイルされていないことを意味します。
それが役立つことを願っています;)
デフォルトのApacheインストールは、この情報をServerヘッダー行で送信するように構成されています。 curlコマンドを使用して、任意のサーバーのこれを表示できます。
$ curl --head http://localhost/
HTTP/1.1 200 OK
Date: Fri, 04 Sep 2009 08:14:03 GMT
Server: Apache/2.2.8 (Unix) mod_ssl/2.2.8 OpenSSL/0.9.8a DAV/2 PHP/5.2.6 SVN/1.5.4 proxy_html/3.0.0
次のコマンドを使用します。
$ openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013 (or similar output)
RHEL/CentOS/Fedoraの場合:
$ httpd -t -D DUMP_MODULES | grep ssl
ssl_module (shared)
buntu/Debianの場合
$ Apache2 -t -D DUMP_MODULES | grep ssl
ssl_module (shared)
SUSEの場合
$ httpd2 -t -D DUMP_MODUELS | grep ssl
ssl_module (shared)
openssl&ssl_moduleを決定するには
# rpm -qa | grep openssl
openssl-libs-1.0.1e-42.el7.9.x86_64
openssl-1.0.1e-42.el7.9.x86_64
openssl098e-0.9.8e-29.el7.centos.2.x86_64
openssl-devel-1.0.1e-42.el7.9.x86_64
mod_ssl
# httpd -M | grep ssl
または
# rpm -qa | grep ssl
端末でopenssl
を実行すると、openSSLシェルが表示されます。 mode_ssl
がなかったことを知る最初の手がかりは、仮想ホストファイルにSSLEngine on
を追加した後に次のエラーが発生したことです。
Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration
CentOSでは、yum install mod_ssl
経由でインストールする必要がありました
Apache 2を使用すると、次のコマンドを実行することにより、HTTPデーモンによって現在ロードされているモジュールを確認できます。
Apache2ctl -M
-M
オプションは、実際にはhttpdに渡される単なるパラメーターです。
Apache2ctlは、Apache HyperText Transfer Protocol(HTTP)サーバーのフロントエンドです。管理者がApache apache2デーモンの機能を制御できるように設計されています。
NOTE: The default Debian configuration requires the environment variables Apache_RUN_USER, Apache_RUN_GROUP, and Apache_PID_FILE to be set in /etc/Apache2/envvars. The Apache2ctl script returns a 0 exit value on success, and >0 if an error occurs. For more details, view the comments in the script.
幸いなことに、Linuxのほとんどのフレーバーには、「すぐに使える」OpenSSLがあります。
openssl version
応答:OpenSSL 1.0.1t 3 May 2016
注:バージョンOpenSSL 1.0.1から1.0.1f(含む)
はOpenSSL Heartbleed Bugに対して脆弱です。
バージョン1.0.1g以降は修正されています。
Ubuntu/Debiandpkg -l | grep -i openssl
応答:ii libcrypt-openssl-random-Perl 0.04-2+b1 AMD64 module to access the OpenSSL pseudo-random number generator
ii libcurl3:AMD64 7.38.0-4+deb8u5 AMD64 easy-to-use client-side URL transfer library (OpenSSL flavour)
ii libgnutls-openssl27:AMD64 3.3.8-6+deb8u4 AMD64 GNU TLS library - OpenSSL wrapper
ii openssl 1.0.1t-1+deb8u6 AMD64 Secure Sockets Layer toolkit - cryptographic utility
ii python-ndg-httpsclient 0.3.2-1 all enhanced HTTPS support for httplib and urllib2 using PyOpenSSL
ii python-openssl 0.14-1 all Python 2 wrapper around the OpenSSL library
ii ssl-cert 1.0.35 all simple debconf wrapper for OpenSSL
はい、OpenSSLがインストールされています!
Debian/Ubuntu:Sudo apt-get install openssl
RedHat/CentOS:yum install openssl
このApache modをインストールする必要があります http://httpd.Apache.org/docs/2.0/mod/mod_info.html Apache設定。 Apacheでこれを有効にすると、Webサイトの情報が表示されます。
サーバーバージョン:Apache/2.2.3(Debian)mod_jk/1.2.18 PHP/5.2.0-8 + etch13 mod_ssl/2.2.3 OpenSSL/0.9.8c mod_Perl/2.0.2 Perl/v5.8.8
Apacheログディレクトリのssl_engine.logを見ると、次のようなものが見つかるはずです。
[ssl:info] [pid 5963:tid 139718276048640] AH01876: mod_ssl/2.4.9 compiled against Server: Apache/2.4.9, Library: OpenSSL/1.0.1h
phpコマンドで確認するには
$php -i | grep openssl
ssl version
を見つけるには
Httpd.confでmod_sslを有効にして、Apacheを再起動します。以下のように、error.logにopenssl情報が表示されます。
[Fri Mar 23 15:13:38.448268 2018] [mpm_worker:notice] [pid 8891:tid 1] AH00292: Apache/2.4.29 (Unix) OpenSSL/1.0.2n configured -- resuming normal operations
[Fri Mar 23 15:13:38.448502 2018] [core:notice] [pid 8891:tid 1] AH00094: Command line: '/opt/apps/Apache64/2.4.29/bin/httpd'