如何在没有SSL证书的情况下运行虚拟主机443?

我有一个虚拟主机指令,如果input了无效的子域名,则会提供自定义404错误:

<VirtualHost *:80> # the first virtual host ServerName site_not_found RedirectMatch 404 ^/(?!custom_error) </VirtualHost> <VirtualHost *:80> ServerName example.com ServerAlias ??.example.com </VirtualHost> 

我想设置一个虚拟主机,通过HTTPS连接显示相同的自定义错误。 我已经尝试了以下内容:

 <VirtualHost *:443> # the first virtual host ServerName site_not_found RedirectMatch 404 ^/(?!custom_error) </VirtualHost> <VirtualHost *:443> ServerName example.com ServerAlias ??.example.com # SSL options, other options, and stuff defined here. </VirtualHost> 

但服务器不会启动并发出错误:

服务器应该是SSL感知的,但没有configuration证书[提示:SSLCertificateFile]((null):0)

看来,即使SSLEngine没有为这个虚拟主机打开,也需要SSL证书。 除了提供证书外,还有什么方法可以解决问题吗? closures模块不是一个选项,因为我需要虚拟服务器example.com的SSL。

看来,即使SSLEngine没有为这个虚拟主机打开,也需要SSL证书。 除了提供证书外,还有什么方法可以解决问题吗?

不 – 当浏览器在URL中使用https时,它期望谈论SSL。 它不会,它会失败。 Apache告诉你这个很好,否则你会有一些模糊的浏览器错误需要理解。 因此,您需要在Apache中configurationSSL,然后才能使用端口443

如果您不希望浏览器警告这是一个错误的SSL证书,则需要从证书颁发机构购买一个SSL证书。 您可以https://cert.startcom.org/获得一个免费版本,这些版本在越来越多的地方被接受,但可能没有与已付费版本(特别是旧版本机器)相同的authentication级别&#x3002; 我使用这个为我的开发网站,还没有看到他们不信任的警告,但是我再次只使用相对较新的操作系统/浏览器。

是的,有一个方法:

configuration你的Apache的Listen指令(在Ubuntu /etc/apache2/ports.conf

里面会有东西在里面: Listen *:443

您可以通过添加协议来强制执行HTTP:

Listen *:443 http

这样Apache2就可以在端口443上侦听一个简单的HTTP服务器

在这里find: https : //httpd.apache.org/docs/2.4/bind.html

由于没有任何SSL证书而忽略Apache错误,除非您创build或购买通配符证书来覆盖“无效”子域,否则您尝试执行的操作是不可能的。

如果你所有的客户都是内部的,你可以创build一个迷你签名机构,并在所有的机器上安装所有的CA证书。

如果你的客户是外部的,那么你将不得不购买一张600美元左右的通配证书