系统配置
- ubuntu14.04(64 位)
- 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 添加重定向指令。