https 重定向到虚拟主机目录并且 http 不起作用

https 重定向到虚拟主机目录并且 http 不起作用

系统配置

  1. ubuntu14.04(64 位
  2. XAMPP 1.8.3-5
    • Apache/2.4.10 (Unix) OpenSSL/1.0.1i PHP/5.5.15 mod_perl/2.0.8-dev Perl/v5.16.3

我已经读过Apache 2.4 的新特性

NameVirtualHost 指令
不再需要,并且现已弃用。

因此,除了名称虚拟主机之外,我尝试了其他基于 ip 的虚拟主机。

以下是我为配合工作而做出的改变

httpd配置文件

未注释包括<IfModule ssl_module>块内的行

<IfModule ssl_module>
<IfDefine SSL>
Include etc/extra/httpd-ssl.conf
</IfDefine>
</IfModule>

httpd-ssl.conf

创造Apache SSL 证书并在相应位置添加日志文件

<VirtualHost localhost:443>

DocumentRoot "/opt/lampp/htdocs/wsdl"
ServerName wsdl.local
ServerAlias wsdl.local
ServerAdmin [email protected]
ErrorLog "/opt/lampp/logs/wsdl_error_log"
TransferLog "/opt/lampp/logs/wsdl_access_log"
SSLEngine on
SSLCertificateFile "/opt/lampp/apache2/ssl/wsdl.crt"
SSLCertificateKeyFile "/opt/lampp/apache2/ssl/wsdl.key"
</VirtualHost>

这是错误日志文件

错误日志

[Fri Nov 21 15:43:12.001231 2014] [ssl:warn] [pid 5322] AH01906: wsdl.local:443:0 server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
[Fri Nov 21 15:43:12.001350 2014] [ssl:warn] [pid 5322] AH01909: wsdl.local:443:0 server certificate does NOT include an ID which matches the server name
[Fri Nov 21 15:43:13.001886 2014] [ssl:warn] [pid 5323] AH01906: wsdl.local:443:0 server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
[Fri Nov 21 15:43:13.001960 2014] [ssl:warn] [pid 5323] AH01909: wsdl.local:443:0 server certificate does NOT include an ID which matches the server name

我的问题是

  • http://localhost>> 错误请求
  • https://localhost/wsdl/ >> 不起作用
  • https://192.168.xx.xx/>> 安全连接失败(错误代码:ssl_error_rx_record_too_long)
  • https://192.168.xx.xx/wsdl/>> SSL 连接错误

尽管

  • http://192.168.xx.xx/>> 工作(就像默认的 xammpp 一样)
  • http://localhost导航到http://localhost/wsdl目录

附言本地主机行为与127.0.0.1在每种情况下

请建议我需要添加什么额外的东西才能使其正常工作?比如

  • 添加一些东西/etc/hosts或任何其他配置或
  • 嗯评论在 httpd.conf 中包含 etc/extra/httpd-vhosts.conf

更新

创建正确的证书注意:写入wsdl.local

请求中最重要的项目是“通用名称(例如服务器 FQDN 或您的名称)”这一行。您应该输入要与证书关联的域名,或者如果您没有域名,则输入服务器的公共 IP 地址。

添加虚拟主机地址/etc/hosts

127.0.0.1 wsdl.local

改变/opt/lampp/etc/extra/ httpd-ssl.conf

<VirtualHost *:80>
    DocumentRoot "/opt/lampp/htdocs"
    ServerName localhost
</VirtualHost>

<VirtualHost _default_:443> <-- added back _default_
ServerAlias www.wsdl.local  <-- alias append with www

<Directory "/opt/lampp/htdocs/wsdl"> <-- wraped directory in "
    Options All
    AllowOverride All
    order allow,deny
    allow from all
    #SSLRequireSSL <-- commented
</Directory>

我注意到 URL 行为发生了变化

  • http://wsdl.local/ http://localhost& http://127.0.0.1 >>URL 更改为http://wsdl.local/xampp/并显示 XAMPP 主页

  • https://wsdl.local/ &https://localhost/导航到 wsdl 目录(这是所需的)

  • https://127.0.0.1/>> URl 变成https://127.0.0.1/xampp/and未找到对象

但这仍然不是预期的,需要的是

http[s]://localhost/http[s]://127.0.0.1/带我到 XAMPP 主页

http[s]://wsdl.local将导航到 wsdl 目录

答案1

步骤 1:使用 OpenSSL 生成用于保护您网站的密钥。这些密钥用于加密和解密到您安全网站的流量。

$openssl genrsa -out mydomain.key 1024

第 2 步:生成您自己的证书。

 $ openssl req -new -key mydomain.key -x509 -out mydomain.crt

步骤 3:将私钥保存在目录 /etc/apache2/ssl.key/ 中,将证书保存在目录 /etc/apache2/ssl.crt/ 中。

注意:ssl.key 目录只能由 root 读取。

步骤 4:现在您需要编辑 /etc/apache2 中的 httpd.conf 文件。

现在这个文件应该包含如下内容:

> <VirtualHost *:80>
> 
> ServerAdmin [email protected]
> 
> DocumentRoot /opt/lampp/htdocs/wsdl
> 
> ServerName www.mydomain.com
> 
> ServerAlias mydomain.com
> 
> </VirtualHost>


<VirtualHost *:443>

ServerAdmin [email protected]

DocumentRoot /opt/lampp/htdocs/wsdl

ServerName mail.mydomain.com

SSLEngine on

SSLCertificateFile /etc/apache2/ssl.crt/mydomain.crt

SSLCertificateKeyFile /etc/apache2/ssl.key/mydomain.key

ErrorLog "/opt/lampp/logs/wsdl_error_log"

TransferLog "/opt/lampp/logs/wsdl_access_log"

</VirtualHost>


<Directory /srv/www/htdocs/mydomain-secure>
SSLRequireSSL
</Directory>

不要将 /etc/httpd/conf/httpd.conf 中的 Listen 80 更改为 443。SSL 在 /etc/httpd/conf.d/ssl.conf 中配置。SSL 已启用,并且默认使用自签名证书进行监听。

您只需浏览即可使用 SSL 访问默认站点https://localhost(无需在 URL 末尾添加端口)。

如果您想将所有 HTTP 请求转发到 HTTPS(我相信这是您想要实现的),您可以添加永久重定向,或者使用 Apache 模块 mod_rewrite。

最简单、最安全的方法是设置永久重定向。启用命名虚拟主机,并在 /etc/httpd/conf/httpd.conf 中向 VirtualHost 添加重定向指令。

相关内容