Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Apache运行多个支持SSL的网站进行本地开发_Apache_Ssl_Https_Localhost_Multiple Sites - Fatal编程技术网

如何使用Apache运行多个支持SSL的网站进行本地开发

如何使用Apache运行多个支持SSL的网站进行本地开发,apache,ssl,https,localhost,multiple-sites,Apache,Ssl,Https,Localhost,Multiple Sites,我有几个我正在开发的网站,通过虚拟服务器和不同的文档根,将它们配置为基于端口访问。也就是说,对于一个站点,localhost:8010,对于另一个站点,localhost:8020 在我有多个站点之前,SSL工作得很好,只有一个使用端口80和443。但是,现在未屏蔽的站点可以正常加载,但对于任何一个站点,都无法建立SSL连接。它似乎也没有改变端口——当我点击以https://开头的链接时,它试图转到https://localhost:8010/secure/route 我对像https://lo

我有几个我正在开发的网站,通过虚拟服务器和不同的文档根,将它们配置为基于端口访问。也就是说,对于一个站点,
localhost:8010
,对于另一个站点,
localhost:8020

在我有多个站点之前,SSL工作得很好,只有一个使用端口80和443。但是,现在未屏蔽的站点可以正常加载,但对于任何一个站点,都无法建立SSL连接。它似乎也没有改变端口——当我点击以https://开头的链接时,它试图转到
https://localhost:8010/secure/route

我对像
https://localhost:8010/secure/route
工作,或根据站点自动升级到其他端口(即
https://localhost:8011/project/one/secure/route
https://localhost:8021/project/two/secure/route
),或者别的什么,只要我能使用不同的端口和SSL在本地运行两个站点

在我的httpd.conf中,我有:

Listen 8010
Listen 8020
<VirtualHost *:8010>
    ServerAdmin zugwalt@projectone.com
    DocumentRoot "/path/to/project/one"
    ServerName localhost:8010
    ErrorLog "logs/projectone-error.log"
    CustomLog "logs/projectone-access.log" common
</VirtualHost>

<VirtualHost *:8020>
    ServerAdmin zugwalt@projecttwo.com
    DocumentRoot "/path/to/project/two"
    ServerName localhost:8020
    ErrorLog "logs/projecttwo-error.log"
    CustomLog "logs/projecttwo-access.log" common
</VirtualHost>
Listen 443

<VirtualHost *:443>
    DocumentRoot "/path/to/project/one"
    ServerName localhost:8010
    SSLEngine on
    SSLCertificateFile /path/to/ssl/server.crt
    SSLCertificateKeyFile /path/to/ssl/server.key
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot "/path/to/project/two"
    ServerName localhost:8020
    SSLEngine on
    SSLCertificateFile /path/to/ssl/server.crt
    SSLCertificateKeyFile /path/to/ssl/server.key
</VirtualHost>
以及:

<Directory "/path/to/project/one">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>

<Directory "/path/to/project/two">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>

选项索引如下SYMLINKS包括ExecCGI
允许超越所有
要求所有授权
选项索引如下SYMLINKS包括ExecCGI
允许超越所有
要求所有授权
在我的httpd vhosts.conf中,我有:

Listen 8010
Listen 8020
<VirtualHost *:8010>
    ServerAdmin zugwalt@projectone.com
    DocumentRoot "/path/to/project/one"
    ServerName localhost:8010
    ErrorLog "logs/projectone-error.log"
    CustomLog "logs/projectone-access.log" common
</VirtualHost>

<VirtualHost *:8020>
    ServerAdmin zugwalt@projecttwo.com
    DocumentRoot "/path/to/project/two"
    ServerName localhost:8020
    ErrorLog "logs/projecttwo-error.log"
    CustomLog "logs/projecttwo-access.log" common
</VirtualHost>
Listen 443

<VirtualHost *:443>
    DocumentRoot "/path/to/project/one"
    ServerName localhost:8010
    SSLEngine on
    SSLCertificateFile /path/to/ssl/server.crt
    SSLCertificateKeyFile /path/to/ssl/server.key
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot "/path/to/project/two"
    ServerName localhost:8020
    SSLEngine on
    SSLCertificateFile /path/to/ssl/server.crt
    SSLCertificateKeyFile /path/to/ssl/server.key
</VirtualHost>

服务器管理员zugwalt@projectone.com
DocumentRoot“/path/to/project/one”
服务器名本地主机:8010
ErrorLog“logs/projectone error.log”
CustomLog“logs/projectone access.log”通用
服务器管理员zugwalt@projecttwo.com
DocumentRoot“/path/to/project/two”
ServerName本地主机:8020
ErrorLog“logs/projecttwo error.log”
CustomLog“logs/projecttwo access.log”通用
在我的httpd ssl.conf中,我有:

Listen 8010
Listen 8020
<VirtualHost *:8010>
    ServerAdmin zugwalt@projectone.com
    DocumentRoot "/path/to/project/one"
    ServerName localhost:8010
    ErrorLog "logs/projectone-error.log"
    CustomLog "logs/projectone-access.log" common
</VirtualHost>

<VirtualHost *:8020>
    ServerAdmin zugwalt@projecttwo.com
    DocumentRoot "/path/to/project/two"
    ServerName localhost:8020
    ErrorLog "logs/projecttwo-error.log"
    CustomLog "logs/projecttwo-access.log" common
</VirtualHost>
Listen 443

<VirtualHost *:443>
    DocumentRoot "/path/to/project/one"
    ServerName localhost:8010
    SSLEngine on
    SSLCertificateFile /path/to/ssl/server.crt
    SSLCertificateKeyFile /path/to/ssl/server.key
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot "/path/to/project/two"
    ServerName localhost:8020
    SSLEngine on
    SSLCertificateFile /path/to/ssl/server.crt
    SSLCertificateKeyFile /path/to/ssl/server.key
</VirtualHost>
听443
DocumentRoot“/path/to/project/one”
服务器名本地主机:8010
斯伦金安
SSLCertificateFile/path/to/ssl/server.crt
SSLCertificateKeyFile/path/to/ssl/server.key
DocumentRoot“/path/to/project/two”
ServerName本地主机:8020
斯伦金安
SSLCertificateFile/path/to/ssl/server.crt
SSLCertificateKeyFile/path/to/ssl/server.key

我在Windows 7上使用Apache 2.4,您将两个虚拟主机都定义在端口443上,但您没有每个虚拟主机的实际dns主机名! 您将servername设置为localhost:8010和8020-这将不起作用,因为端口不是dns名称的一部分

您必须具有不同的服务器名,如ssl1.example.com和ssl2.example.com-另一方面,您可以为ssl定义不同的端口,就像为纯http定义端口一样:

<VirtualHost *:8110>
  DocumentRoot "/path/to/project/one"
  ServerName localhost
  SSLEngine on
  SSLCertificateFile /path/to/ssl/server.crt
  SSLCertificateKeyFile /path/to/ssl/server.key
</VirtualHost>

<VirtualHost *:8120>
  DocumentRoot "/path/to/project/two"
  ServerName localhost
  SSLEngine on
  SSLCertificateFile /path/to/ssl/server.crt
  SSLCertificateKeyFile /path/to/ssl/server.key
</VirtualHost>

DocumentRoot“/path/to/project/one”
服务器名本地主机
斯伦金安
SSLCertificateFile/path/to/ssl/server.crt
SSLCertificateKeyFile/path/to/ssl/server.key
DocumentRoot“/path/to/project/two”
服务器名本地主机
斯伦金安
SSLCertificateFile/path/to/ssl/server.crt
SSLCertificateKeyFile/path/to/ssl/server.key
然后使用浏览器中的端口: