AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 525536
Accepted
abiyi
abiyi
Asked: 2019-06-18 17:35:11 +0800 CST2019-06-18 17:35:11 +0800 CST 2019-06-18 17:35:11 +0800 CST

带有自签名证书的 Apache 2.4 始终重定向到默认虚拟主机

  • 772

我一直在尝试使用 Apache 2.4 制作具有自签名证书的虚拟主机。我尝试了许多设置组合,但无论如何,我在 Firefox 中尝试的每个虚拟主机都会直接进入默认主机(清除缓存后)。我得到的唯一错误消息是在 Apache error.log 中(所有子域虚拟主机日志都没有错误消息):

[Mon Jun 17 19:32:48.866641 2019] [ssl:debug] [pid 3084] ssl_engine_kernel.c(2122): [client 192.168.1.100:57956] AH02044: No matching SSL virtual host for servername subdomain.7d.net found (使用默认/第一个虚拟主机)

当前设置是基于 IP 的虚拟主机(一个物理 IP 地址由默认主机使用,许多虚拟 IP 地址用于许多虚拟主机,一对一)。在此之前,Apache 使用基于名称的虚拟主机,只有一个物理 IP 地址具有相同的行为。

每个虚拟主机都使用自己的自签名证书,在此之前所有虚拟主机都使用一个。由于 SSL 证书,未报告任何错误消息。每个证书都与其对应的名称匹配。OpenSSL 1.1.0用于生成证书。

除了自签名证书 Apache 正在使用Starfield Class 2 Certificate Authority.

没有安装 DNS 服务器,只有一个/etc/hosts文件,每个 IP 地址和主机名都运行良好。

Apache 2.4.25在Debian GNU/Linux «Stretch»上运行。

ports.conf(我尝试将Listed 443指令放在条件块之外,但行为是相同的)。

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80

<IfModule ssl_module>
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

001-默认-ssl.conf

<IfModule mod_ssl.c>
    #<VirtualHost 192.168.1.201:443>
    <VirtualHost *:443>
        ServerAdmin webmaster@localhost
        ServerName triplecero.7d.net
        #ServerAlias www.7d.net

        DocumentRoot /var/www/html

        LogLevel info ssl:debug

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        Include conf-available/serve-cgi-bin.conf

        SSLEngine On

        SSLCertificateFile /etc/ssl/localcerts/triplecero.7d.net.crt
        SSLCertificateKeyFile /etc/ssl/localcerts/triplecero.7d.net.key

        SSLCACertificateFile /etc/ssl/certs/Starfield_Class_2_CA.pem

        SSLVerifyClient optional
        SSLVerifyDepth  10

        SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>

         BrowserMatch "MSIE [2-6]" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0

    </VirtualHost>
</IfModule>

子域.conf

<VirtualHost 192.168.1.210:433>
#<VirtualHost subdomain.7d.net:433>
    ServerName subdomain.7d.net
    DocumentRoot "/var/www/subdomain"
    DirectoryIndex index.php

    LogLevel info ssl:debug

    CustomLog ${APACHE_LOG_DIR}/subdomain-access.log combined
    ErrorLog ${APACHE_LOG_DIR}/subdomain-error.log

    SSLEngine On

    SSLCertificateFile "/etc/ssl/localcerts/subdomain.7d.net.crt"
    SSLCertificateKeyFile "/etc/ssl/localcerts/subdomain.7d.net.key"

    SSLCACertificateFile "/etc/ssl/certs/Starfield_Class_2_CA.pem"

    SSLVerifyClient optional
    SSLVerifyDepth 10

    <Directory "/var/www/subdomain">
        Redirect "http://subdomain.7d.net" "https://subdomain.7d.net"
        Require all granted
        AllowOverride All
    </Directory>
</VirtualHost>

阿帕奇2状态:

Triplecero:~# apache2ctl -S
虚拟主机配置:
192.168.1.210:433 subdomain.7d.net (/etc/apache2/sites-enabled/grupoglobaleyr.conf:3)

[许多其他虚拟主机省略]

*:80 Triplecero.7d.net (/etc/apache2/sites-enabled/000-default.conf:2)
*:443 是一个 NameVirtualHost
         默认服务器 Triplecero.7d.net (/etc/apache2/sites-enabled/001-default-ssl.conf:3)
         端口 443 namevhost Triplecero.7d.net (/etc/apache2/sites-enabled/001-default-ssl.conf:3)
         端口 443 namevhost Triplecero.7d.net (/etc/apache2/sites-enabled/002-default-tls.conf:2)
服务器根目录:“/etc/apache2”
主文档根目录:“/var/www/html”
主要错误日志:“/var/log/apache2/error.log”
互斥锁默认:dir="/var/run/apache2/" 机制=默认
互斥体 mpm-accept: using_defaults
互斥体 fcgid 管道:using_defaults
互斥看门狗回调:using_defaults
互斥体重写映射:using_defaults
Mutex ssl-stapling-refresh: using_defaults
互斥 gnutls-cache: using_defaults
互斥 gnutls-ocsp: using_defaults
互斥锁 fcgid-proctbl: using_defaults
互斥 ssl 装订:using_defaults
互斥代理: using_defaults
互斥 ssl 缓存:using_defaults
PidFile:“/var/run/apache2/apache2.pid”
定义:DUMP_VHOSTS
定义:DUMP_RUN_CFG
用户:name="www-data" id=33
组:name="www-data" id=33
三重奏:~#

子域-error.log

[Tue Jun 18 00:05:46.274025 2019] [ssl:info] [pid 3050] AH01914:为 SSL 协议配置服务器 subdomain.7d.net:443
[2019 年 6 月 18 日星期二 00:05:46.274415] [ssl:debug] [pid 3050] ssl_engine_init.c(1756): AH02209: CA 证书: OU=Starfield Class 2 Certification Authority,O=Starfield Technologies\\, Inc., C=美国
[2019 年 6 月 18 日星期二 00:05:46.274481] [ssl:debug] [pid 3050] ssl_engine_init.c(413): AH01893: 配置 TLS 扩展处理
[Tue Jun 18 00:05:46.340584 2019] [ssl:debug] [pid 3050] ssl_util_ssl.c(443): AH02412: [subdomain.7d.net:443] 名称“subdomain.7d.net”的证书匹配 [主题:emailAddress=triplecerogmail.com,CN=subdomain.7d.net,OU=Development,O=ZZZ Corp.,L=Skycity,ST=Highstate,C=XX / 发行人:emailAddress=triplecerogmail.com,CN=subdomain。 7d.net,OU=Development,O=ZZZ Corp.,L=Skycity,ST=Highstate,C=XX / 序列号:B06BB41BBE840955 / 之前:格林威治标准时间 2019 年 6 月 16 日 22:00:11 / 之后:6 月 15 日 22:00:格林威治标准时间 2020 年 11 月]
[Tue Jun 18 00:05:46.340606 2019] [ssl:info] [pid 3050] AH02568:从 /etc/ssl/localcerts/subdomain.7d.net 配置的证书和私钥 subdomain.7d.net:443:0。 crt 和 /etc/ssl/localcerts/subdomain.7d.net.key
debian apache-httpd
  • 2 2 个回答
  • 1873 Views

2 个回答

  • Voted
  1. Best Answer
    abiyi
    2019-06-20T07:20:00+08:002019-06-20T07:20:00+08:00

    重定向的原因是指令中设置了错误的逻辑端口(433相反443)VirtualHost(实际上,在每个虚拟主机中)。

    Apache 文件中从未声明过 433 端口ports.conf,因此未找到任何虚拟主机,导致重定向到默认 SSL 虚拟主机。

    感谢@Freddy 发现了“小错误”。

    • 1
  2. somebody
    2019-06-18T19:19:25+08:002019-06-18T19:19:25+08:00

    “(所有子域虚拟主机日志都没有错误消息)”

    那是(应该是)你的线索。:) 这里有几个(conf)文件在起作用。我猜你已经(基本上)省略了extra/httpd-vhosts.conf. 它定义了所有/任何虚拟主机。

    2.4 版变得比它的前辈更加模块化。因此,大多数旧方法要么不起作用,要么已被移动。

    apache24/httpd.conf保存全局配置和主要主机/IP 的东西。

    apache24/extra/httpd-vhosts.conf常见的虚拟主机定义。

    # PRIMARY (default) Vhost
    # Everything is on a SECURE socket. Redirect accordingly
    
    <VirtualHost *:80>
        ServerName main-domain.vhost
        Redirect permanent / https://main-domain.vhost/
    </VirtualHost>
    # another Vhost on same IP but with different name
    <VirtualHost *:80>
        ServerName another-domain.vhost
        Redirect permanent / https://another-domain.vhost/
    </VirtualHost>
    
    ...
    
    ####################################################################
    #NameVirtualHost *:443
    ####################################################################
    # MAIN Vhost
    <VirtualHost *:443>
        ServerAdmin me@localhost
        DocumentRoot "/usr/local/www/data"
        ServerName main-domain.vhost
        ServerAlias www.main-domain.vhost
    
    SSLEngine on
    SSLCertificateFile "/usr/local/etc/letsencrypt/live/main-domain.vhost/cert.pem"
    SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/main-domain.vhost/privkey.pem"
    SSLCertificateChainFile "/usr/local/etc/letsencrypt/live/main-domain.vhost/fullchain.pem"
    # HSTS (mod_headers is required) (15768000 seconds = 6 months)
    # HSTS (mod_headers is required) (7884000 seconds = 3 months)
        Header always set Strict-Transport-Security "max-age=15768000"
    
    ...
    
    </VirtualHost>
    
    # We now need to include our INDIVIDUAL/ADDITIONAL (V) hosts
    # We do so thusly
    
    # They all run on a SSL
    Include etc/apache24/extra/hosts/another-domain.vhost.conf
    
    # NOTE above, the .conf files live in a SUBdirectory of the "extra" folder (hosts)
    
    
    

    好的,现在我们继续查看各个V主机.conf文件

    apache24/extra/hosts/*.conf

    apache24/extra/hosts/another-domain.vhost.conf
    
    # # # # # # # # # # # # # # # # # # # # # # # #
    # # #   another-domain.vhost
    # # # # # # # # # # # # # # # # # # # # # # # #
    <VirtualHost *:443>
        ServerAdmin me@localhost
        DocumentRoot "/usr/local/www/another-domain.vhost"
        ServerName another-domain.vhost
        ServerAlias www.another-domain.vhost
    
    
    SSLEngine on
    SSLCertificateFile "/usr/local/etc/letsencrypt/live/another-domain.vhost/cert.pem"
    SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/another-domain.vhost/privkey.pem"
    SSLCertificateChainFile "/usr/local/etc/letsencrypt/live/another-domain.vhost/fullchain.pem"
    # HSTS (mod_headers is required) (15768000 seconds = 6 months)
    # HSTS (mod_headers is required) (7884000 seconds = 3 months)
        Header always set Strict-Transport-Security "max-age=15768000"
    
    ...
    
    </VirtualHost>
    

    这就是文件中满足 apache(2.4) 所需的所有相关信息。如您所见,我 1) 使用“letsencrypt”作为我的证书提供者,2) 我正在分享我的一个 BSD 盒子中的示例。但这只会改变Apache 安装路径的根目录。来自apache24(包括文件夹)的所有内容都apache24应该是相同的。所以如果你跟着,你应该设置。

    这并不能保证您的证书会通过集合。但这是针对不同的线程。:)

    高温高压

    • 0

相关问题

  • GRUB 配置以识别同一 Linux 发行版的不同桌面环境(安装)

  • astyle 不会更改源文件格式

  • 接收有关全新 Debian 的电子邮件

  • Debian Stretch:libgs_plugin_systemd-updates.so 中的 gnome-software 段错误

  • 如何在拼音输入法中输入ü?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve