无法通过端口 443 访问虚拟主机

无法通过端口 443 访问虚拟主机

我有一个 Google Compute 实例(Debian 8 和 Apache),使用 Google Compute 协议转发运行,以便能够在一个虚拟机实例中使用多个外部 IP 地址:

Google 计算协议转发(全文)

Google Compute Engine 支持协议转发,让您可以创建转发规则对象,以便将数据包发送到非 NAT 目标实例。每个目标实例都包含一个虚拟机实例,用于接收和处理来自相应转发规则的流量。

问题

我无法通过端口 443 访问其中一个虚拟主机域/IP。我需要这个,因为我想在所有这些域上启用 HTTPS。

我尝试了多种方法来实现打开 443 端口,但是都没有用:

选项 1)基于虚拟名称的主机:

/etc/apache2/ports.conf

Listen 80

<IfModule ssl_module>
    NameVirtualHost *:443
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    NameVirtualHost *:443
    Listen 443
</IfModule>

/etc/apache2/sites-enabled/example.com.conf

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/website1
</VirtualHost>

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/website1
</VirtualHost>

选项 2)基于虚拟 IP 的主机:

/etc/apache2/ports.conf

Listen 80

<IfModule ssl_module>
    NameVirtualHost *:443
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    NameVirtualHost *:443
    Listen 443
</IfModule>

<VirtualHost 192.0.2.5>
 DocumentRoot /var/www/website1
 <Directory /var/www/website1>
  Require all granted
 </Directory>
</VirtualHost>

...

这两个选项都适用于端口 80,但不适用于端口 443。

答案1

在 ports.conf 中你需要

Listen 443

在 /etc/apache2/sites-enabled/example.com.conf 中你需要:

SSLEngine On
SSLCertificateFile      /path/to/file.pem
SSLCertificateKeyFile /path/to/file.key

其中 file.pem 和 file.key 是证书和密钥

相关内容