如何检查Apache的SNI(服务器名称指示)的可用性?

我有一个centos 7服务器。 我使用IUS存储库( https://ius.io/ )从apache 2.4.6切换到apache 2.4.25。 我的目标是通过一个IP来支持多个SSL证书。

我已经安装了:

  • Apache / 2.4.25(CentOS)
  • httpd24u-了mod_ssl,2.4.25-3.ius.centos7.x86_64
  • 的OpenSSL 1.0.1e-60.el7_3.1.x86_64

现在apache是​​否启用了SNI?

或者我必须用./configure –with-ssl = / path / to / your / openssl从头开始构build它,就像在文档中一样( https://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI )?

感谢您的时间。

股票CentOS httpd&mod_ssl包已经支持SNI。 自0.9.8f版本以来,SNI一直得到openssl的支持,并且自版本2.2.12开始的任何httpd自openssl 0.9.8f和更新版本自动支持SNI。

但要检查你的httpd和mod_ssl是否支持SNI:

简单地通过configuration基于名称的SSL / TLS虚拟主机进行testing,并在重新启动后检查错误日志(从您已链接到的Apache httpd wiki ):

你怎么知道你的Apache版本是否支持SNI?

如果您为configuration了SSL的地址configuration了多个基于名称的虚拟主机,并且SNI没有内置到您的Apache中,那么在Apache启动时,

你不应该使用基于名称的虚拟主机与SSL结合!!

将出现在错误日志中。
如果内置SNI,则会显示错误日志

[警告] Init:基于名称的SSL虚拟主机仅适用于支持TLS服务器名称指示(RFC 4366)的客户端 ”。

或者使用ldd来确认mod_ssl与openssl的libssl链接并确认版本:

 ldd /usr/lib64/httpd/modules/mod_ssl.so linux-vdso.so.1 => (0x00007fff323f8000) libssl.so.10 => /lib64/libssl.so.10 (0x00007f3d99792000) <======= libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007f3d993a8000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3d9918b000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f3d98f87000) libc.so.6 => /lib64/libc.so.6 (0x00007f3d98bc6000) libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f3d98977000) libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f3d98690000) libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f3d9848c000) libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f3d98259000) libz.so.1 => /lib64/libz.so.1 (0x00007f3d98043000) /lib64/ld-linux-x86-64.so.2 (0x00007f3d99c3d000) libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f3d97e34000) libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f3d97c2f000) libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f3d97a15000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f3d977ed000) libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f3d9758c000) rpm -qf /lib64/libssl.so.10 openssl-libs-1.0.1e-60.el7_3.1.x86_64