/etc/apache2/sites-available/ 下的 000-default.conf 文件内容如下:
VirtualHost 11.222.111.111:80>
ServerName 11.222.111.111
Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options nosniff
Header always append X-Frame-Options SAMEORIGIN
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
Header always set Strict-Transport-Security "max-age=15768000; preload"
ServerAdmin webmaster@localhost
DocumentRoot /home/000/public_html
DirectoryIndex index.html index.htm index.php index.php4 index.php5
ErrorLog ${APACHE_LOG_DIR}/error.log
RewriteEngine On
RewriteCond %{HTTP_HOST} ^11\.222\.111\.111
RewriteRule ^/(.*) https://domain.tld/$1 [NC,R=301,L]
如您所见,当有人访问 IP 时,它会重定向到受 SSL 保护的域。但是,我不知道如何重定向https://11.222.111.111到同一个网站,而不会导致 Apache 崩溃。
我在单独的 .conf 文件中有大约 40 个 VirtualHost。上述配置将通过 IP 访问重定向到域,但当我使用https://11.222.111.111我明白了SSL 错误代码:BAD_CERT_DOMAIN。
有什么方法可以删除SSL 错误代码:BAD_CERT_DOMAIN或重新认证https:// 11.222.111.111和我访问的同一个网站http://11.222.111.111?
谢谢。
答案1
SSL_ERROR_BAD_CERT_DOMAN 表示您的证书颁发给了不同的域。您在 https 连接中使用的证书必须针对您使用的 DNS 名称颁发。 据说证书可以包含 IP 地址,但最好为服务器(尤其是公共服务器)保留 DNS 记录。为正确的名称颁发证书,错误就会消失。
不过,有几件事要说。
首先,如果您使用自签名证书或您自己的 CA,那么错误不会真正消失,除非您在客户端计算机上导入证书。
其次,您的配置似乎盲目地将连接重定向到 https 站点,为此,许多指令可以简单地省略。如果用户实际上从未从该 VirtualHost 下载任何内容,则没有理由定义 aDocumentRoot
或 a DirectoryIndex
。此外,标头最好在 https VirtualHost 中定义。