标签 TLS 下的文章

当涉及到 SSL/TLS 证书时,你可能会遇到各种问题,有些与浏览器有关,有些则是网站后台的问题。

其中一个错误是 Linux 中的 “Unacceptable TLS certificate”。

不幸的是,对此没有“一劳永逸”的答案。然而,有一些潜在的解决方案,你可以尝试,在此,我打算为你强调这些。

你什么时候会遇到这个 TLS 证书问题?

在我的例子中,我是在通过终端添加 Flathub 仓库时注意到这个问题的,这个步骤可以让你在 设置 Flatpak 时访问大量的 Flatpak 集合。

然而,在安装 Flatpak 应用或通过终端使用来自第三方仓库的 Flatpak 参考文件时,你也可能会遇到这个错误。

一些用户在 Linux 上使用他们组织推荐的 VPN 服务工作时注意到这个问题。

那么,如何解决这个问题呢?为什么这是一个问题?

嗯,从技术上讲,这是两件事中的一个:

  • 你的系统不接受该证书(并说它是无效的)。
  • 该证书与用户连接的域不匹配。

如果是第二种情况,你得联系网站的管理员,从他们那里解决这个问题。

但是,如果是第一种情况,你有几种方法来处理它。

1、在使用 Flatpak 或添加 GNOME 在线账户时修复 “Unacceptable TLS certificate”

如果你试图添加 Flathub 远程或一个新的 Flatpak 应用,并在终端中注意到这个错误,你可以简单地输入:

sudo apt install --reinstall ca-certificates

这应该会重新安装受信任的 CA 证书,以防止列表中出现某种问题。

在我的例子中,当试图添加 Flathub 仓库时,我遇到了错误,通过在终端输入上述命令解决了这个问题。

所以,我认为任何与 Flatpak 有关的 TLS 证书问题都可以用这个方法解决。

2、在使用工作 VPN 时修复 “Unacceptable TLS certificate”

如果你使用你的组织的 VPN 来访问与工作有关的材料,你可能要把证书添加到你的 Linux 发行版中的可信 CA 列表中。

请注意,你需要 VPN 服务或你组织的管理员分享根证书的 .CRT 版本,才能开始使用。

接下来,你需要进入 /usr/local/share/ca-certificates 目录。

你可以下面创建一个目录,并使用任何名称来标识你组织的证书。然后,将 .CRT 文件添加到该目录。

例如,它是 /usr/local/share/ca-certificates/organization/xyz.crt

请注意,你需要有 root 权限来添加证书或在 ca-certificates 目录下创建目录。

当你添加了必要的证书,你所要做的就是输入以下命令更新证书支持列表:

sudo update-ca-certificates

而且,每当你试图连接到你公司的 VPN 时,你的系统应将该证书视为有效。

总结

不可接受的 TLS 证书并不是一个常见的错误,但你可以在各种使用情况下发现它,比如连接到 GNOME 在线账户。

如果上述两种方法都不能解决这个错误,那么你所连接的域/服务有可能存在配置错误。在这种情况下,你将不得不联系他们来解决这个问题。

你是否遇到过这个错误?你是如何解决的?你是否知道这个问题的其他解决方案(有可能是容易操作的)?请在下面的评论中告诉我你的想法。


via: https://itsfoss.com/unacceptable-tls-certificate-error-linux/

作者:Ankush Das 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Twetch 发布基于比特币的加密聊天功能

Twetch Chat 是一个完全加密的消息平台,它允许用户在 Twetch 上与任何人私下聊天。Twetch Chat 使用比特币(BSV)、AES 和 ECIES 进行加密。聊天是用你的比特币私钥加密的,是私密的,只有你和你允许的人可以访问。你也可以通过聊天平台使用比特币(BSV)向你的连接人转移数字现金。用户始终拥有自己的数据,并可以通过与某人,或一群人开始对话来允许解密他们的信息。

来源:zdnet

拍一拍:居然用 BSV 基础设施来加密对话,这个创意不错。

万事达卡将帮助各国央行测试自己的数字货币

国际支付服务商万事达卡今日发布公告称,推出了一个虚拟测试环境,以帮助全球各国央行测试其中央银行数字货币(CBDC)。该平台可以模拟银行、金融服务提供商和消费者之间 CBDC 的发行、分发和交换。将允许银行测试 CBDC 是否适合他们,是否可行。

来源:slashdot

拍一拍:看来各国都有点坐不住了,数字货币在将来或许就是常态。

浣熊攻击可以让黑客在特定条件下破解 TLS 加密技术

一个学者团队今天披露了一种针对 TLS 加密协议的理论攻击,可以用来解密用户和服务器之间的 HTTPS 连接,并读取敏感通信。该攻击被命名为“浣熊”(Raccoon),被描述为“真的很难利用”,其基础条件“罕见”。

来源:zdnet

拍一拍:无论多么强大的加密之墙,终将一点点被撬动。

可通过用户的浏览历史精确跟踪用户

Mozilla 的研究人员使用的数据集包含了 5.2 万名 Firefox 用户在两周内的浏览历史,分析显示了 48,919 个可区分的浏览资料,即 99% 的浏览历史是独一无二的。超过八成用户可通过浏览历史重新识别身份。研究人员还发现,只需要考虑 50 个最流行网站就足以获得独特指纹。研究人员称他们发现大量第三方在收集用户浏览历史将其作为标识符使用。

来源:solidot

拍一拍:又一个可以精确跟踪用户的方式,要保持隐私可真难。

微软 Linux 软件集合将不再支持 TLS 1.0/1.1

微软为 Linux 系统构建和支持各种软件产品托管在 package.microsoft.com,将不再允许使用 TLS 1.0/1.1,将强制使用 TLS 1.2。换句话说,在 9 月 24 日之后不使用 TLS 1.2 的客户将不再被允许从微软下载 Linux 软件包。

来源:cnBeta.COM

拍一拍:其实大部分人对 TLS 什么的都无感。

CenturyLink 中断导致全球网络流量下降 3.5%

美国 ISP CenturyLink 在周日遭遇了一次重大的技术故障,因为其一个数据中心的错误配置在整个互联网上造成了破坏。该故障涉及防火墙和 BGP 路由,从它的网络向外扩散,影响了其他 ISP,最终导致更多其他公司的连接问题。导致全球互联网流量下降了 3.5%,这将是有史以来最大的互联网中断事件之一。CenturyLink 最终重置了所有设备,并从干净的 BGP 路由表开始,花了七个小时才修复这次事故。

来源:zdnet

拍一拍:BGP 故障何时休?我觉得天网也不用干啥,只要能掌握 BGP 广播就够了。

现代计算机用来在互联网种查找资源的 域名系统(DNS) 是在 35 年前设计的,没有考虑用户隐私。它会面临安全风险和攻击,例如 DNS 劫持。它还能让 ISP 拦截查询。

幸运的是,现在有 DNS over TLSDNSSEC 两种技术。DNS over TLS 和 DNSSEC 允许创建从计算机到它配置的 DNS 服务器之间的安全且加密的端到端隧道。在 Fedora 上,部署这些技术的步骤很容易,并且所有必要的工具也很容易获得。

本指南将演示如何使用 systemd-resolved 在 Fedora 上配置 DNS over TLS。有关 systemd-resolved 服务的更多信息,请参见文档

步骤 1:设置 systemd-resolved

类似于下面所示修改 /etc/systemd/resolved.conf。确保启用 DNS over TLS 并配置要使用的 DNS 服务器的 IP 地址。

$ cat /etc/systemd/resolved.conf
[Resolve]
DNS=1.1.1.1 9.9.9.9
DNSOverTLS=yes
DNSSEC=yes
FallbackDNS=8.8.8.8 1.0.0.1 8.8.4.4
#Domains=~.
#LLMNR=yes
#MulticastDNS=yes
#Cache=yes
#DNSStubListener=yes
#ReadEtcHosts=yes

关于选项的简要说明:

  • DNS:以空格分隔的 IPv4 和 IPv6 地址列表,用作系统 DNS 服务器。
  • FallbackDNS:以空格分隔的 IPv4 和 IPv6 地址列表,用作后备 DNS 服务器。
  • Domains:在解析单标签主机名时,这些域名用于搜索后缀。 ~. 代表对于所有域名,优先使用 DNS= 定义的系统 DNS 服务器。
  • DNSOverTLS:如果启用,那么将加密与服务器的所有连接。请注意,此模式要求 DNS 服务器支持 DNS-over-TLS,并具有其 IP 的有效证书。
注意:上面示例中列出的 DNS 服务器是我个人的选择。你要确定要使用的 DNS 服务器。要注意你要向谁请求 IP。

步骤 2:告诉 NetworkManager 将信息推给 systemd-resolved

/etc/NetworkManager/conf.d 中创建一个名为 10-dns-systemd-resolved.conf 的文件。

$ cat /etc/NetworkManager/conf.d/10-dns-systemd-resolved.conf
[main]
dns=systemd-resolved

上面的设置(dns=systemd-resolved)让 NetworkManager 将从 DHCP 获得的 DNS 信息推送到 systemd-resolved 服务。这将覆盖步骤 1 中配置的 DNS 设置。这在受信任的网络中没问题,但是也可以设置为 dns=none 从而使用 /etc/systemd/resolved.conf 中配置的 DNS 服务器。

步骤 3: 启动和重启服务

若要使上述步骤中的配置生效,请启动并启用 systemd-resolved 服务。然后重启 NetworkManager 服务。

注意:在 NetworkManager 重启时,连接会中断几秒钟。

$ sudo systemctl start systemd-resolved
$ sudo systemctl enable systemd-resolved
$ sudo systemctl restart NetworkManager
注意:目前,systemd-resolved 服务默认处于禁用状态,是可选使用的。有计划在 Fedora 33 中默认启用systemd-resolved。

步骤 4:检查是否一切正常

现在,你应该在使用 DNS over TLS。检查 DNS 解析状态来确认这一点:

$ resolvectl status
MulticastDNS setting: yes
  DNSOverTLS setting: yes
      DNSSEC setting: yes
    DNSSEC supported: yes
  Current DNS Server: 1.1.1.1
         DNS Servers: 1.1.1.1
                      9.9.9.9
Fallback DNS Servers: 8.8.8.8
                      1.0.0.1
                      8.8.4.4

/etc/resolv.conf 应该指向 127.0.0.53

$ cat /etc/resolv.conf
# Generated by NetworkManager
search lan
nameserver 127.0.0.53

若要查看 systemd-resolved 发送和接收安全查询的地址和端口,请运行:

$ sudo ss -lntp | grep '\(State\|:53 \)'
State     Recv-Q    Send-Q       Local Address:Port        Peer Address:Port    Process
LISTEN    0         4096         127.0.0.53%lo:53               0.0.0.0:*        users:(("systemd-resolve",pid=10410,fd=18))

若要进行安全查询,请运行:

$ resolvectl query fedoraproject.org
fedoraproject.org: 8.43.85.67                  -- link: wlp58s0
                   8.43.85.73                  -- link: wlp58s0

[..]

-- Information acquired via protocol DNS in 36.3ms.
-- Data is authenticated: yes

额外步骤 5:使用 Wireshark 验证配置

首先,安装并运行 Wireshark

$ sudo dnf install wireshark
$ sudo wireshark

它会询问你在哪个设备上捕获数据包。在我这里,因为我使用无线接口,我用的是 wlp58s0。在 Wireshark 中设置筛选器,tcp.port == 853(853 是 DNS over TLS 协议端口)。在捕获 DNS 查询之前,你需要刷新本地 DNS 缓存:

$ sudo resolvectl flush-caches

现在运行:

$ nslookup fedoramagazine.org

你应该会看到你的计算机和配置的 DNS 服务器之间的 TLS 加密交换:


via: https://fedoramagazine.org/use-dns-over-tls/

作者:Thomas Bianchi 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

通过理解安全证书来保护你的 Linux 邮件服务。

通常,不管你是通过 简单邮件传输协议 Simple Mail Transport Protocol (SMTP)或者 互联网消息访问协议 Internet Message Access Protocol (IMAP)或 邮局协议 Post Office Protocol (POP)发送或者接受邮件,邮件服务默认都是以无保护的明文来传输数据。近来随着数据加密成为越来越多程序的共识,你需要 安全套接层 Secure Sockets Layer / 传输层安全性 Transport Layer Security (SSL/TLS)的安全证书来保护你的邮件服务。

首先,快速回顾一下邮件服务和协议的基本流程。邮件通过 SMTP 从 TCP 端口 25 发出。这个协议依靠 DNS 邮件交换服务器 Mail eXchanger (MX)记录的地址信息来传输邮件。当邮件到达邮件服务器后,可以被以下两种服务中的任意一种检索:使用 TCP 端口 143 的 IMAP,或者使用 TCP 端口 110 的 POP3(邮局协议第 3 版)。然而,以上服务都默认使用明文传输邮件和认证信息。这非常的不安全!

为了保护电子邮件数据和认证,这些服务都增加了一个安全功能,使它们可以利用 SSL/TLS 证书对数据流和通讯进行加密封装。SSL/TLS 是如何加密数据的细节不在本文讨论范围,有兴趣的话可以阅读 Bryant Son 关于互联网安全的文章了解更多细节。概括的说,SSL/TLS 加密是一种基于公钥和私钥的算法。

通过加入这些安全功能后,这些服务将监听在新的 TCP 端口:

服务默认 TCP 端口SSL/TLS 端口
SMTP25587
IMAP143993
POP3110995

生成 SSL/TLS 证书

OpenSSL 可以生成免费的 SSL/TLS 证书,或者你也可以从公共 证书颁发机构 Certificate Authoritie (CA)购买。过去,生成自签发证书十分简单而且通用,但是由于安全被日益重视,大部分的邮件客户端是不信任自签发证书的,除非手动设置。

如果你只是自己使用或者做做测试,那就使用自签发证书省点钱吧。但是如果很多人或者客户也需要使用的话,那最好还是从受信任的证书颁发机构购买。

不管是哪种情况,开始请求新证书的过程是使用 Linux 系统上的 OpenSSL 工具来创建一个 证书签发请求 Certificate Signing Request (CSR):

$ openssl req -new -newkey rsa:2048 -nodes -keyout mail.mydomain.key -out mail.mydomain.csr

这个命令会为你想保护的服务同时生成一个新的 CSR 文件和一个私匙。它会询问你一些证书相关的问题,如:位置、服务器的 完全合规域名 Fully Qualified Domain Name (FQDN)、邮件联系信息等等。当你输入完这些信息后,私钥和 CSR 文件就生成完毕了。

如果你想生成自签发证书

如果你想要生成自签发证书的话,在运行以上 CSR 命令之前,你必须先创建一个自己的根 CA。你可以通过以下方法创建自己的根 CA。

$ openssl genrsa -des3 -out myCA.key 2048

命令行会提示你输入一个密码。请输入一个复杂点的密码而且不要弄丢了,因为这将会是根 CA 私钥的密码,正如其名称所示,它是你的证书中所有信任关系的根。

接下来,生成根 CA 证书:

$ openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem

在回答完一些问题后,你就拥有一个有效期为 5 年的根 CA 证书了。

用之前生成的 CSR 文件,你可以请求生成一个新证书,并由您刚才创建的根 CA 签名。

$ openssl x509 -req -in mail.mydomain.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out mail.mydomain.pem -days 1825 -sha256

输入你的根 CA 私钥的密码来创建和签署证书。

现在你有了配置电子邮件服务以增强安全性所需的两个文件:私匙文件 mail.mydomain.key 和公开证书文件 mail.mydomain.pem

如果你愿意购买证书

如果你愿意从机构购买证书,则需要上传 CSR 文件到证书颁发机构的系统中,它将会被用于生成 SSL/TLS 证书。证书可作为文件下载,比如 mail.mydomain.pem。很多 SSL 机构也需要你下载一个中间证书。如果是这样的话,你必须把这个两个证书合并成一个,这样电子邮件服务就可以将这两个证书结合起来处理。可以使用以下命令把你的证书和第三方中间证书合并在一起:

$ cat mail.mydomain.pem gd_bundle-g2-g1.crt > mail.mydomain.pem

值得一提的是 .pem 文件后缀代表 隐私增强邮件 Privacy-Enhanced Mail

现在你就有全部的设置邮件服务安全所需文件了:私匙文件 mail.mydomain.key 和组合的公开证书文件 mail.mydomain.pem

为你的文件生成一个安全的文件夹

不管你是的证书是自签发的或者从机构购买,你都需要生成一个安全的,管理员拥有的文件夹用于保存这两个文件。可以使用以下命令来生成:

$ mkdir /etc/pki/tls
$ chown root:root /etc/pki/tls
$ chmod 700 /etc/pki/tls

在复制文件到 /etc/pki/tls 后,再次设置这些文件的权限:

$ chmod 600 /etc/pki/tls/*

配置你的 SMTP 和 IMAP 服务

接下来,让 SMTP 和 IMAP 服务使用新的安全证书。我们用 postfixdovecot 来作为例子。

用你顺手的编辑器来编辑 /etc/postfix/main.cf 文件。添加以下几行:

smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/mail.mydomain.pem
smtpd_tls_key_file = /etc/pki/tls/mail.mydomain.key

自定义选项

以下选项可以启用或禁用各种加密算法,协议等等:

smtpd_tls_eecdh_grade = strong
smtpd_tls_protocols= !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_mandatory_protocols= !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_mandatory_ciphers = high
smtpd_tls_security_level=may
smtpd_tls_ciphers = high
tls_preempt_cipherlist = yes
smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5 , DES, ADH, RC4, PSD, SRP, 3DES, eNULL
smtpd_tls_exclude_ciphers = aNULL, MD5 , DES, ADH, RC4, PSD, SRP, 3DES, eNULL
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1

编辑 /etc/dovecot/dovecot.conf 文件,添加以下三行:

ssl = required
ssl_cert = </etc/pki/tls/mail.mydomain.pem
ssl_key = </etc/pki/tls/mail.mydomain.key

添加下列更多选项来启用或禁用各种加密算法、协议等等(我把这些留给你来理解):

ssl_cipher_list = EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:ALL:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SSLv2
ssl_prefer_server_ciphers = yes
ssl_protocols = !SSLv2 !SSLv3 !TLSv1 !TLSv1.1
ssl_min_protocol = TLSv1.2

设置 SELinux 上下文

如果你的 Linux 发行版启用了 SELinux,请为你的新证书文件设置正确的 SELinux 上下文。

对于 Postfix 设置 SELinux:

$ chcon -u system_u -t cert_t mail.mydomain.*

对于 Dovecot 设置 SELinux:

$ chcon -u system_u -t dovecot_cert_t mail.mydomain.*

重启这些服务,并与你相应更新过的电子邮件客户端配置连接。有些电子邮件客户端会自动探测到新的端口,有些则需要你手动更新。

测试配置

openssl 命令行和 s_client 插件来简单测试一下:

$ openssl s_client -connect mail.mydomain.com:993
$ openssl s_client -starttls imap -connect mail.mydomain.com:143
$ openssl s_client -starttls smtp -connect mail.mydomain.com:587

这些测试命令会打印出很多信息,关于你使用的连接、证书、加密算法、会话和协议。这不仅是一个验证新设置的好方法,也可以确认你使用了适当的证书,以及在 postfix 或 dovecot 配置文件中定义的安全设置正确。

保持安全!


via: https://opensource.com/article/20/4/securing-linux-email

作者:Marc Skinner 选题:lujun9972 译者:Acceleratorrrr 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在本教程中,我们将学习安装 VNC 服务器并使用 TLS 加密保护 VNC 会话。

此方法已经在 CentOS 6&7 上测试过了,但是也可以在其它的版本/操作系统上运行(RHEL、Scientific Linux 等)。

(推荐阅读:保护 SSH 会话终极指南

安装 VNC 服务器

在机器上安装 VNC 服务器之前,请确保我们有一个可用的 GUI(图形用户界面)。如果机器上还没有安装 GUI,我们可以通过执行以下命令来安装:

yum groupinstall "GNOME Desktop"

现在我们将 tigervnc 作为我们的 VNC 服务器,运行下面的命令运行:

# yum install tigervnc-server

安装完成后,我们将创建一个新的用户访问服务器:

# useradd vncuser

并使用以下命令为其分配访问 VNC 的密码:

# vncpasswd vncuser

我们在 CentOS 6&7 上配置会有一点改变,我们首先看 CentOS 6 的配置。

CentOS 6

现在我们需要编辑 VNC 配置文件:

# vim /etc/sysconfig/vncservers

并添加下面这几行:

[ …]
VNCSERVERS= "1:vncuser"
VNCSERVERARGS[1]= "-geometry 1024×768″

保存文件并退出。接下来重启 vnc 服务使改动生效:

# service vncserver restart

并在启动时启用它:

# chkconfig vncserver on

CentOS 7

在 CentOS 7 上,/etc/sysconfig/vncservers 已经改为 /lib/systemd/system/[email protected]。我们将使用这个配置文件作为参考,所以创建一个文件的副本,

# cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service

接下来,我们将编辑文件以包含我们创建的用户:

# vim /etc/systemd/system/vncserver@:1.service

编辑下面 2 行中的用户:

ExecStart=/sbin/runuser -l vncuser -c "/usr/bin/vncserver %i"
PIDFile=/home/vncuser/.vnc/%H%i.pid

保存文件并退出。接下来重启服务并在启动时启用它:

# systemctl restart vncserver@:1.service
# systemctl enable vncserver@:1.service

现在我们已经设置好了 VNC 服务器,并且可以使用 VNC 服务器的 IP 地址从客户机连接到它。但是,在此之前,我们将使用 TLS 加密保护我们的连接。

保护 VNC 会话

要保护 VNC 会话,我们将首先配置加密方法。我们将使用 TLS 加密,但也可以使用 SSL 加密。执行以下命令在 VNC 服务器上使用 TLS 加密:

# vncserver -SecurityTypes=VeNCrypt,TLSVnc

你将被要求输入密码来访问 VNC(如果使用其他用户,而不是上述用户)。

secure vnc server

现在,我们可以使用客户机上的 VNC 浏览器访问服务器,使用以下命令以安全连接启动 vnc 浏览器:

# vncviewer -SecurityTypes=VeNCrypt,TLSVnc 192.168.1.45:1

这里,192.168.1.45 是 VNC 服务器的 IP 地址。

secure vnc server

输入密码,我们可以远程访问服务器,并且也是 TLS 加密的。

这篇教程就完了,欢迎随时使用下面的评论栏提交你的建议或疑问。


via: http://linuxtechlab.com/secure-vnc-server-tls-encryption/

作者:Shusain 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出