问题标签 [gnutls]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
223 浏览

rsa - 如何使用 RSA 公钥/私钥和 GnuTLS 形成 TLS 连接?

我正在编写一个客户端/服务器 TCP 程序,并希望使用 TLS 加密和验证连接。我的计划是让客户端向服务器提交公共 RSA 密钥,然后使用私钥和用户名来验证客户端的身份并加密连接。

GnuTLS 文档还有很多不足之处,但我找到了一个很好的 PSK 示例并尝试对其进行调整以使用 RSA 非对称密钥。在解决了这个问题之后,特别是文档中没有明确描述的各种晦涩的细节之后,我让客户端停止抱怨“没有找到支持的密码套件”,但现在服务器可以了。

在互联网上进行更多搜索后,我发现了一个测试程序,它是 GnuTLS CI 的一部分,用于测试 RSA-PSK,我意识到共享密钥仍然是对称的。RSA-PSK 不是我想的那样。

我真的不喜欢使用对称密钥,因为它需要在服务器端以普通方式存储,因此不安全。

然而,对 RSA 密钥交换的简要介绍表明,不涉及用户名,它实际上是基于证书的,并且服务器使用自己的私钥,而所有客户端都使用相同的公钥。因此,不可能保证客户的身份。

在花了一天时间试图让 TLS 工作,并且不愿意重新发明轮子(这总是存在安全风险)之后,我在这里询问,以防有任何专家可以建议我如何实现我正在寻求的目标实现。

唯一想到的解决方案是相当肮脏和hacky(并且重新发明轮子),即实现一个pre-TLS-handshake握手,客户端生成一个随机密钥,用它的私钥对其进行加密,然后发送它和用户名到服务器,然后使用公钥对其进行解密。然后 GnuTLS 可以使用随机密钥进行正常的对称 PSK 密钥交换。

我不明白为什么 GnuTLS 无论如何都没有实现这样的东西。我所期望的是 GnuTLS 客户端将用户名发送到服务器,然后服务器通过生成用于加密的密钥并使用客户端的公钥对其进行加密并将加密的密钥发送到客户端来执行密钥交换。客户端使用其私钥解密密钥,你瞧,密钥交换已安全完成,TLS 通道已打开。

总而言之:

1)如何实现我需要实现的目标(最好使用 GnuTLS)?

2) 为什么 RSA-PSK 不能按我的预期工作,而是使用对称密钥和证书?

0 投票
1 回答
326 浏览

python - VLC:播放远程文件时出现 gnutls tls 会话错误

我正在使用 python-vlc 库来播放音频。

我像这样从 youtube-dl 获取网址:

它最初可以正常工作,但是在看似随机的点上,而不是每个文件都会出现此错误消息:

我再次运行它GNUTLS_DEBUG_LEVEL=99并得到了这个(最后几行包括在这里)

VLC 版本:2.2.6

编辑:我在正确的 VLC 中重现了相同的错误。故障点的错误是一样的,这里是完整的日志。

0 投票
1 回答
317 浏览

ssl - GnuTLS 无法正确验证 googleapis.com 的证书

我最初在 security.stackexchange.com 上问了一个相关问题。这是MCVE。

短版:当我使用 GnuTLS 验证与 googleapis.com 的 HTTPS 连接时,验证失败。对于其他站点(例如 github.com),它会成功。

我正在/etc/ssl/certs/ca-certificates.crt显式加载文件(在实际程序中,我们缓存它,而不是每次都访问文件系统)。

CA 商店最近由 Ubuntu 更新。在该更新之前,以下代码有效。自更新以来,它失败了。

Ubuntu 14.04,编译g++ -o gnutls-client gnutls-client.cpp -lgnutls

使用当前的 CA 捆绑包...

使用以前的 CA 捆绑包...

gnutls-cli,在同一台机器上,工作正常:

(注意“对等的证书是可信的”)

The "Equifax" certificate was removed in the update, but according to the security.stackexchange.com question, GnuTLS should see the intermediate "GeoTrust" certificate and treat that as a valid root.

What am I doing wrong?

0 投票
1 回答
1502 浏览

ssl - Openssl 重新协商失败

我正在尝试将 openssl 客户端连接到服务器。我正在使用以下命令: openssl s_client -cipher "AES256" -connect 15.213.94.8:6433 -msg

输出是:

上面,它说支持重新协商。现在,当我将 R 作为“重新协商”的输入时,我得到以下输出:

为什么会出现 ssl3_write_bytes 错误和握手失败?

0 投票
0 回答
9435 浏览

ubuntu - Windows 10 Linux 子系统中的“TLS 连接未正确终止”

我最近重新安装了我的计算机并安装了我一直这样做的 Linux 子系统。当我想运行composer时,我发现了一些奇怪的东西。它失败了,因为它无法建立 TLS 连接。

[RuntimeException] 无法通过 https、ssh 协议克隆https://github.com/inquam/colors.php ,正在中止。

  • https://github.com/inquam/colors.php 克隆到裸存储库'/home/danlil/.cache/composer/vcs/https---github.com-inquam-colors.php'...致命:无法访问“ https://github.com/inquam/colors.php/ ”:gnutls_handshake() 失败:TLS 连接未正确终止。

  • git@github.com:inquam/colors.php 克隆到裸存储库'/home/danlil/.cache/composer/vcs/https---github.com-inquam-colors.php'...警告:永久添加IP 地址“192.30.253.113”的 RSA 主机密钥到已知主机列表。权限被拒绝(公钥)。致命:无法从远程存储库中读取。

    请确保您具有正确的访问权限并且存储库存在。

在尝试了更多之后,我注意到无论我尝试通过 https 克隆哪个 GitHub 存储库,都会发生这种情况,并且它也适用于通过curl或其他使用 TLS 连接的命令的任何连接。我在其他线程中尝试了几种建议的解决方案,例如更新ca-certificates,在 Windows 10 上重新安装Ubuntu,下载https://curl.haxx.se/ca/cacert.pem并在php.ini中指向它,确保ipv6是不是Ubuntu等中的首选方法。

以前,当我在Windows 10中使用Ubuntu时,我刚刚安装并且一切正常,没有任何类似的问题。

更新:经过更多测试后,我决定测试安装 Windows 版本的 GIT 并删除 Linux 版本,因为 Linux 子系统现在可以运行 Windows 二进制文件。它工作得很好。然后 Composer 想下载https://packagist.org/packages.json并由于 TLS 再次失败。因此,当运行 Linux 版本的程序时,TLS 在 Bash 中不起作用,但在 WIndows 版本中可以正常工作。

[Composer\Downloader\TransportException]无法下载“ https://packagist.org/packages.json ”文件:无法启用加密 无法打开流:操作失败

为了证明它似乎会影响每个本机 Bash 应用程序,我也测试了以下内容

me@DATHREADRIPPER:/mnt/e/src$ php -r 'echo file_get_contents(" https://packagist.org/packages.json ");'

PHP 警告:file_get_contents():无法在第 1 行的命令行代码中启用加密 PHP 警告:file_get_contents(https://packagist.org/packages.json):无法打开流:第 1 行的命令行代码中的操作失败

更新:对我来说,当我从 Windows 商店在 Windows 中安装较新的 Ubuntu 18.04 时,这个问题终于解决了。

0 投票
0 回答
3154 浏览

https - HTTPS 的 GnuTLS 问题

我已经成功安装了 debian Whizzy 和 Jessie,但是当我尝试通过 https 进行一些请求时,我收到了奇怪的错误

与 cURL 甚至 gnutls-cli 相同

但是其他一些 https 效果很好

我尝试使用openssl,它显示这样的错误,即使使用tls1,tls1.2

那么,有什么想法可以让 https 工作吗?

我尝试使用gnutls26gnutls28但同样的问题。

0 投票
1 回答
108 浏览

c - 将 OpenSSL RSA 加密转换为 GnuTLS

出于许可原因,我正在尝试将以下代码从 OpenSSL 转换为 GnuTLS:

到目前为止,我已经想出了以下内容,但似乎输出格式不正确(RSA_PKCS1_OEAP_PADDING)

我不是加密或这些库的专家,所以请善待。

0 投票
0 回答
5447 浏览

git - git 错误:RPC 失败,curl 56 GnuTLS recv 错误(-110)

git clone在 linux git 存储库上运行时如何解决此错误?

错误:RPC 失败;curl 56 GnuTLS recv 错误(-110):TLS 连接未正确终止。

0 投票
2 回答
1116 浏览

windows - GNUTLS or libuuid missing while building taskwarrior from source code in Windows 10

For the past 4 days I have been working to get taskwarrior and taskwarrior server running on windows 10. It has proven quite a challenge for me.

I followed the steps written below: "Building the Stable Version" on https://taskwarrior.org/docs/build.html and created a folder:

Opened Developer Command Prompt for VC 2017

And then depending on whether I try to build taskwarrior with Sync enabled (automatically unless manually disabled):

GNUTLS_library is missing

or:

-- libuuid not found.

A short summary of steps followed and attempts so far:

  1. Downloaded and installed Microsoft Visual C++ 2017 Redistributable (x64 and x86) from: https://visualstudio.microsoft.com/vs/features/cplusplus/
  2. Ensured cl was available as suggested in the documentation of microsoft: https://msdn.microsoft.com/en-us/library/cyz1h6zd.aspx
  3. Downloaded MinGW installation Manager and installed the base package as was suggested on http://www.mingw.org/wiki/Getting_Started:

If you do wish to install mingw-get-inst.exe's obligatory set, (including the GNU C Compiler, the GNU Debugger (GDB), and the GNU make tool), you should select the mingw-base package for installation.

  1. Installing Cmake from https://cmake.org/download/
  2. Running the commands described above from cmd in administrator mode
  3. Opening Cmake selecting the source folder:

    C:/taskwarrior/taskwarrior.git

With build folder:

This gave the exact same errors as when I tried the it through the Developer Command Prompt for VC 2017 described above, from which I conclude that I do not have a typo in my commands described above.

  1. Even though it should be installed with Mingw already, GNU is still not found (even after reboot). So I tried downloading it manually from:
  2. http://gnuwin32.sourceforge.net/packages/make.htm
  3. https://sourceforge.net/projects/gnuwin32/

  4. And I tried the following commands from Command prompt:

    install libgnutlsxx28 gnutls-dev install gnutls-dev

  5. As suggested in the install file in taskwarrior for Debian based distributions, I tried:

    libgnutls-dev

    Which opens the IncrediBuild Version 9.2.1 Setup, I currently do not know what that does.

  6. I tried downloading the libuuid library from: https://sourceforge.net/projects/libuuid/ but I currently do not know how to build and install it.

  7. I tried installing it through python in cmd with:

    easy_install python-libuuid

  8. Learning building programs from source code from: https://msdn.microsoft.com/en-us/library/cyz1h6zd.aspx

  9. Learning and practicing from https://github.com/codebox/bitmeteros/wiki/How-to-build-on-Windows.
  10. At the end I learned I had Cygwin installed already and that I could simply install an old version of taskwarrior by reinstalling cygwin and checking/marking the task package. So I have the taskwarrior running, but not the taskwarrior server. And moreover I am trying to learn how to build code/projects from source, so I am trying to make a succesfull build to increase my skillset and hence toolset.
  11. The explenation to install GNU TLS 3.6.2 on https://www.gnutls.org/manual/gnutls.html#Downloading-and-installing is limited to:

The package is then extracted, configured and built like many other packages that use Autoconf. For detailed information on configuring and building it, refer to the INSTALL file that is part of the distribution archive. Typically you invoke ./configure and then make check install.

However, the latest GNUTLS for Windows x64 download file: Latest w64 version on gitlab on: https://www.gnutls.org/download.html named artifacts.zip contains no file named INSTALL.

So I am currently working on understanding how to configure and built using autoconf.

Question: Do you know how I could install the GNU library and/or libuuid library on windows 10?

0 投票
1 回答
206 浏览

smalltalk - 在 Centos 7.4x 上将 OSSubprocess 添加到我的 Pharo 6.1 时出错

我想在我的 CentOS 7.4 上从我的 Pharo 6.1中弄乱OSSubprocess(由Mariano Martinez Peck编写)。

我在里面搜索Pharo Project Catalog并尝试安装它。

我收到一个错误:

显然,一些库libcurl-gnutlslibgit2.so.

当我检查依赖项时ldd libgit2.so

问题显然在于:

libcurl-gnutls.so.4显然根本没有随 CentOS 7 一起提供:

我们根本不提供任何名为 libcurl-gnutls* 的东西。我们的 curl 不使用 gnutls。

libssl.so.1.0.0是古老的(同样适用libcrypto.so.1.0.0)。如果我检查我的libssl

CentOS 7 的详细信息是:

现在百万美元的问题:

你如何处理这样的情况?是否有一种合理的方法可以针对较新库的版本重新编译整个库Pharo VM或仅重新编译库?libgit2