轻 - 不需要的 HSTS
lighty - unwanted HSTS
多年来,我一直运行在我的开发机器上轻装上阵,已经设置了一些虚拟主机,其中之一是 phpmyadmin,另一个在某些页面上使用带有自签名证书的 SSL ;它多年来一直运行良好。
但是现在,每次我尝试访问我的虚拟主机时,浏览器都会向我显示一条错误消息,声称服务器未正确配置并使用 hsts (NET::ERR_CERT_AUTHORITY_INVALID) - 但是我从来没有设置过!
http://(ip-address)/
工作正常;和 http://(ip-address)/vhost-path/
一样,我会一直使用它,直到我轻装上阵并安装 nginx;但是重定向在测试中的某个时候使它无法使用。
我认为我的 Windows 客户端上的 AV 软件可能会导致问题;但它也显示在 Debian 开发机器上。
关于这是怎么发生的以及如何解决这个问题有什么想法吗?
详情:
- Ubuntu 16.04.4 LTS\n\l
- lighttpd/1.4.35 (ssl)
- OpenSSL 1.0.2j
/etc/conf/lighttpd/conf-enabled
的内容:
05-auth.conf
10-fastcgi.conf
10-ssl.conf
50-phpmyadmin.conf
10-cgi.conf
10-simple-vhost.conf
15-fastcgi-php.conf
90-javascript-alias.conf
据我所知,只有10-ssl.conf
包含的内容比默认内容多;而且它们多年来都没有修改过。
lighttpd.conf
(两年前的mtime)包含:
server.modules = (
"mod_access",
"mod_accesslog",
"mod_alias",
"mod_compress",
"mod_redirect",
)
... (general server setup) ...
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
... (vhost configuration) ...
/etc/conf/lighttpd/ssl/
包含我在其上使用 https 的一个虚拟主机的 SSL 证书(有效期至 2023 年某处)。
Chrome 拥有 .dev TLD,并决定将其预加载到浏览器中的静态 HSTS 列表中。 Firefox 最近紧随其后。有关详细信息,请参阅此 link:https://ma.ttias.be/chrome-force-dev-domains-https-via-preloaded-hsts/
这意味着您不能关闭 HSTS。
您的选择是:
- 使用不同的域(例如 .test)
- 创建一个自签名证书并将您的测试站点切换到 HTTPS。
请注意,由于 HSTS 不允许您点击证书错误,因此您还需要将证书(或问题)添加到信任库。
我强烈认为应该在 HTTPS 站点上进行开发。这与生产相匹配,因此避免了上线时混合内容的问题,certain powerful features will not work on HTTP-only sites,以及某些新功能(HTTP/2、Brotli 压缩、Service Workers)。
帮自己一个忙,创建一个自签名证书,将其添加到您的信任库,然后转移到 HTTPS 进行开发。另请注意,Chrome 要求证书具有 SAN 字段,这需要更多的努力,但可以在 linux 上完成(替换 server.domain.tld 的两个实例):
openssl req \
-newkey rsa:2048 \
-x509 \
-nodes \
-keyout server.key \
-new \
-out server.crt \
-subj /CN=server.domain.tld\
-reqexts SAN \
-extensions SAN \
-config <(cat /etc/pki/tls/openssl.cnf\<(printf '[SAN]\nsubjectAltName=DNS:server.domain.tld')) \
-sha256 \
-days 3650
或者在无法使用在线工具的 MacOS 上:
cat /System/Library/OpenSSL/openssl.cnf > /tmp/openssl.cnf
echo '[SAN]\nsubjectAltName=DNS:server.domain.tl'>> /tmp/openssl.cnf
openssl req \
-newkey rsa:2048 \
-x509 \
-nodes \
-keyout server.key \
-new \-out server.crt \
-subj /CN=server.domain.tl\
-reqexts SAN \
-extensions SAN \
-config /tmp/openssl.cnf\
-sha256 \
-days 3650
多年来,我一直运行在我的开发机器上轻装上阵,已经设置了一些虚拟主机,其中之一是 phpmyadmin,另一个在某些页面上使用带有自签名证书的 SSL ;它多年来一直运行良好。
但是现在,每次我尝试访问我的虚拟主机时,浏览器都会向我显示一条错误消息,声称服务器未正确配置并使用 hsts (NET::ERR_CERT_AUTHORITY_INVALID) - 但是我从来没有设置过!
http://(ip-address)/
工作正常;和 http://(ip-address)/vhost-path/
一样,我会一直使用它,直到我轻装上阵并安装 nginx;但是重定向在测试中的某个时候使它无法使用。
我认为我的 Windows 客户端上的 AV 软件可能会导致问题;但它也显示在 Debian 开发机器上。
关于这是怎么发生的以及如何解决这个问题有什么想法吗?
详情:
- Ubuntu 16.04.4 LTS\n\l
- lighttpd/1.4.35 (ssl)
- OpenSSL 1.0.2j
/etc/conf/lighttpd/conf-enabled
的内容:
05-auth.conf
10-fastcgi.conf
10-ssl.conf
50-phpmyadmin.conf
10-cgi.conf
10-simple-vhost.conf
15-fastcgi-php.conf
90-javascript-alias.conf
据我所知,只有10-ssl.conf
包含的内容比默认内容多;而且它们多年来都没有修改过。
lighttpd.conf
(两年前的mtime)包含:
server.modules = (
"mod_access",
"mod_accesslog",
"mod_alias",
"mod_compress",
"mod_redirect",
)
... (general server setup) ...
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
... (vhost configuration) ...
/etc/conf/lighttpd/ssl/
包含我在其上使用 https 的一个虚拟主机的 SSL 证书(有效期至 2023 年某处)。
Chrome 拥有 .dev TLD,并决定将其预加载到浏览器中的静态 HSTS 列表中。 Firefox 最近紧随其后。有关详细信息,请参阅此 link:https://ma.ttias.be/chrome-force-dev-domains-https-via-preloaded-hsts/
这意味着您不能关闭 HSTS。
您的选择是:
- 使用不同的域(例如 .test)
- 创建一个自签名证书并将您的测试站点切换到 HTTPS。
请注意,由于 HSTS 不允许您点击证书错误,因此您还需要将证书(或问题)添加到信任库。
我强烈认为应该在 HTTPS 站点上进行开发。这与生产相匹配,因此避免了上线时混合内容的问题,certain powerful features will not work on HTTP-only sites,以及某些新功能(HTTP/2、Brotli 压缩、Service Workers)。
帮自己一个忙,创建一个自签名证书,将其添加到您的信任库,然后转移到 HTTPS 进行开发。另请注意,Chrome 要求证书具有 SAN 字段,这需要更多的努力,但可以在 linux 上完成(替换 server.domain.tld 的两个实例):
openssl req \
-newkey rsa:2048 \
-x509 \
-nodes \
-keyout server.key \
-new \
-out server.crt \
-subj /CN=server.domain.tld\
-reqexts SAN \
-extensions SAN \
-config <(cat /etc/pki/tls/openssl.cnf\<(printf '[SAN]\nsubjectAltName=DNS:server.domain.tld')) \
-sha256 \
-days 3650
或者在无法使用在线工具的 MacOS 上:
cat /System/Library/OpenSSL/openssl.cnf > /tmp/openssl.cnf
echo '[SAN]\nsubjectAltName=DNS:server.domain.tl'>> /tmp/openssl.cnf
openssl req \
-newkey rsa:2048 \
-x509 \
-nodes \
-keyout server.key \
-new \-out server.crt \
-subj /CN=server.domain.tl\
-reqexts SAN \
-extensions SAN \
-config /tmp/openssl.cnf\
-sha256 \
-days 3650