共计 1795 个字符,预计需要花费 5 分钟才能阅读完成。
导读 | 在 apache 的环境下该如何配置多 HTTPS 虚拟主机呢?利用的原理的都是同一个,也就是 SNI。基于域名的虚拟主机,即共享同一个 IP 地址和端口的 HTTPS 虚拟主机。 |
SNI— 服务器名称指示,是一个 TLS 的扩展,它使得启用 SSL 的基于域名的虚拟主机的配置成为可能。打破了每个 HTTPS 的虚拟主机需要一个 IP 地址的要求。因此,成本大大降低,因为所有的 HTTPS 虚拟主机可以共享相同的 IP 地址和端口,使 HTTPS Web 服务的更简单。
在 apache 环境下,需要使用 mod_gnutls 来实现同一个 IP 上配置多个 HTTPS 主机。下面来看看实现过程:
mod_gnutls 的网址参见:https://mod.gnutls.org
1. 安装 mod_gnutls
# yum install httpd-devel gnutls-devel
# wget http://www.outoforder.cc/downloads/mod_gnutls/mod_gnutls-0.2.0.tar.bz2
# tar -xjvf mod_gnutls-0.2.0.tar.bz2
# cd mod_gnutls-0.2.0
# ./configure --prefix=/usr
# make
如果要安装高版本的 gnutls 的话,需要先安装相对应的依赖包 libnettle gmplib。下载地址:http://www.gnutls.org/download.html ftp://ftp.gnutls.org/gcrypt/gnutls
2. apache 加载 mod_gnutls 模块
# cp mod_gnutls-0.2.0/src/.libs/libmod_gnutls.so /usr/lib/httpd/modules/mod_gnutls.so
# cp mod_gnutls-0.2.0/data/{dh,rsa}file /etc/httpd/conf/
mod_gnutls 模块依赖 dhfile 和 rsafile 文件.
3. 配置 httpd.conf
Listen 10.1.1.22:443
LoadModule gnutls_module modules/mod_gnutls.so
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
GnuTLSCache dbm "/var/cache/mod_gnutls_cache"
GnuTLSCacheTimeout 300
NameVirtualHost 10.1.1.22:443
创建回话缓存目录
# mkdir -m 0700 /var/cache/mod_gnutls_cache
# chown nobody.nobody /var/cache/mod_gnutls_cache
4. 配置虚拟主机
<VirtualHost 10.1.1.22:443>
ServerName www.ttlsa.com:443
GnuTLSEnable on
GnuTLSCertificateFile ./ssl/www.ttlsa.com.public.cer
GnuTLSKeyFile ./ssl/www.ttlsa.com.private.key
DocumentRoot "/data/wwwroot/www.ttlsa.com/webroot"
</VirtualHost>
<VirtualHost 10.1.1.22:443>
ServerName www.heytool.com:443
GnuTLSEnable on
GnuTLSCertificateFile ./ssl/www.heytool.com.public.cer
GnuTLSKeyFile ./ssl/www.heytool.com.private.key
DocumentRoot "/data/wwwroot/www.heytool.com/webroot"
</VirtualHost>
这样访问每个虚拟主机都正常。
参考文档:http://www.g-loaded.eu/2007/08/10/ssl-enabled-name-based-apache-virtual-hosts-with-mod_gnutls/
正文完
星哥说事-微信公众号
![post-qrcode](https://www.xgss.net/wp-content/uploads/2023/07/二维码-微信公众号256x256.jpg)