无效的命令“SSLOpenSSLConfCmd”,可能是拼写错误或由未包含在服务器configuration中的模块定义

像所有其他pipe理员一样,我正在通过Logjam 修复工作 。

我已经升级到Apache 2.4.12和openssl 1.0.2a在我的centos 6.6框。

当我启动Apache,我看到这个错误消息返回:

Invalid command 'SSLOpenSSLConfCmd', perhaps misspelled or defined by a module not included in the server configuration 

这是我的Apache的构build信息:

 Server version: Apache/2.4.12 (Unix) Server built: Jun 8 2015 22:04:38 Server's Module Magic Number: 20120211:41 Server loaded: APR 1.4.5, APR-UTIL 1.3.12 Compiled using: APR 1.4.5, APR-UTIL 1.3.12 Architecture: 64-bit Server MPM: worker threaded: yes (fixed thread count) forked: yes (variable process count) Server compiled with.... -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) -D APR_USE_SYSVSEM_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=256 -D HTTPD_ROOT="/opt/installs/apache/2_4_12" -D SUEXEC_BIN="/opt/installs/apache/2_4_12/bin/suexec" -D DEFAULT_PIDLOG="logs/httpd.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="conf/mime.types" -D SERVER_CONFIG_FILE="conf/httpd.conf" 

mod_ssl包含在我的httpd.conf中:

 LoadModule ssl_module modules/mod_ssl.so 

我错过了什么?

SSLOpenSSLConfCmd仅在以后的httpd 2.4.8上可用。

但是,您仍然可以在早期版本上生成并使用您自己的DH参数,如下所述:

如果您使用Apache与LibreSSL或Apache 2.4.7和OpenSSL 0.9.8a或更高版本,则可以将之前生成的DHparams追加到证书文件的末尾。 文档是在这里和下面:

自定义DH参数和临时密钥的EC曲线名称也可以添加到使用SSLCertificateFileconfiguration的第一个文件的末尾。 这在版本2.4.7或更高版本中受支持。 这些参数可以使用openssl dhparam和openssl ecparam命令生成。 参数可以按原样添加到第一个证书文件的末尾。 只有第一个文件可以用于自定义参数,因为它们与authenticationalgorithmtypes无关地被应用。

只需使用cat将dhparams.pem附加到您的证书文件即可:

 cat dhparams.pem >> cert.pem 

每个Apache文档 – 可用的SSLOpenSSLConfCmd命令集取决于用于mod_ssl的OpenSSL版本(需要)(至less需要版本1.0.2)。 有关支持的命令名称的列表,请参阅OpenSSL 的SSL_CONF_cmd(3)手册页中支持的configuration文件命令一节。

使用SSLOpenSSLConfCmdvalidation您正在使用的命令

如果使用OpenSSL 1.0.2或更高版本,则可以在httpd 2.4.8(未发布)中使用SSLOpenSSLConfCmd伪指令。

Apache 2.4.8的更改(未发布)… mod_ssl:通过引入SSLOpenSSLConfCmd指令添加对OpenSSLconfiguration命令的支持。 [Stephen Henson,Kaspar品牌] …

build立APR

 # ./configure --host=x86_64-redhat-linux-gnu --build=x86_64-redhat-linux-gnu --prefix=/opt/apr-1.5.2 --with-devrandom=/dev/urandom 

build立APR-UTIL

 # ./configure --prefix=/opt/apr-util-1.5.4 --with-ldap --with-crypto --with-openssl=/opt/openssl-1.0.2a --with-apr=/opt/apr-1.5.2 

build立Apache

 # ./configure --prefix=/opt/httpd-2.4.12 --enable-mpms-shared=all --with-pcre --enable-mods-shared=all --enable-ssl --with-ssl=/opt/openssl-1.0.2a --with-apr=/opt/apr-1.5.2 --with-apr-util=/opt/apr-util-1.5.4 --enable-session-crypto ... configure: setting INCLUDES to "-I." adding "-I$(top_srcdir)/os/$(OS_DIR)" to INCLUDES adding "-I$(top_srcdir)/include" to INCLUDES adding "-I/opt/apr-1.5.2/include/apr-1" to INCLUDES adding "-I/opt/apr-util-1.5.4/include/apr-1" to INCLUDES adding "-I/opt/openssl-1.0.2a/include" to INCLUDES ... 

检查mod_ssl.so

 # ldd mod_ssl.so | grep ssl libssl.so.1.0.0 => /opt/openssl-1.0.2a/lib/libssl.so.1.0.0 (0x00007f6f3c6bd000) libcrypto.so.1.0.0 => /opt/openssl-1.0.2a/lib/libcrypto.so.1.0.0 (0x00007f6f3c287000) # strings mod_ssl.so | grep SSLOpenSSLConfCmd SSLOpenSSLConfCmd AH02407: "SSLOpenSSLConfCmd %s %s" failed for %s AH02556: "SSLOpenSSLConfCmd %s %s" applied to %s 

检查Apache设置

 # ./httpd -v Server version: Apache/2.4.12 (Unix) Server built: Mar 27 2016 16:29:30 # ./httpd -V Server version: Apache/2.4.12 (Unix) Server built: Mar 27 2016 16:29:30 Server's Module Magic Number: 20120211:41 Server loaded: APR 1.5.2, APR-UTIL 1.5.4 Compiled using: APR 1.5.2, APR-UTIL 1.5.4 Architecture: 64-bit Server MPM: event threaded: yes (fixed thread count) forked: yes (variable process count) Server compiled with.... -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) -D APR_USE_SYSVSEM_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=256 -D HTTPD_ROOT="/opt/httpd-2.4.12" -D SUEXEC_BIN="/opt/httpd-2.4.12/bin/suexec" -D DEFAULT_PIDLOG="logs/httpd.pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="conf/mime.types" -D SERVER_CONFIG_FILE="conf/httpd.conf" # /opt/httpd-2.4.12/bin/apachectl -t Syntax OK 

虚拟主机设置

 # conf/extra/httpd-ssl.conf Listen 443 SSLOpenSSLConfCmd DHParameters /etc/pki/httpd/dhparams_2048.pem SSLCipherSuite kEECDH+AES128:kEECDH:kEDH:-3DES:kRSA+AES128:kEDH+3DES:DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2 SSLHonorCipherOrder on SSLPassPhraseDialog builtin SSLSessionCache "shmcb:/opt/httpd-2.4.12/logs/ssl_scache(512000)" SSLSessionCacheTimeout 300 SSLProtocol All -SSLv2 -SSLv3 <VirtualHost _default_:443> DocumentRoot "/opt/httpd-2.4.12/htdocs" ServerName ssllabs.example.com:443 ServerAdmin [email protected] ErrorLog "/opt/httpd-2.4.12/logs/error_log" TransferLog "/opt/httpd-2.4.12/logs/access_log" SSLEngine on SSLCertificateFile /etc/pki/httpd/server.pem SSLCertificateKeyFile /etc/pki/httpd/server.key <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "/opt/httpd-2.4.12/cgi-bin"> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-5]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 CustomLog "/opt/httpd-2.4.12/logs/ssl_request_log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost> 

testing结果

在这里输入图像描述

在这里输入图像描述