You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Landscape向已加入域的Ubuntu客户端部署基于用户的CA证书

如何通过Landscape向已加入域的Ubuntu客户端部署基于用户的CA证书

嘿,我刚好在之前的项目里处理过类似需求,给你分享几个实用的方法,帮你通过Landscape把基于用户的CA证书部署到Ubuntu客户端上:


方法一:自定义脚本推送(最直接的方式)

Landscape支持批量推送Shell脚本到管理的客户端,这是快速实现的首选方案:

  1. 准备证书文件:先从安全团队拿到CA证书(确保是PEM格式,后缀一般是.crt或.pem),你可以把它上传到Landscape的「资源库」,或者直接把证书文本内容嵌入脚本里。
  2. 编写安装脚本:写一段简单的Shell脚本,完成证书部署和信任库更新:
    # 创建用户专属证书目录(不存在则自动创建)
    mkdir -p ~/.local/share/ca-certificates/
    # 从Landscape资源库下载证书到临时目录(如果上传了资源库的话)
    landscape-download-resource "enterprise-ca.crt" /tmp/
    # 复制证书到用户证书目录
    cp /tmp/enterprise-ca.crt ~/.local/share/ca-certificates/
    # 更新用户级别的信任证书库
    update-ca-certificates --user
    
    👉 提示:如果证书是直接嵌入脚本的,可以用echo "证书内容" > ~/.local/share/ca-certificates/enterprise-ca.crt替代下载和复制步骤。
  3. 在Landscape执行脚本任务:
    • 登录Landscape控制台,进入「脚本」页面创建新任务。
    • 选择需要部署证书的客户端组,上传/粘贴脚本,设置执行上下文为用户级别(确保脚本以目标用户身份运行,避免安装到root目录)。
    • 触发任务后,Landscape会自动把脚本推送到所有目标客户端执行。

方法二:配置管理工具集成(适合长期运维)

如果你的Landscape已经集成了Puppet、Chef这类配置管理工具,或者用了Landscape自带的配置模块,可以用这种更规范的方式:

  • Puppet示例:编写一个Puppet清单,定义证书文件路径和更新命令:
    file { "${home}/.local/share/ca-certificates/enterprise-ca.crt":
      ensure => present,
      source => "puppet:///modules/certs/enterprise-ca.crt",
      owner  => $user,
      group  => $user,
      mode   => '0644',
    }
    
    exec { "update-user-ca-cert":
      command     => "update-ca-certificates --user",
      subscribe   => File["${home}/.local/share/ca-certificates/enterprise-ca.crt"],
      refreshonly => true,
      user        => $user,
    }
    
    然后在Landscape中触发Puppet强制运行,客户端会自动拉取并应用配置。
  • Landscape自带配置管理:在「配置」页面添加「文件资源」,指定源文件为CA证书,目标路径为~/.local/share/ca-certificates/enterprise-ca.crt;再添加「命令资源」执行update-ca-certificates --user,并设置依赖于前面的文件资源,确保证书更新后自动刷新信任库。

关键注意事项

  • 证书格式检查:Ubuntu的update-ca-certificates只识别PEM格式,如果是DER格式,先转成PEM:openssl x509 -inform der -in enterprise-ca.der -out enterprise-ca.crt。
  • 用户级vs全局部署:如果要给所有用户部署,可把证书放到/usr/local/share/ca-certificates/并运行update-ca-certificates(不带--user参数),但你需要的是基于用户的,所以坚持用用户目录更合适。
  • 测试先行:先在单个客户端手动执行脚本,通过certutil -L -d sql:$HOME/.pki/nssdb查看用户信任证书,确认成功后再批量推送,避免踩坑。

备注:内容来源于stack exchange,提问作者Karthick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 14:27:49