我可以访问https://svn服务器:80/通过我的网络浏览器本地进行,但是当我删除:80 时它根本不起作用......有什么想法吗?
更新
当我去https://svn服务器: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
答案1
由于某种原因,此 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 上监听
答案2
这是因为 https 是端口 443,而端口 80 是 http。我将使用 wireshark 查看在强制流量到端口 80 时它确实使用的是 https 还是 http。
除此之外,这还涉及正确设置 Apache/IIS 配置的问题。
答案3
我现在意识到我之所以能够这样做是因为我浏览网站的本地 Linux 机器有 svnserver 的记录,因为我之前已经通过 ssh 连接过它。:doh:!
当我将 :80 更改为 :443 时,SSL 也会引发错误,这意味着 80 没有加密数据,即使它显示 https 并且没有引发任何错误。