当我使用 git 或 curl 时,出现可能与证书相关的错误:
使用 git:
> git clone https://github.com/vim/vim.git
Cloning into 'vim'...
fatal: unable to access 'https://github.com/vim/vim.git/': error:140943E8:SSL routines:ssl3_read_bytes:reason(1000)
有卷曲
> curl -v https://github.com
* Trying 2001:8002:e42:f002::f5ff:443...
* TCP_NODELAY set
* Connected to github.com (2001:8002:e42:f002::f5ff) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS alert, close notify (512):
* error:140943E8:SSL routines:ssl3_read_bytes:reason(1000)
* Closing connection 0
curl: (35) error:140943E8:SSL routines:ssl3_read_bytes:reason(1000)
如果我尝试查看 openssl 发生了什么,它似乎找不到任何证书:
> openssl s_client -ciphersuites TLS_AES_128_GCM_SHA256 -connect github.com:443
CONNECTED(00000003)
139703172380480:error:140943E8:SSL routines:ssl3_read_bytes:reason(1000):ssl/record/rec_layer_s3.c:1543:SSL alert number 0
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 316 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
当我在另一台计算机上运行 openssl 命令(上面)时,它返回大量有关证书的信息。
我可以做什么来诊断/解决这个问题?
我使用的是 Fedora 31
编辑:“nmcli con show”的部分输出是:
ipv6.method: auto
ipv6.dns: --
ipv6.dns-search: --
ipv6.dns-options: --
ipv6.dns-priority: 0
ipv6.addresses: --
ipv6.gateway: --
ipv6.routes: --
ipv6.route-metric: -1
ipv6.route-table: 0 (unspec)
ipv6.routing-rules: --
ipv6.ignore-auto-routes: no
ipv6.ignore-auto-dns: no
ipv6.never-default: no
ipv6.may-fail: yes
ipv6.ip6-privacy: -1 (unknown)
ipv6.addr-gen-mode: stable-privacy
ipv6.dhcp-duid: --
ipv6.dhcp-send-hostname: yes
ipv6.dhcp-hostname: --
ipv6.token: --
答案1
您显然没有正确设置 IPv6 配置。作为解决方法(不是修复,但可能很复杂或不可能),请在计算机上完全禁用 IPv6,然后重试该git
命令。
通过键入(以 root 身份)禁用 IPv6:
echo 0 > /proc/sys/net/ipv6/conf/all/autoconf
echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra
echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
这将一直有效,直到下次重新启动为止。为了在您的计算机上永久禁用 IPv6(当然,直到您撤消它),您需要更改配置文件。遗憾的是,如何完成此操作很大程度上取决于您的系统。在 Fedora 下,这可能可以通过编辑网络的配置文件来完成,该文件位于以太网网络中/etc/sysconfig/network-scripts
并带有以太网网络的名称,可能类似于ifcfg-enp4s2
您的网络(请参阅 参考资料ip a
)被称为enp4s2
.请添加(或编辑,如果存在并且是=yes
)该行
IPV6INIT=no
这将从下次重新启动网络服务(或重新启动)时生效。
另一种可能适用于您的系统,也可能不适用于您的系统的方法是找到该文件/etc/sysctl.conf
并添加这些行(或调整它们,如果存在):
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.all.disable_ipv6 = 1
并让我们知道。
全面披露:禁用 IPv6 的行复制自如何在自定义内置嵌入式设置中禁用 IPv6。