服务器怎么才能获得客户端的公钥,常见方法有哪些?

SSH与TLS双向认证对比

服务器获取客户端公钥主要通过三种路径:在SSH认证中由客户端将公钥文件主动上传至服务器,在TLS握手时通过客户端证书直接提取,或通过Diffie‑Hellman等密钥交换协议间接派生,下文逐一拆解每种场景的实现步骤与原理,并对比不同方案的安全性与适用场景。

SSH服务器如何添加客户端公钥:标准操作流程

SSH公钥认证是服务器获得客户端公钥最直观的场景,客户端生成密钥对后,将公钥内容追加到服务器端~/.ssh/authorized_keys文件中,服务器即可使用该公钥验证客户端的签名。

操作步骤

  • 客户端生成密钥对:ssh‑keygen -t rsa -b 4096 -C "your_email@example.com"
  • 将公钥传输到服务器:ssh‑copy-id user@server_ip,或手动执行cat ~/.ssh/id_rsa.pub | ssh user@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
  • 设置服务器端文件权限:chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
  • 验证:ssh user@server_ip应无需密码直接登录

关键点

  • 服务器不会主动生成客户端的公钥,公钥必须由客户端产生并传递。
  • ssh‑copy-id工具会自动处理目录权限和追加操作,较手动方式更安全。
  • 一台服务器可以存储多个客户端的公钥,每个公钥占据一行。
  • 业内专家指出,公钥文件权限设置不正确是免密登录失效的常见原因,authorized_keys文件必须对除属主外的用户无写权限。

服务器获取客户端公钥原理:TLS双向认证中的证书提取

在HTTPS双向认证(mTLS)场景下,服务器通过客户端证书获得公钥,握手阶段服务器发送CertificateRequest请求,客户端将证书链发送给服务器,服务器从证书的

服务器怎么才能获得客户端的公钥,常见方法有哪些?

SubjectPublicKeyInfo字段中提取公钥,并利用证书签发机构的公钥验证证书合法性。

流程拆解

  • 服务器发送CertificateRequest,指定可接受的CA列表。
  • 客户端发送Certificate消息,包含符合要求的客户端证书。
  • 服务器验证证书签名、有效期、吊销状态后,提取公钥。
  • 若服务器使用该公钥加密随机数,则客户端必须拥有对应私钥才能解密,完成双向身份认证。

适用场景

  • 企业内部应用间的API通信,要求客户端持有合法证书。
  • 金融级接口调用,对客户端身份验证强度要求高。
  • 与SSH公钥上传相比,TLS证书方式不需要逐台服务器手动添加公钥,只需维护统一的CA即可管理大量客户端,规模化部署效率更高

客户端公钥传输到服务器方式对比:SSH上传与TLS证书

对比维度 SSH公钥认证 TLS双向认证
公钥传输方式 客户端手动上传或ssh‑copy-id 握手阶段自动携带
公钥管理 分散在每台服务器的authorized_keys文件 集中由CA签发,服务器端配置信任链
安全性 依赖公钥文件完整性,私钥泄露风险 证书链验证,可集成OCSP/CRL吊销
配置复杂度 低,单台或少量服务器友好 较高,需要搭建或使用已有CA
适用规模 推荐20台以内 适合大规模集群或微服务架构

行业共识认为,双向认证在安全性上优于静态公钥文件,但SSH公钥方式凭借其简单直接,仍被相当一部分中小团队采用,选择哪种方式取决于你对运维成本和认证强度的权衡。

服务器怎么才能获得客户端的公钥,常见方法有哪些?

公钥认证服务器配置工具:OpenSSH与Nginx实际设置

OpenSSH公钥认证设置

编辑/etc/ssh/sshd_config,确保以下参数开启:

  • PubkeyAuthentication yes
  • AuthorizedKeysFile .ssh/authorized_keys
  • PasswordAuthentication no (关闭密码登录以增强安全性)

重启服务:systemctl restart sshd

Nginx 客户端证书验证配置

在server块中启用:

ssl_client_certificate /etc/nginx/ca.crt;
ssl_verify_client on;
ssl_verify_depth 1;

我们可以通过配置实现获取客户端公钥两种常用方式:对于SSH,将公钥写入authorized_keys;对于TLS,指定CA证书路径并开启验证,Nginx会自动提取客户端证书中的公钥供后续处理。

检查客户端公钥是否成功上传服务器的命令

  • 查看authorized_keyscat ~/.ssh/authorized_keys
  • 验证SSH公钥指纹:ssh‑keygen -lf ~/.ssh/id_rsa.pub
  • 查看TLS握手日志:openssl s_client -connect server:443 -cert client.pem -key client.key

实操中容易卡住的几个细节

权限问题

SSH公钥认证长期无法生效,多数是因为.ssh目录权限大于700,或authorized_keys权限大于600,服务器会严格检查文件属主和权限,任何偏离都会导致公钥被忽略。

公钥格式错误

复制公钥时误拷贝了换行或额外字符,建议使用ssh‑keygen -y -f private_key重新生成公钥字符串,确保格式正确。

CA证书链不完整

TLS双向认证中,服务器必须拥有完整的CA证书链才能验证客户端证书,如果只配置了根证书,而客户端证书由中间CA签发,验证会失败,需要将中间CA证书一并配置到

服务器怎么才能获得客户端的公钥,常见方法有哪些?

ssl_client_certificate指向的文件中。

关于服务器获取客户端公钥的常见问题

服务器怎么获得客户端的公钥生成?

服务器无法参与客户端公钥的生成,公钥必须由客户端在本地通过密钥生成工具(如ssh‑keygenopenssl genrsa)产生,然后通过安全通道(如SSH拷贝、HTTPS上传)交付给服务器,服务器仅负责存储或验证公钥,不会主动生成。

SSH服务器如何添加客户端公钥才能避免被覆盖?

使用追加模式而非覆盖模式。ssh‑copy-id工具会自动追加,手动操作时使用cat file >> authorized_keys(双大于号),切勿使用>单大于号,否则会清空已有公钥,若需批量添加,可编写脚本逐行追加,或使用配置管理工具如Ansible的authorized_key模块。

客户端公钥丢失后服务器端如何清理?

登录服务器,编辑对应客户端用户的authorized_keys文件,删除该公钥所在行,若无法确定是哪一行,可通过公钥指纹匹配:在服务器执行ssh‑keygen -lf .ssh/authorized_keys列出所有公钥指纹,再与客户端本地ssh‑keygen -lf id_rsa.pub的输出比对,确认后手动删除。

服务器通过客户端证书获取公钥时,如何验证证书的有效性?

服务器会检查证书的签名是否由受信任的CA签发、证书是否在有效期内、是否已被吊销(通过OCSP或CRL)。ssl_verify_client on开启后,Apache/Nginx等服务器会自动完成这些校验,拒绝无效证书的握手请求,整个验证过程在握手阶段完成,无需额外手工操作。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/554413.html

(0)
服务器开发与运维哪个更有发展前景,如何选择?
上一篇 2026年8月7日 13:51
软件开发独立项目如何启动?从零到一完整流程指南
下一篇 2026年2月14日 06:01

相关推荐

  • hdr全景网站怎么做?hdr全景网站制作教程

    HDR全景网站通过高动态范围成像技术,将360度实景与极致光影细节结合,是当前提升房产、旅游及企业展厅线上转化率的最佳视觉解决方案,传统平面网页早已无法满足用户对沉浸式体验的需求,而HDR全景技术恰好填补了这一空白,它不仅仅是一张高清图片,而是一个可交互的空间,让用户在点击鼠标或滑动屏幕时,就能获得身临其境的实……

    2026年7月6日
    13800
  • 立陶宛VPS怎么样?海外BGP混合线路不限流量吗

    本次测评基于立陶宛数据中心部署的AMD Ryzen 9高性能VPS实例,重点验证海外BGP混合线路在网络传输稳定性与硬件性能方面的实际表现,活动期间,服务商开放了不限制流量的优惠政策,适用于建站、数据中转及高并发业务场景, 硬件配置与计算性能基准测试实例采用了AMD Ryzen 9系列处理器,该系列CPU以高主……

    2026年3月8日
    13300
  • 海外BGP混合线路vps优惠码怎么用?新春特惠流量无封顶vps推荐

    在当前复杂的网络环境下,选择一款既能提供高性能计算能力,又能保障网络连接质量的VPS服务器,对于企业和个人开发者而言至关重要,本次测评将针对市面上备受关注的新春特惠海外BGP混合线路VPS进行深度解析,重点考察其搭载的Intel Xeon处理器性能、网络架构稳定性以及流量政策,为用户提供具有参考价值的选购依据……

    2026年3月2日
    15300
  • 负载均衡后缀是什么,负载均衡配置

    负载均衡后缀在构建高可用、高并发的分布式系统架构中,负载均衡不仅是流量分发的核心枢纽,更是保障业务连续性的关键防线,随着云计算技术的迭代,服务器厂商在负载均衡产品的命名与功能标识上,往往通过特定的后缀来区分其性能等级、适用场景及核心技术特性,本文将深入剖析主流负载均衡产品的后缀含义,结合真实部署场景的测评数据……

    2026年4月19日
    6100
  • VPS跑Benchmark性能测试详细方法是什么?VPS性能测试工具有哪些

    跑分只是参考,真实体验看I/O和延迟;建议综合使用bench.sh和yabs进行多维度测试,重点关注磁盘随机读写速度而非单纯的CPU跑分,很多刚入手VPS的用户,看到跑分软件那一长串数字,容易陷入“唯分数论”的误区,对于大多数建站、跑脚本或学习Linux的场景来说,CPU的理论峰值性能往往不是瓶颈,磁盘的随机读……

    2026年6月17日
    2400
  • 2026年海外BGP多线Alexhost怎么样,Alexhost服务器值得购买吗

    本次测评基于2026年最新的Alexhost海外BGP多线服务器方案,重点针对其搭载的Intel Xeon处理器性能、网络线路质量以及流量政策进行深度解析,以下为详细测评数据与分析, 商家背景与方案概览Alexhost作为深耕海外主机市场多年的服务商,在2026年推出的这款BGP多线服务器,主打企业级稳定性能与……

    2026年3月3日
    14900
  • 负载均衡如何配策略路由器,策略路由配置方法详解

    在服务器架构运维中,流量调度能力直接决定了业务的高可用性与访问体验,近期我们对搭载高性能多线BGP网络的服务器进行了深度实测,重点验证在复杂网络环境下,负载均衡配合策略路由的实际效能,本次测评基于Linux内核级转发环境,结合厂商推出的2026年开年钜惠活动,为开发者与企业用户提供详尽的采购与配置参考, 测试环……

    2026年4月4日
    8000
  • 轻量应用服务器和云服务器到底有什么区别?云服务器和轻量应用服务器区别

    轻量应用服务器是“开箱即用”的一站式解决方案,适合个人开发者、初创团队及小型网站;而云服务器(CVM)是“积木式”的基础设施,适合中大型企业、高并发场景及需要精细化架构控制的技术团队,很多刚接触云计算的朋友,在面对控制台里琳琅满目的产品时,往往会产生一种选择困难症,左边写着“轻量”,右边顶着“云主机”或“云服务……

    2026年6月19日
    2700
  • 高防弹性ip是什么?高防弹性ip和普通ip有什么区别

    高防弹性IP通过整合云端分布式清洗能力与动态带宽调度,能在遭受大规模DDoS攻击时自动切换流量路径,保障业务连续性,是应对现代网络攻击的高性价比方案,高防弹性IP的核心价值与适用场景传统服务器在面对突发流量洪峰时,往往因为带宽被占满而导致业务瘫痪,高防弹性IP的出现,本质上是为了解决“带宽不够用”和“攻击打不死……

    2026年6月2日
    4100
  • 服务器U这个单位到底是什么意思?,怎么理解

    服务器中的“U”是衡量机架设备高度的标准单位,1U等于1.75英寸(约44.45毫米),它决定了服务器在标准机柜中的安装密度和空间占用,是选型、托管和成本核算的核心参数,服务器U是什么?从尺寸定义到行业标准机架单位的由来与物理尺寸U(Unit)最早由美国电子工业协会(EIA)提出,作为机架式设备的统一高度规范……

    2026年7月20日
    600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注