当前位置 主页 > 服务器问题 > Linux/apache问题 >

    apache中使用mod

    栏目:Linux/apache问题 时间:2019-10-25 09:55

    在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>

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