欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

apache中使用mod_gnutls模块实现多个SSL站点配置(多个HTTPS协议的虚拟主机)

程序员文章站 2023-10-28 16:11:34
在apache的环境下该如何配置多个https虚拟主机呢?利用的原理的都是同一个,也就是sni。基于域名的虚拟主机,即共享同一个ip地址和端口的https虚拟主机。 sn...

在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
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.jb51.net:443
    gnutlsenable on
    gnutlscertificatefile ./ssl/www.jb51.net.public.cer
    gnutlskeyfile ./ssl/www.jb51.net.private.key
    documentroot "/data/wwwroot/www.jb51.net/webroot"
</virtualhost>

<virtualhost 10.1.1.22:443>
    servername www.jb51.net:443
    gnutlsenable on
    gnutlscertificatefile ./ssl/www.jb51.net.public.cer
    gnutlskeyfile ./ssl/www.jb51.net.private.key
    documentroot "/data/wwwroot/www.jb51.net/webroot"
</virtualhost>

这样访问每个虚拟主机都正常。