我可以通过我的网络浏览器在本地访问https://svnserver:80/,但是当我删除 :80 时它根本不起作用......有什么想法吗?
更新
当我去https://svnserver:443/它说:
SSL received a record that exceeded the maximum permissible length.
(Error code: ssl_error_rx_record_too_long)
我遵循了通过官方文档在 Ubuntu 上创建私有 ssh 密钥的默认说明...
更新
我的ports.conf
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
# SSL name based virtual hosts are not yet supported, therefore no
# NameVirtualHost statement here
Listen 443
</IfModule>
netstat -lp 结果
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:www *:* LISTEN 5285/apache2
tcp 0 0 *:https *:* LISTEN 5285/apache2
tcp 0 0 *:22 *:* LISTEN 2351/sshd
tcp6 0 0 [::]:22 [::]:* LISTEN 2351/sshd
udp 0 0 *:bootpc *:* 2239/dhclient3
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node PID/Program name Path
unix 2 [ ACC ] STREAM LISTENING 14927 5288/apache2 /var/run/apache2/cgisock.5285
unix 2 [ ACC ] STREAM LISTENING 5032 2114/dbus-daemon /var/run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 4857 2039/acpid /var/run/acpid.socket
出于某种原因,这个 svn 服务器在端口 80 上配置了 https。需要告知浏览器它正在端口 80/TCP 上寻找 https 服务器,这就是为什么您需要同时指定https和:80的原因。
背景:
标准 Web 流量通过端口 80/TCP 标准 https 流量通过端口 443/TCP
大多数 Web 浏览器假定非限定 URL 是标准 http 连接并将它们发送到端口 80。需要 https 的 Web 服务器通常会执行重定向(如 403)以将浏览器发送到页面的 HTTPS 版本,但是 Web 浏览器也假设 HTTPS 流量发生在 443/TCP 上。非标准端口上的 HTTPS 流量必须在 URL 中指定,否则浏览器将尝试将其发送到 443/TCP。
重申一下,如果没有 HTTP 页面将您的浏览器重定向到正确的 HTTPS 内容,并且 HTTPS 内容位于非标准端口上,您将始终需要指定协议和端口。
更新
我查看了这个问题:在 Apache 上使用自签名证书设置 https
答案可能会解决您的配置问题。听起来 HTTP 可能正在侦听 443 而 HTTPS 可能正在侦听 80
那就是 b/c https 是端口 443,端口 80 是 http。在强制流量到端口 80 时,我会使用 wireshark 来查看它是否确实使用了 https 或 http。
除此之外,还需要正确设置 Apache/IIS 配置。
我现在意识到我可以这样做的原因是因为我正在浏览该站点的本地 linux 机器具有 svnserver 的记录,因为我之前已经 ssh 到它。:doh:!
当我将 :80 更改为 :443 时,SSL 也会引发错误,这意味着 80 没有加密数据,即使它显示 https 并且没有引发错误。