如何使用 STARTTLS 加密 OpenLDAP 连接

简介

OpenLDAP提供了一个灵活且得到良好支持的LDAP目录服务。然而,默认情况下,服务器本身是通过未加密的网络连接进行通信的。在本指南中,我们将演示如何使用STARTTLS加密连接到OpenLDAP,以将传统连接升级为TLS。我们将使用Ubuntu 14.04作为我们的LDAP服务器。

先决条件

在开始本指南之前,您应该在服务器上设置一个具有sudo权限的非root用户。要设置此类型的用户,请按照我们的Ubuntu 14.04初始设置指南进行操作。

在本指南中,我们将介绍如何在Ubuntu 14.04服务器上安装OpenLDAP。如果您的服务器上已经安装了OpenLDAP,可以跳过相关的安装和配置步骤。

SSL上的LDAP vs STARTTLS上的LDAP

有两种使用SSL/TLS加密LDAP连接的方式。

传统上,需要加密的LDAP连接是在单独的端口上处理的,通常是636。整个连接将被SSL/TLS包装。这个过程称为LDAP over SSL,使用ldaps://协议。这种加密方法现在已经被弃用。

STARTTLS是一种替代方法,现在是首选的加密LDAP连接的方法。STARTTLS通过在连接过程中/之后使用SSL/TLS“升级”非加密连接。这允许未加密和加密连接通过同一端口处理。本指南将利用STARTTLS来加密连接。

设置主机名和FQDN

在开始之前,我们应该设置服务器,以便它正确解析其主机名和完全限定域名(FQDN)。这将是为了使我们的证书能够被客户端验证。我们假设我们的LDAP服务器将托管在一个名为ldap.example.com的机器上。

要在服务器的所有相关位置设置主机名,请使用hostnamectl命令和set-hostname选项。将主机名设置为短主机名(不包括域名组件):

sudo hostnamectl set-hostname ldap

接下来,我们需要通过确保我们的/etc/hosts文件具有正确的信息来设置服务器的FQDN:

sudo nano /etc/hosts

找到映射127.0.1.1 IP地址的行。将IP地址后的第一个字段更改为服务器的FQDN,第二个字段更改为短主机名。对于我们的示例,它看起来可能是这样的:

. . .127.0.1.1 ldap.example.com ldap
127.0.0.1 localhost. . .

完成后保存并关闭文件。

您可以通过输入以下命令来检查是否已正确配置这些值:

hostname

这应该返回您的短主机名:

ldap

通过输入以下命令来检查FQDN:

hostname -f

这应该返回FQDN:

ldap.example.com

安装LDAP服务器和GnuTLS软件

确保主机名正确设置后,我们可以安装所需的软件。如果您已经安装并配置了OpenLDAP,可以跳过第一个子部分。

安装OpenLDAP服务器

如果您尚未安装OpenLDAP,现在是解决这个问题的时候了。通过输入以下命令更新服务器的本地软件包索引并安装软件:

sudo apt-get update
sudo apt-get install slapd ldap-utils

系统会要求您提供LDAP管理员密码。可以跳过提示,因为我们将立即重新配置。

为了访问我们需要的一些额外提示,我们将在安装后重新配置软件包。输入以下命令:

sudo dpkg-reconfigure slapd

适当地回答提示,使用以下信息作为起点:

  • 省略OpenLDAP服务器配置? No(我们需要一个初始数据库和配置)
  • DNS域名:example.com(使用服务器的域名,减去主机名。这将用于创建信息树的基本条目)
  • 组织名称:Example Inc(这将简单地作为您的组织名称添加到基本条目中)
  • 管理员密码:[您喜欢的任何密码]
  • 确认密码:[必须与上面的匹配]
  • 要使用的数据库后端:HDB(在两个选择中,这个功能最多)
  • 当slapd被清除时,您想要删除数据库吗?(您的选择。选择“是”以允许完全清除,选择“否”以在软件被移除时保存数据)
  • 移动旧数据库? Yes
  • 允许LDAPv2协议? No

安装 SSL 组件

一旦配置好 OpenLDAP 服务器,我们可以继续安装我们将用于加密连接的软件包。Ubuntu OpenLDAP 软件包是针对 GnuTLS SSL 库编译的,因此我们将使用 GnuTLS 来生成我们的 SSL 凭据:

sudo apt-get install gnutls-bin ssl-cert

安装完所有工具后,我们可以开始创建证书和密钥,以加密我们的连接。

创建证书模板

为了加密我们的连接,我们需要配置一个证书颁发机构,并使用它来签署我们基础设施中 LDAP 服务器的密钥。因此,对于我们的单服务器设置,我们将需要两组密钥/证书对:一个用于证书颁发机构本身,另一个与 LDAP 服务相关联。

为了创建代表这些实体所需的证书,我们将创建一些模板文件。这些文件将包含 certtool 实用程序需要的信息,以便创建具有适当属性的证书。

首先创建一个目录来存储模板文件:

sudo mkdir /etc/ssl/templates

创建 CA 模板

首先创建证书颁发机构的模板。我们将文件命名为 ca_server.conf。使用文本编辑器创建并打开文件:

sudo nano /etc/ssl/templates/ca_server.conf

我们只需要提供一些信息,以成功创建证书颁发机构。我们需要通过添加 ca 选项来指定证书将用于 CA(证书颁发机构)。我们还需要 cert_signing_key 选项,以赋予生成的证书签署其他证书的能力。我们可以将 cn 设置为我们想要为证书颁发机构使用的描述性名称:

cn = LDAP 服务器 CA
ca
cert_signing_key

保存并关闭文件。

创建 LDAP 服务模板

接下来,我们可以创建我们的 LDAP 服务器证书模板,命名为 ldap_server.conf。使用 sudo 权限创建并打开文件:

sudo nano /etc/ssl/templates/ldap_server.conf

在这里,我们将提供一些不同的信息。我们将提供我们组织的名称,并设置 tls_www_serverencryption_keysigning_key 选项,以使我们的证书具有所需的基本功能。

此模板中的 cn 必须与 LDAP 服务器的 FQDN 匹配。如果此值不匹配,客户端将拒绝服务器的证书。我们还将为证书设置到期日期。我们将创建一个为期 10 年的证书,以避免频繁更新的管理:

organization = "Example Inc"
cn = ldap.example.com
tls_www_server
encryption_key
signing_key
expiration_days = 3652

完成后保存并关闭文件。

创建 CA 密钥和证书

现在我们有了模板,可以创建我们的两个密钥/证书对。首先需要创建证书颁发机构的密钥对。

使用 certtool 实用程序生成私钥。/etc/ssl/private 目录受到非 root 用户的保护,是放置我们将要生成的私钥的适当位置。我们可以通过输入以下命令,在该目录中生成私钥并将其写入名为 ca_server.key 的文件中:

sudo certtool -p --outfile /etc/ssl/private/ca_server.key

现在,我们可以使用刚生成的私钥和上一节中创建的模板文件来创建证书颁发机构证书。我们将把它写入 /etc/ssl/certs 目录中的名为 ca_server.pem 的文件:

sudo certtool -s --load-privkey /etc/ssl/private/ca_server.key --template /etc/ssl/templates/ca_server.conf --outfile /etc/ssl/certs/ca_server.pem

现在我们有了证书颁发机构的私钥和证书对。我们可以使用它来签署将用于实际加密 LDAP 会话的密钥。

创建 LDAP 服务密钥和证书

接下来,我们需要为我们的 LDAP 服务器生成一个私钥。出于安全考虑,我们将再次将生成的密钥放在 /etc/ssl/private 目录中,并将文件命名为 ldap_server.key

我们可以通过输入以下命令生成适当的密钥:

sudo certtool -p --sec-param high --outfile /etc/ssl/private/ldap_server.key

一旦我们有了 LDAP 服务器的私钥,我们就拥有了生成服务器证书所需的一切。我们将需要几乎所有到目前为止创建的组件(CA 证书和密钥、LDAP 服务器密钥和 LDAP 服务器模板)。

我们将把证书放在 /etc/ssl/certs 目录中,并将其命名为 ldap_server.pem。我们需要的命令是:

sudo certtool -c --load-privkey /etc/ssl/private/ldap_server.key --load-ca-certificate /etc/ssl/certs/ca_server.pem --load-ca-privkey /etc/ssl/private/ca_server.key --template /etc/ssl/templates/ldap_server.conf --outfile /etc/ssl/certs/ldap_server.pem

给 OpenLDAP 访问 LDAP 服务器密钥

我们现在已经拥有了所有需要的证书和密钥。然而,目前我们的 OpenLDAP 进程将无法访问自己的密钥。

一个名为 ssl-cert 的组已经存在,作为 /etc/ssl/private 目录的组所有者。我们可以将我们的 OpenLDAP 进程运行的用户(openldap)添加到这个组中:

sudo usermod -aG ssl-cert openldap

现在,我们的 OpenLDAP 用户已经可以访问该目录。不过,我们仍然需要将该组拥有 ldap_server.key 文件的所有权,以便允许读取访问。通过输入以下命令,将 ssl-cert 组拥有该文件的所有权:

sudo chown :ssl-cert /etc/ssl/private/ldap_server.key

现在,给 ssl-cert 组读取文件的权限:

sudo chmod 640 /etc/ssl/private/ldap_server.key

我们的 OpenSSL 进程现在可以正确访问密钥文件。

配置 OpenLDAP 使用证书和密钥

我们已经拥有了文件,并且已经正确配置了对组件的访问。现在,我们需要修改我们的 OpenLDAP 配置,以使用我们制作的文件。我们将通过创建一个 LDIF 文件来进行配置更改,并将其加载到我们的 LDAP 实例中。

移动到你的主目录并打开一个名为 addcerts.ldif 的文件。我们将把我们的配置更改放入这个文件中:

cd ~
nano addcerts.ldif

为了进行配置更改,我们需要针对配置 DIT 的 cn=config 条目。我们需要指定我们要修改条目的属性。之后,我们需要添加 olcTLSCACertificateFileolcCertificateFileolcCertificateKeyFile 属性,并将它们设置为正确的文件位置。

最终结果将如下所示:


dn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/ca_server.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/ldap_server.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/ldap_server.key

完成后保存并关闭文件。使用 ldapmodify 命令将更改应用到你的 OpenLDAP 系统:

sudo ldapmodify -H ldapi:// -Y EXTERNAL -f addcerts.ldif

我们可以重新加载 OpenLDAP 以应用更改:

sudo service slapd force-reload

现在,我们的客户端可以通过传统的 ldap:// 端口加密连接到服务器,使用 STARTTLS。

设置客户端机器

为了连接到 LDAP 服务器并启动 STARTTLS 升级,客户端必须访问证书颁发机构证书并请求升级。

在 OpenLDAP 服务器上

如果你是从服务器本身与 OpenLDAP 服务器进行交互,你可以通过复制 CA 证书并调整客户端配置文件来设置客户端实用程序。

首先,从 /etc/ssl/certs 目录将 CA 证书复制到 /etc/ldap 目录中的一个文件。我们将称此文件为 ca_certs.pem。此文件可用于存储此计算机上的客户端可能希望访问的所有 CA 证书。对于我们的目的,这将只包含一个单独的证书:

sudo cp /etc/ssl/certs/ca_server.pem /etc/ldap/ca_certs.pem

现在,我们可以调整 OpenLDAP 实用程序的系统范围配置文件。使用 sudo 权限在文本编辑器中打开配置文件:

sudo nano /etc/ldap/ldap.conf

调整 TLS_CACERT 选项的值,指向我们刚刚创建的文件:


. . .TLS_CACERT /etc/ldap/ca_certs.pem. . .

保存并关闭文件。

现在,你应该能够通过在使用 OpenLDAP 实用程序时传递 -Z 选项来升级你的连接以使用 STARTTLS。你可以通过传递两次来强制进行 STARTTLS 升级。通过输入以下命令来测试:

ldapwhoami -H ldap:// -x -ZZ

这将强制进行 STARTTLS 升级。如果成功,你应该会看到:


anonymous

如果你配置错误,你可能会看到类似以下错误:


ldap_start_tls: Connect error (-11)additional info: (unknown error code)

配置远程客户端

如果你需要从远程服务器连接到你的 OpenLDAP 服务器,你需要完成类似的过程。首先,你需要将 CA 证书复制到客户端机器上。你可以使用 scp 工具轻松完成这一步。

将 SSH 密钥转发到客户端

如果你使用 SSH 密钥连接到你的 OpenLDAP 服务器,并且你的客户端机器也是远程的,你需要将它们添加到代理并在连接到客户端机器时进行转发。

在你的本地机器上,通过输入以下命令启动 SSH 代理:

eval $(ssh-agent)

通过输入以下命令将你的 SSH 密钥添加到代理:

ssh-add

现在,当你连接到 LDAP 客户端机器时,你可以通过添加 -A 标志来转发你的 SSH 密钥:

ssh -A user@ldap_client
复制 CA 证书

一旦你连接到 OpenLDAP 客户端,你可以通过输入以下命令来复制 CA 证书:

scp user@ldap.example.com:/etc/ssl/certs/ca_server.pem ~/

现在,将复制的证书追加到客户端已知的 CA 证书列表中。如果文件已经存在,这将追加证书到文件中,如果文件不存在,则会创建文件:

cat ~/ca_server.pem | sudo tee -a /etc/ldap/ca_certs.pem
调整客户端配置

接下来,我们可以调整 LDAP 实用程序的全局配置文件,以指向我们的 ca_certs.pem 文件。通过使用 sudo 权限打开文件:

sudo nano /etc/ldap/ldap.conf

找到 TLS_CACERT 选项,并将其设置为 ca_certs.pem 文件:


. . .TLS_CACERT /etc/ldap/ca_certs.pem. . .

完成后保存并关闭文件。

通过输入以下命令测试 STARTTLS 升级:

ldapwhoami -H ldap://ldap.example.com -x -ZZ

如果 STARTTLS 升级成功,你应该会看到:


anonymous

强制连接使用 TLS(可选)

我们已成功配置了我们的 OpenLDAP 服务器,使其可以通过 STARTTLS 过程无缝升级普通 LDAP 连接为 TLS。然而,这仍允许未加密的会话,这可能不是你想要的。

如果你希望强制对每个连接进行 STARTTLS 升级,你可以调整服务器的设置。我们将仅将此要求应用于常规 DIT,而不是 cn=config 条目下可访问的配置 DIT。

首先,你需要找到要修改的适当条目。我们将打印 OpenLDAP 服务器关于每个 DIT(LDAP 服务器处理的条目层次结构)的信息以及配置每个 DIT 的条目的列表。

在你的 OpenLDAP 服务器上,输入以下命令:

sudo ldapsearch -H ldapi:// -Y EXTERNAL -b "cn=config" -LLL -Q "(olcSuffix=*)" dn olcSuffix

响应应该类似于:


dn: olcDatabase={1}hdb,cn=config
olcSuffix: dc=example,dc=com

如果你的服务器配置为处理多个 DIT,则可能会有多个 DIT 和数据库对。在这里,我们有一个基础条目为 dc=example,dc=com 的单个 DIT,这将是为 example.com 域创建的条目。这个 DIT 的配置由 olcDatabase={1}hdb,cn=config 条目处理。记下你想要强制加密的 DIT 的 DN。

我们将使用 LDIF 文件进行更改。在你的主目录中创建 LDIF 文件。我们将其命名为 forcetls.ldif

nano ~/forcetls.ldif

在文件中,定位你想要强制 TLS 的 DN。在我们的情况下,这将是 dn: olcDatabase={1}hdb,cn=config。我们将 changetype 设置为 “modify” 并添加 olcSecurity 属性。将属性的值设置为 “tls=1” 以强制对此 DIT 使用 TLS:


dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcSecurity
olcSecurity: tls=1

完成后保存并关闭文件。

应用更改,输入以下命令:

sudo ldapmodify -H ldapi:// -Y EXTERNAL -f forcetls.ldif

通过输入以下命令重新加载 OpenLDAP 服务:

sudo service slapd force-reload

现在,如果你搜索 dc=example,dc=com DIT,如果你没有使用 -Z 选项来启动 STARTTLS 升级,你将被拒绝:

ldapsearch -H ldap:// -x -b "dc=example,dc=com" -LLL dn
Confidentiality required (13)
Additional information: TLS confidentiality required

我们可以证明 STARTTLS 连接仍然可以正常工作:

ldapsearch -H ldap:// -x -b "dc=example,dc=com" -LLL -Z dn
dn: dc=example,dc=comdn: cn=admin,dc=example,dc=com

结论

现在您应该已经配置了启用了 STARTTLS 加密的 OpenLDAP 服务器。使用 TLS 加密连接到 OpenLDAP 服务器可以让您验证您正在连接的服务器的身份。它还可以保护您的流量免受中间人的干扰。在开放网络上连接时,加密流量是至关重要的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/27617.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

八、BGP

目录 一、为何需要BGP? 二、BGP 2.1、BGP邻居 2.2、BGP报文 2.3、BGP路由 2.4、BGP通告遵循原则 2.5、BGP实验 第一步:建立邻居 第二步:引入路由 BGP路由黑洞 路由黑洞解决方案 1、IBGP全互联 2、路由引入 3、MPLS 多协…

甘肃这款饼子很火 你是否有吃过呢

白吉饼那独特的外形,圆圆的十分可爱。👏它的表皮酥脆,内里绵软,麦香四溢。😋拿在手里沉甸甸的,就知道用料十足。 无论是直接吃,感受那纯粹的面香,还是夹上腊汁肉,变成美味…

web前端换行命令:深入解析与实用技巧

web前端换行命令:深入解析与实用技巧 在Web前端开发中,换行命令是一项基础而重要的技能。它涉及到文本排版、布局控制以及用户体验的多个方面。本文将通过四个方面、五个方面、六个方面和七个方面的详细阐述,带您深入了解Web前端换行命令的奥…

ThinkPHP5.0 apache服务器配置URL重写,index.php去除

本地环境wamp .htaccess文件代码 <IfModule mod_rewrite.c>Options FollowSymlinks -MultiviewsRewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L] </IfModule> 踩过这个坑&a…

关于编程思想

面向过程思想 面向过程就是分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&#xff0c;使用的时候再一个一个的依次调用就可以了 JS就是典型的面向过程的编程语言 优点&#xff1a; 性能比面向对象高&#xff0c;适合跟硬件联系很紧密的东西&…

000.双指针方法题解目录

000.双指针方法题解目录 167. 两数之和 II - 输入有序数组&#xff08;中等&#xff09;

dbForge Studioor MySQL v6 解锁版 安装教程(MYSQL数据库客户端)

前言 dbForge Studioor MySQL是一个在Windows平台被广泛使用的MySQL客户端&#xff0c;它能够使MySQL开发人员和管理人员在一个方便的环境中与他人一起完成创建和执行查询&#xff0c;开发和调试MySQL程序&#xff0c;自动化管理MySQL数据库对象等工作。 一、下载地址 下载链…

什么是GPT-4

什么是GPT-4 ChatGPT 可以说&#xff0c;ChatGPT的发展&#xff0c;主要的分水岭在GPT-4&#xff0c;GPT-4主要是文本对话&#xff0c;且训练度也不够完善。GPT-4之后不但训练度得到了巨大提升&#xff0c;模型支持的参数量更是预计有1万亿参数&#xff0c;在这之后出现的GPT-4…

图书管理系统(SpringBoot+SpringMVC+MyBatis)

目录 1.数据库表设计 2.引入MyBatis和MySQL驱动依赖 3.配置数据库&日志 4.Model创建 5.用户登录功能实现 6.实现添加图书功能 7.实现翻页功能 1.数据库表设计 数据库表是应⽤程序开发中的⼀个重要环节, 数据库表的设计往往会决定我们的应⽤需求是否能顺利实现, 甚至决…

探索档案未来,尽在ARCHE-2024

2024年第三届上海国际智慧档案展览会暨高峰论坛&#xff08;ARCHE-2024&#xff09;将于2024年6月19日至21日在上海跨国采购会展中心隆重举行。深圳市铨顺宏科技有限公司应邀参展&#xff0c;将以全新形象盛装亮相&#xff0c;展示其在档案管理领域的最新技术和解决方案。 ARC…

UC Berkeley简介以及和Stanford的区别与联系

UC Berkeley Source: Google Map 中文版 UC Berkeley&#xff0c;全称University of California, Berkeley&#xff0c;是一所位于美国加利福尼亚州伯克利市的世界知名公立研究型大学。以下是关于UC Berkeley的详细介绍&#xff1a; 学术声誉和排名 学术声誉&#xff1a; U…

PROSAIL模型前向模拟与植被参数遥感

原文链接&#xff1a;PROSAIL模型前向模拟与植被参数遥感 “绿水青山就是金山银山”的生态文明理念现已深入人心&#xff0c;从顶层设计到全面部署&#xff0c;生态文明建设进入举措最实、推进最快、力度最大、成效最好的时期。生态文明评价必须将生态系统健康作为基本内容&am…

超详解——Python 字典详解——小白篇

目录 1. 创建字典 示例&#xff1a; 2. 访问字典中的元素 示例&#xff1a; 3. 修改字典元素 示例&#xff1a; 4. 删除字典元素 示例&#xff1a; 5. 查找元素是否是字典的键 示例&#xff1a; 6. 标准类型操作符 获取字典长度 合并两个字典 7. 常用内置函数 k…

TFT屏幕波形显示

REVIEW 关于TFT显示屏&#xff0c;之前已经做过彩条显示&#xff1a; TFT显示屏驱动_tft驱动-CSDN博客 关于ROM IP核&#xff0c;以及coe文件生成&#xff1a; FPGA寄存器 Vivado IP核_fpga寄存器资源-CSDN博客 1. TFT屏幕ROM显示正弦波 ①生成coe文件 %% sin-cos wave dat…

Redis: 深入解析高性能内存数据库的实现原理

一、Redis简介 Redis是一种基于内存的键值存储数据库&#xff0c;支持丰富的数据类型&#xff0c;如字符串、列表、集合、有序集合和哈希表。它不仅具有极高的性能&#xff0c;还支持数据持久化、主从复制和分布式架构&#xff0c;使其在各种应用场景中表现出色。 1.1 Redis的…

【Linux】基础IO [万字之作]

目录 一.重谈文件 二.重谈C文件操作 1.操作 1.文件的打开和关闭 2.文件的读写操作 ​编辑 1.fgetc函数 2.fputc函数 3.fputs函数 4.fgets函数 5.fprintf函数 6.fscanf函数 7.fread函数 8.fwrite函数 三.重谈当前路径 四.系统文件操作接口 1.Open函数 2.write函数 3…

记周末百度云防御CC攻击事件

今天一早&#xff0c;收到百度智能云短信提醒&#xff0c;一位客户的网站遭遇了CC攻击。 主机吧赶紧登陆客户网站查看&#xff0c;是否正常&#xff0c;看是否需要通知客户。 结果打开正常&#xff0c;看情况并没什么影响&#xff0c;那就等攻击结果了再看吧。 下午的时候&am…

Web前端高级课程:深入探索与技能飞跃

Web前端高级课程&#xff1a;深入探索与技能飞跃 在数字化时代的浪潮中&#xff0c;Web前端技术日新月异&#xff0c;对前端开发者的技能要求也日益提高。为了满足这一需求&#xff0c;我们精心打造了一款Web前端高级课程&#xff0c;旨在帮助学员掌握最前沿的前端技术&#x…

python-求f(x,n)

[题目描述] 输入&#xff1a; 输入 &#x1d465;和 &#x1d45b;。输出&#xff1a; 函数值&#xff0c;保留两位小数。样例输入1 4.2 10 样例输出1 3.68 来源/分类&#xff08;难度系数&#xff1a;一星&#xff09; 完整代码如下&#xff1a; x,nmap(eval,input().split(…

conda安装pytorch使用清华源

原命令&#xff0c;例&#xff1a; # CUDA 11.3 conda install pytorch1.11.0 torchvision0.12.0 torchaudio0.11.0 cudatoolkit11.3 -c pytorch使用清华源&#xff0c;例&#xff1a; # CUDA 11.3 conda install pytorch1.11.0 torchvision0.12.0 torchaudio0.11.0 cudatool…