使用 Ansible 在 Windows 服务器上安装 SSL 证书

news2025/6/7 17:18:29

在本教程中,我将向您展示如何使用 Ansible 在 Windows 服务器上安装 SSL 证书。使用 Ansible 自动化 SSL 证书安装过程可以提高 IT 运营的效率、一致性和协作性。我将介绍以下步骤:

  1. 将 SSL 证书文件复制到服务器
  2. 将 PFX 证书导入指定的存储区
  3. 获取导入的证书
  4. 将证书绑定到网站
  5. 重启网站
  6. 运行 Ansible 脚本

先决条件


开始之前,请确保您已满足以下先决条件:

  • 本地计算机上已安装 Ansible
  • SSL 证书文件(.pfx 格式)和密码
  • 目标 Windows 服务器的访问权限

 步骤 1:将 SSL 证书文件复制到服务器


首先,我将使用 win_copy 模块将 SSL 证书文件复制到目标服务器。这是必要的,因为证书文件需要在服务器上可访问才能导入。以下是执行此步骤的 playbook 任务:

 

  - name: Copy SSL certificate file to server
    win_copy:
      src: "{{ certificate_source_path }}\\{{ certificate_name }}.{{ certificate_file_extension }}"
      dest: "{{ certificate_target_path }}\\{{ certificate_name }}.{{ certificate_file_extension }}" 

此任务使用 win_copy 模块将证书文件从源路径复制到目标路径。src 和 dest 选项分别指定源路径和目标路径。请务必将 certificate_source_path、certificate_name、certificate_file_extension 和 certificate_target_path 替换为您的证书的实际值。

步骤 2:导入 PFX 证书


接下来,我将使用 win_pfx_certificate 模块将 PFX 证书导入到指定的存储区。执行此步骤的 playbook 任务如下:

  - name: Import PFX Certificate
    win_pfx_certificate:
      path: "{{ certificate_target_path }}\\{{ certificate_name }}.{{ certificate_file_extension }}" 
      password: "{{ lookup('env', 'CERTIFICATE_PASSWORD') }}"
      store: "{{ store_name }}"
      exportable: yes
      force: yes

 此任务使用 win_pfx_certificate 模块导入位于指定路径的证书。password 选项指定证书的密码,store 选项指定导入证书的存储位置。exportable 选项设置为 yes 表示允许导出私钥,force 选项设置为 yes 表示如果证书已存在于存储中,则覆盖该证书。

步骤 3:获取导入的证书


我将使用 win_certificate 模块从目标 Windows 服务器上指定的证书存储区检索导入的证书。name 和 store 选项指定要检索的证书的名称和存储区。

register 选项将此任务的结果存储在名为 imported_certificate 的变量中,该变量可在后续任务中使用。

- name: Get Certificate
    win_certificate:
      name: "{{ certificate_name }}"
      store: "{{ store_name }}"
    register: imported_certificate

此任务很有用,因为我需要在其他任务中使用该证书,例如将其绑定到 IIS 网站。

步骤 4:将证书绑定到网站


证书已导入,我们可以将其绑定到网站了。为此,我将使用 win_iis_website_binding 模块。以下是执行此步骤的 playbook 任务:

 

- name: Bind Certificate to Websites (except Default Web Site)
    win_iis_website_binding:
      name: "{{ item }}"
      certificate_hash: "{{ imported_certificate.thumbprint }}"
      certificate_store: "{{ store_name }}"
      binding_information: "*:443:"
      state: present
    when: "item != 'Default Web Site'"
    loop: "{{ iis_target_website_names }}"

 此任务使用 win_iis_website_binding 模块将证书绑定到 iis_target_website_names 列表中的每个网站。certificate_hash 和 certificate_store 选项指定要使用的证书,binding_information 选项指定网站的绑定信息,在本例中使用端口 443 上的 HTTPS。when 条件确保证书未绑定到默认网站。loop 选项指定应将此任务应用于 iis_target_website_names 列表中的每个网站。

步骤 5:重启网站


最后,我将使用 win_iis_website 模块重启网站。此步骤必不可少,因为上一步中所做的绑定更改只有在网站重启后才会生效。重启网站可确保使用新的 SSL 证书。以下是执行此步骤的 playbook 任务:

  - name: Restart Websites (except Default Web Site)
    win_iis_website:
      name: "{{ item }}"
      state: started
    when: "item != 'Default Web Site'"
    loop: "{{ iis_target_website_names }}"

此任务将重新启动 iis_target_website_names 列表中指定的网站(默认网站除外)。win_iis_website 模块用于管理 IIS 网站的状态。在本例中,state 选项设置为 started,这意味着如果网站已停止,则将启动该网站;如果网站已启动,则保持原样。when 条件确保默认网站不受此任务的影响。如果您出于某些原因不想重新启动默认网站,这将非常有用。loop 选项指定该任务应应用于 iis_target_website_names 列表中的每个网站。这允许您使用单个任务指定要重新启动的多个网站。

步骤 6:运行 Ansible playbook

运行playbook之前,先定义好变量:

 var.yml 内容 

---
certificate_source_path: "C:\\path\\to\\certificate\\source"
certificate_target_path: "C:\\path\\to\\certificate\\target"
certificate_name: "mycert"
certificate_file_extension: "pfx"
store_name: "Personal"
iis_target_website_names:
  - Site_XYZ
  - Site_ABC

ansible-playbook 命令用于运行 Ansible playbook。playbook是一个脚本,定义了一系列将由 Ansible 在托管主机上执行的任务。

--extra-vars 选项用于在运行时将变量传递给playbook。此选项的参数应采用 YAML 字典的形式。@ 符号表示该值是文件系统上包含 YAML 字典的文件的路径。该路径应在 @ 符号后提供。-i 选项指定 Ansible 清单文件的路径。清单文件是一个文本文件,其中列出了托管主机的主机名或 IP 地址,并按主机组分组。playbook.yml 参数是要运行的playbook的路径。

ansible-playbook --extra-vars "@vars.yml" -i inventory.ini playbook.yml

 

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

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

相关文章

NLP学习路线图(二十六):自注意力机制

一、为何需要你?序列建模的困境 在你出现之前,循环神经网络(RNN)及其变种LSTM、GRU是处理序列数据(如文本、语音、时间序列)的主流工具。它们按顺序逐个处理输入元素,将历史信息压缩在一个隐藏…

Unity3D仿星露谷物语开发60之定制角色其他部位

1、目标 上一篇中定制了角色的衬衫、手臂。 本篇中将定制角色其他部位的图形,包括:裤子、发型、皮肤、帽子等。 2、定制裤子 (1)修改ApplyCharacterCustomisation.cs脚本 我们需要设置一个输入框选择裤子的颜色。 // Select …

Google机器学习实践指南(机器学习模型泛化能力)

🔥 Google机器学习(14)-机器学习模型泛化能力解析 Google机器学习(14)-机器学习模型泛化原理与优化(约10分钟) 一、泛化问题引入 ▲ 模型表现对比: 假设森林中树木健康状况预测模型: 图1:初始模型表现 …

MySQL性能调优:Mysql8高频面试题汇总

1,主键和唯一键有什么区别? 主键不能重复,不能为空,唯一键不能重复,可以为空。 建立主键的目的是让外键来引用。 一个表最多只有一个主键,但可以有很多唯一键 2,MySQL常用的存储引擎有哪些&…

vue+elementUI+springboot实现文件合并前端展示文件类型

项目场景: element的table上传文件并渲染出文件名称点击所属行可以查看文件,并且可以导出合并文件,此文章是记录合并文档前端展示的帖子 解决方案: 后端定义三个工具类 分别是pdf,doc和word的excle的目前我没整 word的工具类 package com.sc.modules…

高效绘制业务流程图!专业模板免费下载

在复杂的业务流程管理中,可视化工具已成为提升效能的核心基础设施。为助力开发者、项目经理及业务架构师高效落地流程标准化,本文将为你精选5套开箱即用的专业流程图模板。这些模板覆盖跨部门协作、电商订单、客户服务等高频场景,具备以下核心…

Spring Boot + Prometheus 实现应用监控(基于 Actuator 和 Micrometer)

文章目录 Spring Boot Prometheus 实现应用监控(基于 Actuator 和 Micrometer)环境准备示例结构启动和验证验证 Spring Boot 应用Prometheus 抓取配置(静态方式)Grafana 面板配置总结 Spring Boot Prometheus 实现应用监控&…

PowerBI企业运营分析—列互换式中国式报表分析

PowerBI企业运营分析—列互换式中国式报表分析 欢迎来到Powerbi小课堂,在竞争激烈的市场环境中,企业运营分析平台成为提升竞争力的核心工具。 该平台通过高效整合多源数据,并实时监控关键指标,能够迅速揭示业务表现的全貌&#…

BugKu Web渗透之需要管理员

启动场景,打开网页,显示如下: 一般没有上面头绪的时候,就是两步:右键查看源代码 和 扫描网站目录。 步骤一: 右键查看源代码 和 扫描网站目录。 右键查看源代码没有发现异常。 于是扫描网站目录&…

TDengine 开发指南—— UDF函数

UDF 简介 在某些应用场景中,应用逻辑需要的查询功能无法直接使用内置函数来实现,TDengine 允许编写用户自定义函数(UDF),以便解决特殊应用场景中的使用需求。UDF 在集群中注册成功后,可以像系统内置函数一…

使用vsftpd搭建FTP服务器(TLS/SSL显式加密)

安装vsftpd服务 使用vsftpd RPM安装包安装即可,如果可以访问YUM镜像源,通过dnf或者yum工具更加方便。 yum -y install vsftpd 启动vsftpd、查看服务状态 systemctl enable vsftpd systemctl start vsftpd systemctl status vsftpd 备份配置文件并进…

1.1Nodejs和浏览器中的二进制处理

Buffer 在 Node.js 中,Buffer 类用于处理二进制数据。由于 JavaScript 在浏览器环境中主要用于处理字符串和数字等类型的数据,对二进制数据的处理能力较弱,因此 Node.js 引入了 Buffer 类来弥补这一不足,特别是在处理文件系统操作…

入门AJAX——XMLHttpRequest(Post)

一、前言 在上篇文章中,我们已经介绍了 HMLHttpRequest 的GET 请求的基本用法,并基于我提供的接口练习了两个简单的例子。如果你还没有看过第一篇文章,强烈建议你在学习完上篇文章后再学习本篇文章: 🔗入门AJAX——XM…

Qt(part1)Qpushbutton,信号与槽,对象树,自定义信号与槽,lamda表达式。

1、创建Qt程序 2、命名规范及快捷键 3、Qpushbutton按钮创建 4、对象树概念 5、信号与槽 6、自定义信号与槽 7、当自定义信号和槽发生重载时 8、信号可以连接信号,信号也可以断开。 9、lamda表达式

西北某省级联通公司:3D动环模块如何实现机房“一屏统管”?

一、运营商机房监控痛点凸显 在通信行业快速发展的当下,西北某省级联通公司肩负着保障区域通信畅通的重任。然而,公司分布广泛的机房面临着诸多监控难题,尤其是偏远机房环境风险无法实时感知这一痛点,严重影响了机房的稳定运行和通…

视觉分析在人员行为属性检测中的应用

基于视觉分析的人员行为属性检测方案 一、背景与需求分析 在工业生产、建筑施工、公共安全等领域,人员行为属性的合规性检测是保障安全生产的关键环节。例如,工地工人未佩戴安全帽、厨房人员未佩戴手套、作业现场人员使用手机等行为,均可能…

电子行业AI赋能软件开发经典案例——某金融软件公司

01.案例标题 金融行业某金融软件公司通过StarShip CodeSouler达成效率突破性增长,零流程侵入验证AI代码高度可行性 02.执行摘要 某金融软件公司在核心产品研发中引入开放传神(OpenCSG)的StarShip CodeSouler AI代码生成平台,在无…

摆脱硬件依赖:SkyEye在轨道交通中的仿真应用

在城市轨道交通系统中,信号系统承担着确保列车安全、高效运行的关键任务。从排列进路、信号开放,到终点折返与接发车,几乎每一个调度动作背后都依赖于信号系统的精密控制与实时响应。作为信号系统的重要组成部分,目标控制器&#…

使用变异系数增强 CFD 收敛标准

将描述性统计整合到 CFD 中,以评估可变性和收敛性。 挑战 在工程设计中,尤其是在进行仿真时,我们经常处理描述流体、温度、应力或浓度行为的大型数据集。以有意义的方式解释这些值需要的不仅仅是原始数字;它需要对统计的理解。 统计学在工程…

物联网通信技术全景指南(2025)之如何挑选合适的物联网模块

物联网通信技术全景指南(2025)之 如何挑选合适的物联网模块 物联网通信技术全景指南(2025)一、技术代际演进与退网背景二、5G 物联网技术体系(Sub-6 GHz 核心)1. 技术分层架构2. 蜂窝技术性能矩阵3. Sub-6 …